diff --git a/DEPS b/DEPS index 363d30d8..a86196f 100644 --- a/DEPS +++ b/DEPS
@@ -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': '71c4c9aba898fe6d112646d549cb94de1b41a54f', + 'catapult_revision': 'cffd46cccece53549c5909d83acd111a371c6742', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -232,7 +232,7 @@ Var('chromium_git') + '/native_client/src/third_party/scons-2.0.1.git' + '@' + '1c1550e17fc26355d08627fbdec13d8291227067', 'src/third_party/webrtc': - Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + '3a40828f8b801ca81849298e0c2b93a08e8188a5', # commit position 16713 + Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + '0bdacd8a66daca88eafe178bcf7a36a70f5f07b8', # commit position 16733 'src/third_party/openmax_dl': Var('chromium_git') + '/external/webrtc/deps/third_party/openmax.git' + '@' + Var('openmax_dl_revision'),
diff --git a/base/logging.h b/base/logging.h index 13661a76..b1075a4 100644 --- a/base/logging.h +++ b/base/logging.h
@@ -510,9 +510,9 @@ // TODO(scottmg): Reinvestigate a short sequence that will work on both // compilers once clang supports more intrinsics. See https://crbug.com/693713. #if defined(__clang__) -#define IMMEDIATE_CRASH() \ - (__debugbreak(), \ - (void)(*reinterpret_cast<volatile unsigned char*>(0) = __COUNTER__)) +#define IMMEDIATE_CRASH() \ + (__debugbreak(), (void)(*reinterpret_cast<volatile unsigned char*>(0) = \ + static_cast<unsigned char>(__COUNTER__))) #else #define IMMEDIATE_CRASH() __debugbreak() #endif // __clang__
diff --git a/chrome/VERSION b/chrome/VERSION index 877af05..4d8a598e 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=58 MINOR=0 -BUILD=3019 +BUILD=3020 PATCH=0
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 03e4323d..1509877 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -5906,6 +5906,12 @@ <message name="IDS_FLAGS_MANUAL_PASSWORD_GENERATION_DESCRIPTION" desc="Description of the flag for manual password generation."> Allow the user to manually enforce to generate password on a password field. </message> + <message name="IDS_FLAGS_SHOW_AUTOFILL_SIGNATURES" desc="Name of the flag to show autofill signatures."> + Show autofill signatures. + </message> + <message name="IDS_FLAGS_SHOW_AUTOFILL_SIGNATURES_DESCRIPTION" desc="Description of the flag to show autofill signatures."> + Annotates web forms with Autofill signatures as HTML attributes. + </message> <message name="IDS_PASSWORD_MANAGER_ACCOUNT_CHOOSER_TITLE_MANY_ACCOUNTS" desc="The title of the account chooser dialog/infobar for more than one account."> Choose your account saved with <ph name="PASSWORD_MANAGER_BRAND">$1<ex>Google Chrome</ex></ph> to sign in </message>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 91194646..c2ae2bb 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -1085,6 +1085,9 @@ IDS_FLAGS_MANUAL_PASSWORD_GENERATION_DESCRIPTION, kOsAll, FEATURE_VALUE_TYPE( password_manager::features::kEnableManualPasswordGeneration)}, + {"enable-show-autofill-signatures", IDS_FLAGS_SHOW_AUTOFILL_SIGNATURES, + IDS_FLAGS_SHOW_AUTOFILL_SIGNATURES_DESCRIPTION, kOsAll, + SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillTypePredictions)}, {"affiliation-based-matching", IDS_FLAGS_AFFILIATION_BASED_MATCHING_NAME, IDS_FLAGS_AFFILIATION_BASED_MATCHING_DESCRIPTION, kOsAll, FEATURE_VALUE_TYPE(password_manager::features::kAffiliationBasedMatching)},
diff --git a/chrome/browser/chromeos/base/locale_util.cc b/chrome/browser/chromeos/base/locale_util.cc index 2ee1a76d..e062190 100644 --- a/chrome/browser/chromeos/base/locale_util.cc +++ b/chrome/browser/chromeos/base/locale_util.cc
@@ -51,8 +51,6 @@ data->result.requested_locale); data->result.success = !data->result.loaded_locale.empty(); - - ResourceBundle::GetSharedInstance().ReloadFonts(); } // Callback after SwitchLanguageDoReloadLocale() back in UI thread. @@ -93,6 +91,10 @@ } } } + + // The font clean up of ResourceBundle should be done on UI thread, since the + // cached fonts are thread unsafe. + ResourceBundle::GetSharedInstance().ReloadFonts(); gfx::PlatformFontLinux::ReloadDefaultFont(); if (!data->callback.is_null()) data->callback.Run(data->result);
diff --git a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc index 80d27f0..8db2cbc 100644 --- a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc +++ b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
@@ -348,6 +348,11 @@ std::unique_ptr<Params> params(Params::Create(*args_)); EXTENSION_FUNCTION_VALIDATE(params); + if (params->error == api::file_system_provider::PROVIDER_ERROR_OK) { + // It's incorrect to pass OK as an error code. + return ValidationFailure(this); + } + const base::File::Error error = ProviderErrorToFileError(params->error); return RejectRequest(RequestValue::CreateForOperationError(std::move(params)), error);
diff --git a/chrome/browser/profile_resetter/reset_report_uploader.cc b/chrome/browser/profile_resetter/reset_report_uploader.cc index 453c2c91..76cfde3 100644 --- a/chrome/browser/profile_resetter/reset_report_uploader.cc +++ b/chrome/browser/profile_resetter/reset_report_uploader.cc
@@ -12,6 +12,7 @@ #include "google_apis/google_api_keys.h" #include "net/base/escape.h" #include "net/base/load_flags.h" +#include "net/traffic_annotation/network_traffic_annotation.h" #include "net/url_request/url_fetcher.h" #include "net/url_request/url_request_context_getter.h" @@ -42,10 +43,39 @@ std::string request_data; CHECK(report.SerializeToString(&request_data)); + // Create traffic annotation tag. + net::NetworkTrafficAnnotationTag traffic_annotation = + net::DefineNetworkTrafficAnnotation("profile_resetter_upload", R"( + semantics { + sender: "Profile Resetter" + description: + "When users choose to reset their profile, they are offered the " + "choice to report to Google the settings and their values that are " + "affected by the reset. The user can inspect the values before " + "they are sent to Google and needs to consent to sending them." + trigger: + "Users reset their profile in Chrome settings and consent to " + "sending a report." + data: + "Startup URLs, homepage URL, default search engine, installed " + "extensions, Chrome shortcut on the desktop and the Windows start " + "menu, some settings. See " + "chrome/browser/profile_resetter/profile_reset_report.proto " + "for details." + destination: GOOGLE_OWNED_SERVICE + } + policy { + cookies_allowed: false + setting: "None, the user needs to actively send the data." + policy_exception_justification: + "None, considered not useful because the user needs to actively " + "send the data." + })"); + // Note fetcher will be deleted by OnURLFetchComplete. net::URLFetcher* fetcher = net::URLFetcher::Create(GetClientReportUrl(kResetReportUrl), - net::URLFetcher::POST, this) + net::URLFetcher::POST, this, traffic_annotation) .release(); fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES |
diff --git a/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc b/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc index 0e20516..43d7fefa 100644 --- a/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc +++ b/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc
@@ -82,8 +82,10 @@ ASSERT_TRUE(RunExtensionTest("input_ime_nonchromeos")) << message_; // Test the input.ime.commitText API. - ASSERT_EQ(1, client->insert_text_count()); - EXPECT_EQ(base::UTF8ToUTF16("test_commit_text"), client->last_insert_text()); + const std::vector<base::string16>& insert_text_history = + client->insert_text_history(); + ASSERT_EQ(1UL, insert_text_history.size()); + EXPECT_EQ(base::UTF8ToUTF16("test_commit_text"), insert_text_history[0]); // Test the input.ime.setComposition API. ui::CompositionText composition; @@ -92,8 +94,12 @@ ui::CompositionUnderline(0, composition.text.length(), SK_ColorBLACK, false /* thick */, SK_ColorTRANSPARENT)); composition.selection = gfx::Range(2, 2); - ASSERT_EQ(1, client->set_composition_count()); - ASSERT_EQ(composition, client->last_composition()); + const std::vector<ui::CompositionText>& composition_history = + client->composition_history(); + ASSERT_EQ(2UL, composition_history.size()); + EXPECT_EQ(base::UTF8ToUTF16("test_set_composition"), + composition_history[0].text); + EXPECT_EQ(base::UTF8ToUTF16(""), composition_history[1].text); // Tests input.ime.onBlur API should get event when focusing to another // text input client.
diff --git a/chrome/browser/webshare/share_service_impl.cc b/chrome/browser/webshare/share_service_impl.cc index 608707fc..2ae7404a 100644 --- a/chrome/browser/webshare/share_service_impl.cc +++ b/chrome/browser/webshare/share_service_impl.cc
@@ -237,11 +237,13 @@ chosen_target.data(), chosen_target.size() - GURL(chosen_target).ExtractFileName().size()); const GURL target(url_base.as_string() + url_template_filled); - if (!target.is_valid()) { - callback.Run(base::Optional<std::string>( - "Error: url of share target is not a valid url.")); - return; - } + // User should not be able to cause an invalid target URL. Possibilities are: + // - The base URL: can't be invalid since it's derived from the manifest URL. + // - The template: can only be invalid if it contains a NUL character or + // invalid UTF-8 sequence (which it can't have). + // - The replaced pieces: these are escaped. + // If somehow we slip through this DCHECK, it will just open about:blank. + DCHECK(target.is_valid()); OpenTargetURL(target); callback.Run(base::nullopt);
diff --git a/chrome/browser/webshare/share_service_impl_unittest.cc b/chrome/browser/webshare/share_service_impl_unittest.cc index f00bb8c..82bf6b8 100644 --- a/chrome/browser/webshare/share_service_impl_unittest.cc +++ b/chrome/browser/webshare/share_service_impl_unittest.cc
@@ -255,6 +255,39 @@ EXPECT_TRUE(share_service_helper()->GetLastUsedTargetURL().empty()); } +// Tests a target with a broken URL template (ReplacePlaceholders failure). +TEST_F(ShareServiceImplUnittest, ShareBrokenUrl) { + // Invalid placeholders. Detailed tests for broken templates are in the + // ReplacePlaceholders test; this just tests the share response. + constexpr char kBrokenUrlTemplate[] = "share?title={title"; + share_service_helper()->AddShareTargetToPrefs(kManifestUrlHigh, kTargetName, + kBrokenUrlTemplate); + + // Expect an error message in response. + base::Callback<void(const base::Optional<std::string>&)> callback = + base::Bind(&DidShare, + base::Optional<std::string>( + "Error: unable to replace placeholders in url template")); + + base::RunLoop run_loop; + share_service_helper()->set_run_loop(&run_loop); + + const GURL url(kUrlSpec); + share_service()->Share(kTitle, kText, url, callback); + + run_loop.Run(); + + const std::vector<std::pair<base::string16, GURL>> kExpectedTargets{ + make_pair(base::UTF8ToUTF16(kTargetName), GURL(kManifestUrlHigh))}; + EXPECT_EQ(kExpectedTargets, share_service_helper()->GetTargetsInPicker()); + + // Pick example-high.com. + share_service_helper()->picker_callback().Run( + base::Optional<std::string>(kManifestUrlHigh)); + + EXPECT_TRUE(share_service_helper()->GetLastUsedTargetURL().empty()); +} + // Test to check that only targets with enough engagement were in picker. TEST_F(ShareServiceImplUnittest, ShareWithSomeInsufficientlyEngagedTargets) { share_service_helper()->AddShareTargetToPrefs(kManifestUrlMin, kTargetName,
diff --git a/chrome/common/extensions/api/file_system_provider.idl b/chrome/common/extensions/api/file_system_provider.idl index 9f6b058..83f539f3 100644 --- a/chrome/common/extensions/api/file_system_provider.idl +++ b/chrome/common/extensions/api/file_system_provider.idl
@@ -518,6 +518,7 @@ [nocompile] callback ProviderSuccessCallback = void(); // Callback to be called by the providing extension in case of an error. + // Any error code is allowed except <code>OK</code>. [nocompile] callback ProviderErrorCallback = void(ProviderError error); // Success callback for the $(ref:onGetMetadataRequested) event.
diff --git a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js index 91a2718..c4bdfa0 100644 --- a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js +++ b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
@@ -120,6 +120,20 @@ } /** + * Verifies if the passed error code is valid when used to indicate + * a failure. + * @param {!string} error + * @return {boolean} True if valid, false if invalid. + */ +function verifyErrorForFailure(error) { + if (error === 'OK') { + console.error('Error code cannot be OK in case of failures.'); + return false; + } + return true; +} + +/** * Annotates an entry metadata by serializing its modifiedTime value. * @param {EntryMetadata} metadata Input metadata. * @return {EntryMetadata} metadata Annotated metadata, which can be passed @@ -156,6 +170,8 @@ options.fileSystemId, options.requestId, Date.now() - executionStart); }; var onErrorCallback = function(error) { + if (!verifyErrorForFailure(error)) + return; fileSystemProviderInternal.operationRequestedError( options.fileSystemId, options.requestId, error, Date.now() - executionStart); @@ -188,6 +204,8 @@ }; var onErrorCallback = function(error) { + if (!verifyErrorForFailure(error)) + return; fileSystemProviderInternal.operationRequestedError( options.fileSystemId, options.requestId, error, Date.now() - executionStart); @@ -210,6 +228,8 @@ }; var onErrorCallback = function(error) { + if (!verifyErrorForFailure(error)) + return; fileSystemProviderInternal.operationRequestedError( options.fileSystemId, options.requestId, error, Date.now() - executionStart); @@ -246,6 +266,8 @@ }; var onErrorCallback = function(error) { + if (!verifyErrorForFailure(error)) + return; fileSystemProviderInternal.operationRequestedError( options.fileSystemId, options.requestId, error, Date.now() - executionStart); @@ -272,6 +294,8 @@ Date.now() - executionStart); }; var onErrorCallback = function(error) { + if (!verifyErrorForFailure(error)) + return; fileSystemProviderInternal.operationRequestedError( options.fileSystemId, options.requestId, error, Date.now() - executionStart); @@ -339,10 +363,16 @@ 'fileSystemProvider.onMountRequested', function(args, dispatch) { var onSuccessCallback = function() { - // TODO(mtomasz): To be implemented. + // chrome.fileManagerPrivate.addProvidedFileSystem doesn't accept + // any callbacks, so ignore the callback calls here. + // The callbacks exist for consistency with other on*Requested events. }; var onErrorCallback = function(error) { - // TODO(mtomasz): To be implemented. + if (!verifyErrorForFailure(error)) + return; + // chrome.fileManagerPrivate.addProvidedFileSystem doesn't accept + // any callbacks, so ignore the callback calls here. + // The callbacks exist for consistency with other on*Requested events. } dispatch([onSuccessCallback, onErrorCallback]); });
diff --git a/chrome/test/data/extensions/api_test/input_ime_nonchromeos/background.js b/chrome/test/data/extensions/api_test/input_ime_nonchromeos/background.js index 6f0b371a..18a89150 100644 --- a/chrome/test/data/extensions/api_test/input_ime_nonchromeos/background.js +++ b/chrome/test/data/extensions/api_test/input_ime_nonchromeos/background.js
@@ -83,6 +83,19 @@ chrome.test.succeed(); }); }, + function testEmptyComposition() { + chrome.input.ime.setComposition({ + contextID: 1, + text: '', + cursor: 0 + }, function() { + if(chrome.runtime.lastError) { + chrome.test.fail(); + return; + } + chrome.test.succeed(); + }); + }, // Test input.ime.sendKeyEvents API. function testSendKeyEvents() { // Sends a normal character key.
diff --git a/cloud_print/virtual_driver/win/install/inf/gcp_driver.inf b/cloud_print/virtual_driver/win/install/inf/gcp_driver.inf index 9a2fed5..ad57e0a 100644 --- a/cloud_print/virtual_driver/win/install/inf/gcp_driver.inf +++ b/cloud_print/virtual_driver/win/install/inf/gcp_driver.inf Binary files differ
diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc index e134d84..9677f8c18 100644 --- a/components/autofill/content/renderer/form_autofill_util.cc +++ b/components/autofill/content/renderer/form_autofill_util.cc
@@ -102,13 +102,6 @@ return node.isElementNode() && node.toConst<WebElement>().hasHTMLTagName(tag); } -bool IsAutofillableElement(const WebFormControlElement& element) { - const WebInputElement* input_element = toWebInputElement(&element); - return IsAutofillableInputElement(input_element) || - IsSelectElement(element) || - IsTextAreaElement(element); -} - bool IsElementInControlElementSet( const WebElement& element, const std::vector<WebFormControlElement>& control_elements) { @@ -1319,6 +1312,12 @@ IsCheckableElement(element); } +bool IsAutofillableElement(const WebFormControlElement& element) { + const WebInputElement* input_element = toWebInputElement(&element); + return IsAutofillableInputElement(input_element) || + IsSelectElement(element) || IsTextAreaElement(element); +} + const base::string16 GetFormIdentifier(const WebFormElement& form) { base::string16 identifier = form.name().utf16(); CR_DEFINE_STATIC_LOCAL(WebString, kId, ("id"));
diff --git a/components/autofill/content/renderer/form_autofill_util.h b/components/autofill/content/renderer/form_autofill_util.h index d268c7c..ccf2915 100644 --- a/components/autofill/content/renderer/form_autofill_util.h +++ b/components/autofill/content/renderer/form_autofill_util.h
@@ -127,6 +127,10 @@ // autofilled. {Text, Radiobutton, Checkbox}. bool IsAutofillableInputElement(const blink::WebInputElement* element); +// Returns true if |element| is one of the element types that can be autofilled. +// {Text, Radiobutton, Checkbox, Select, TextArea}. +bool IsAutofillableElement(const blink::WebFormControlElement& element); + // True if this node takes up space in the layout, ie. this node or a descendant // has a non-empty bounding bounding client rect. //
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc index aee3f94..5c2ade8 100644 --- a/components/autofill/content/renderer/password_autofill_agent.cc +++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -12,11 +12,13 @@ #include <vector> #include "base/bind.h" +#include "base/command_line.h" #include "base/i18n/case_conversion.h" #include "base/memory/linked_ptr.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" #include "base/metrics/histogram_macros.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread_task_runner_handle.h" @@ -25,6 +27,7 @@ #include "components/autofill/content/renderer/password_form_conversion_utils.h" #include "components/autofill/content/renderer/renderer_save_password_progress_logger.h" #include "components/autofill/core/common/autofill_constants.h" +#include "components/autofill/core/common/autofill_switches.h" #include "components/autofill/core/common/autofill_util.h" #include "components/autofill/core/common/form_field_data.h" #include "components/autofill/core/common/password_form_fill_data.h" @@ -60,6 +63,9 @@ const char kDummyUsernameField[] = "anonymous_username"; const char kDummyPasswordField[] = "anonymous_password"; +const char kDebugAttributeForFormSignature[] = "form_signature"; +const char kDebugAttributeForFieldSignature[] = "field_signature"; + // Maps element names to the actual elements to simplify form filling. typedef std::map<base::string16, blink::WebInputElement> FormInputElementMap; @@ -562,6 +568,37 @@ field_value_and_properties_map, registration_callback, logger); } +// Annotate |forms| with form and field signatures as HTML attributes. +void AnnotateFormsWithSignatures( + blink::WebVector<blink::WebFormElement> forms) { + for (blink::WebFormElement form : forms) { + std::unique_ptr<PasswordForm> password_form( + CreatePasswordFormFromWebForm(form, nullptr, nullptr)); + if (password_form) { + form.setAttribute( + blink::WebString::fromASCII(kDebugAttributeForFormSignature), + blink::WebString::fromUTF8(base::Uint64ToString( + CalculateFormSignature(password_form->form_data)))); + + blink::WebVector<blink::WebFormControlElement> control_elements = + form_util::ExtractAutofillableElementsInForm(form); + DCHECK(control_elements.size() == password_form->form_data.fields.size()); + for (size_t i = 0; i < control_elements.size(); ++i) { + blink::WebFormControlElement& control_element = control_elements[i]; + if (!form_util::IsAutofillableElement(control_element)) + continue; + + const FormFieldData& field = password_form->form_data.fields[i]; + DCHECK(field.name == control_element.nameForAutofill().utf16()); + control_element.setAttribute( + blink::WebString::fromASCII(kDebugAttributeForFieldSignature), + blink::WebString::fromUTF8( + base::Uint64ToString(CalculateFieldSignatureForField(field)))); + } + } + } +} + } // namespace //////////////////////////////////////////////////////////////////////////////// @@ -1016,6 +1053,10 @@ blink::WebVector<blink::WebFormElement> forms; frame->document().forms(forms); + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kShowAutofillSignatures)) { + AnnotateFormsWithSignatures(forms); + } if (logger) logger->LogNumber(Logger::STRING_NUMBER_OF_ALL_FORMS, forms.size());
diff --git a/components/autofill/core/common/autofill_switches.cc b/components/autofill/core/common/autofill_switches.cc index 8aadec54..217408a 100644 --- a/components/autofill/core/common/autofill_switches.cc +++ b/components/autofill/core/common/autofill_switches.cc
@@ -56,6 +56,9 @@ // Annotates forms with Autofill field type predictions. const char kShowAutofillTypePredictions[] = "show-autofill-type-predictions"; +// Annotates forms and fields with Autofill signatures. +const char kShowAutofillSignatures[] = "show-autofill-signatures"; + // Use the sandbox Online Wallet service URL (for developer testing). const char kWalletServiceUseSandbox[] = "wallet-service-use-sandbox";
diff --git a/components/autofill/core/common/autofill_switches.h b/components/autofill/core/common/autofill_switches.h index e423cca..b1c7d90 100644 --- a/components/autofill/core/common/autofill_switches.h +++ b/components/autofill/core/common/autofill_switches.h
@@ -24,6 +24,7 @@ extern const char kIgnoreAutocompleteOffForAutofill[]; extern const char kLocalHeuristicsOnlyForPasswordGeneration[]; extern const char kShowAutofillTypePredictions[]; +extern const char kShowAutofillSignatures[]; extern const char kWalletServiceUseSandbox[]; #if defined(OS_ANDROID)
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py index 02d3a3f..05a6ce8 100644 --- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py +++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -677,6 +677,9 @@ ['linux', 'nvidia'], bug=618447) self.Fail('conformance/glsl/bugs/unary-minus-operator-float-bug.html', ['linux', 'nvidia'], bug=672380) + self.Fail('conformance2/textures/canvas_sub_rectangle/' + + 'tex-2d-r11f_g11f_b10f-rgb-half_float.html', + ['linux', 'nvidia'], bug=694359) self.Fail('conformance2/textures/image_bitmap_from_canvas/' + 'tex-3d-srgb8_alpha8-rgba-unsigned_byte.html', ['linux', 'nvidia'], bug=679677) @@ -690,6 +693,9 @@ self.Fail('conformance2/textures/image_bitmap_from_blob/' + 'tex-2d-rgb565-rgb-unsigned_byte.html', ['linux', 'nvidia'], bug=684399) + self.Flaky('conformance2/textures/image_bitmap_from_image_data/' + + 'tex-2d-srgb8-rgb-unsigned_byte.html', + ['linux', 'nvidia'], bug=694354) # Linux Intel self.Fail('conformance2/extensions/ext-color-buffer-float.html',
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm index 71ffec5..242f0e64 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm +++ b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm
@@ -56,6 +56,9 @@ suggestion.title = base::SysUTF16ToNSString(contentSuggestion.title()); suggestion.text = base::SysUTF16ToNSString(contentSuggestion.snippet_text()); suggestion.url = contentSuggestion.url(); + suggestion.publisher = + base::SysUTF16ToNSString(contentSuggestion.publisher_name()); + suggestion.publishDate = contentSuggestion.publish_date(); return suggestion; }
diff --git a/ios/chrome/browser/native_app_launcher/native_app_navigation_util_unittest.mm b/ios/chrome/browser/native_app_launcher/native_app_navigation_util_unittest.mm index 2dfd71b..d02e65fd 100644 --- a/ios/chrome/browser/native_app_launcher/native_app_navigation_util_unittest.mm +++ b/ios/chrome/browser/native_app_launcher/native_app_navigation_util_unittest.mm
@@ -37,10 +37,9 @@ void AddItem(const std::string& url_spec, ui::PageTransition transition) { CRWSessionController* session_controller = web_state_->GetNavigationManagerImpl().GetSessionController(); - [session_controller addPendingItem:GURL(url_spec) - referrer:web::Referrer() - transition:transition - rendererInitiated:NO]; + web_state_->GetNavigationManagerImpl().AddPendingItem( + GURL(url_spec), web::Referrer(), transition, + web::NavigationInitiationType::USER_INITIATED); [session_controller commitPendingItem]; }
diff --git a/ios/chrome/browser/tabs/tab.mm b/ios/chrome/browser/tabs/tab.mm index 8e017f53..0e52721 100644 --- a/ios/chrome/browser/tabs/tab.mm +++ b/ios/chrome/browser/tabs/tab.mm
@@ -1533,8 +1533,7 @@ - (void)enableDesktopUserAgent { DCHECK_EQ(self.useDesktopUserAgent, NO); DCHECK([self navigationManager]); - [[self navigationManager]->GetSessionController() - useDesktopUserAgentForNextPendingItem]; + [self navigationManager]->OverrideDesktopUserAgentForNextPendingItem(); } - (void)reloadForDesktopUserAgent {
diff --git a/ios/chrome/browser/tabs/tab_unittest.mm b/ios/chrome/browser/tabs/tab_unittest.mm index d863fa3..1136415 100644 --- a/ios/chrome/browser/tabs/tab_unittest.mm +++ b/ios/chrome/browser/tabs/tab_unittest.mm
@@ -228,22 +228,25 @@ void BrowseTo(const GURL& userUrl, const GURL& redirectUrl, NSString* title) { DCHECK_EQ(tab_.get().webState, web_state_impl_); - web::Referrer empty_referrer; + [tab_ webWillAddPendingURL:userUrl transition:ui::PAGE_TRANSITION_TYPED]; web_state_impl_->OnProvisionalNavigationStarted(userUrl); [tab_ webWillAddPendingURL:redirectUrl transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT]; - [[tab_ navigationManager]->GetSessionController() - addPendingItem:redirectUrl - referrer:empty_referrer - transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT - rendererInitiated:YES]; + + web::Referrer empty_referrer; + [tab_ navigationManager]->AddPendingItem( + redirectUrl, empty_referrer, ui::PAGE_TRANSITION_CLIENT_REDIRECT, + web::NavigationInitiationType::RENDERER_INITIATED); + web_state_impl_->OnProvisionalNavigationStarted(redirectUrl); [[tab_ navigationManager]->GetSessionController() commitPendingItem]; [[tab_ webController] webStateImpl]->OnNavigationCommitted(redirectUrl); [tab_ webDidStartLoadingURL:redirectUrl shouldUpdateHistory:YES]; + base::string16 new_title = base::SysNSStringToUTF16(title); [tab_ navigationManager]->GetLastCommittedItem()->SetTitle(new_title); + [tab_ webController:mock_web_controller_ titleDidChange:title]; [[[(id)mock_web_controller_ expect] andReturnValue:OCMOCK_VALUE(kPageLoaded)] loadPhase];
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestion.h b/ios/chrome/browser/ui/content_suggestions/content_suggestion.h index 518958eb..7a13b0a 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestion.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestion.h
@@ -9,6 +9,10 @@ #include "url/gurl.h" +namespace base { +class Time; +} + @class ContentSuggestionsSectionInformation; // Enum defining the type of a ContentSuggestions. @@ -28,6 +32,10 @@ @property(nonatomic, strong, nullable) UIImage* image; // URL associated with the suggestion. @property(nonatomic, assign) GURL url; +// The name of the publisher. +@property(nonatomic, copy, nullable) NSString* publisher; +// The date of publication. +@property(nonatomic, assign) base::Time publishDate; // Section information in which this suggestion should be. @property(nonatomic, strong, nullable)
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestion.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestion.mm index b9877af..0df2426 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestion.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestion.mm
@@ -4,6 +4,8 @@ #import "ios/chrome/browser/ui/content_suggestions/content_suggestion.h" +#include "base/time/time.h" + #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif @@ -14,6 +16,8 @@ @synthesize image = _image; @synthesize text = _text; @synthesize url = _url; +@synthesize publisher = _publisher; +@synthesize publishDate = _publishDate; @synthesize section = _section; @synthesize type = _type;
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.h index 87422a9..39ac7dd 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.h
@@ -9,6 +9,10 @@ #import "ios/third_party/material_components_ios/src/components/CollectionCells/src/MaterialCollectionCells.h" #include "url/gurl.h" +namespace base { +class Time; +} + // Item for an article in the suggestions. @interface ContentSuggestionsArticleItem : CollectionViewItem @@ -25,6 +29,8 @@ @property(nonatomic, copy, readonly) NSString* title; @property(nonatomic, strong) UIImage* image; @property(nonatomic, readonly, assign) GURL articleURL; +@property(nonatomic, copy) NSString* publisher; +@property(nonatomic, assign) base::Time publishDate; @end @@ -35,6 +41,8 @@ @property(nonatomic, readonly, strong) UILabel* subtitleLabel; @property(nonatomic, readonly, strong) UIImageView* imageView; +- (void)setPublisherName:(NSString*)publisherName date:(base::Time)publishDate; + @end #endif // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_ARTICLE_ITEM_H_
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm index 7b956b32..8bfb2525 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_article_item.h" +#include "base/time/time.h" #import "ios/chrome/browser/ui/uikit_ui_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -29,6 +30,8 @@ @synthesize subtitle = _subtitle; @synthesize image = _image; @synthesize articleURL = _articleURL; +@synthesize publisher = _publisher; +@synthesize publishDate = _publishDate; - (instancetype)initWithType:(NSInteger)type title:(NSString*)title @@ -51,17 +54,25 @@ cell.titleLabel.text = _title; cell.subtitleLabel.text = _subtitle; cell.imageView.image = _image; + [cell setPublisherName:self.publisher date:self.publishDate]; } @end #pragma mark - ContentSuggestionsArticleCell +@interface ContentSuggestionsArticleCell () + +@property(nonatomic, strong) UILabel* publisherLabel; + +@end + @implementation ContentSuggestionsArticleCell @synthesize titleLabel = _titleLabel; @synthesize subtitleLabel = _subtitleLabel; @synthesize imageView = _imageView; +@synthesize publisherLabel = _publisherLabel; - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; @@ -69,45 +80,67 @@ _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _subtitleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _imageView = [[UIImageView alloc] initWithFrame:CGRectZero]; + _publisherLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _subtitleLabel.numberOfLines = 0; + [_subtitleLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh + forAxis:UILayoutConstraintAxisVertical]; + [_titleLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh + forAxis:UILayoutConstraintAxisVertical]; _imageView.contentMode = UIViewContentModeScaleAspectFit; _imageView.translatesAutoresizingMaskIntoConstraints = NO; _titleLabel.translatesAutoresizingMaskIntoConstraints = NO; _subtitleLabel.translatesAutoresizingMaskIntoConstraints = NO; + _publisherLabel.translatesAutoresizingMaskIntoConstraints = NO; [self.contentView addSubview:_imageView]; [self.contentView addSubview:_titleLabel]; [self.contentView addSubview:_subtitleLabel]; + [self.contentView addSubview:_publisherLabel]; [NSLayoutConstraint activateConstraints:@[ - [self.contentView.bottomAnchor + [_imageView.widthAnchor constraintLessThanOrEqualToConstant:kImageSize], + [_imageView.heightAnchor constraintLessThanOrEqualToConstant:kImageSize], + [_publisherLabel.topAnchor constraintGreaterThanOrEqualToAnchor:_imageView.bottomAnchor constant:kStandardSpacing], - [self.contentView.bottomAnchor + [_publisherLabel.topAnchor constraintGreaterThanOrEqualToAnchor:_subtitleLabel.bottomAnchor constant:kStandardSpacing], - [_imageView.widthAnchor constraintLessThanOrEqualToConstant:kImageSize], - [_imageView.heightAnchor constraintLessThanOrEqualToConstant:kImageSize] ]]; ApplyVisualConstraints( @[ @"H:|-[title]-[image]-|", @"H:|-[text]-[image]", - @"V:|-[title]-[text]-|", + @"V:|-[title]-[text]", @"V:|-[image]", + @"H:|-[publish]-|", + @"V:[publish]-|", ], @{ @"image" : _imageView, @"title" : _titleLabel, - @"text" : _subtitleLabel + @"text" : _subtitleLabel, + @"publish" : _publisherLabel, }); } return self; } +- (void)setPublisherName:(NSString*)publisherName date:(base::Time)publishDate { + NSDate* date = [NSDate dateWithTimeIntervalSince1970:publishDate.ToDoubleT()]; + NSString* dateString = + [NSDateFormatter localizedStringFromDate:date + dateStyle:NSDateFormatterMediumStyle + timeStyle:NSDateFormatterNoStyle]; + + // TODO(crbug.com/694423): Make it RTL friendly. + self.publisherLabel.text = + [NSString stringWithFormat:@"%@ - %@.", publisherName, dateString]; +} + #pragma mark - UIView // Implements -layoutSubviews as per instructions in documentation for @@ -118,7 +151,8 @@ // Adjust the text label preferredMaxLayoutWidth when the parent's width // changes, for instance on screen rotation. CGFloat parentWidth = CGRectGetWidth(self.contentView.bounds); - self.subtitleLabel.preferredMaxLayoutWidth = parentWidth - kImageSize - 3 * 8; + self.subtitleLabel.preferredMaxLayoutWidth = + parentWidth - self.imageView.bounds.size.width - 3 * 8; // Re-layout with the new preferred width to allow the label to adjust its // height.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm index 6e2c9a3..84b0761 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm
@@ -6,6 +6,7 @@ #include "base/logging.h" #include "base/mac/foundation_util.h" +#include "base/time/time.h" #import "ios/chrome/browser/ui/collection_view/collection_view_controller.h" #import "ios/chrome/browser/ui/collection_view/collection_view_model.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestion.h" @@ -192,6 +193,8 @@ subtitle:suggestion.text image:suggestion.image url:suggestion.url]; + articleItem.publisher = suggestion.publisher; + articleItem.publishDate = suggestion.publishDate; [model addItem:articleItem toSectionWithIdentifier:sectionIdentifier]; }
diff --git a/ios/web/navigation/crw_session_controller.h b/ios/web/navigation/crw_session_controller.h index d2ef342..d5cfeb5 100644 --- a/ios/web/navigation/crw_session_controller.h +++ b/ios/web/navigation/crw_session_controller.h
@@ -19,6 +19,7 @@ class BrowserState; class NavigationItemImpl; class NavigationManagerImpl; +enum class NavigationInitiationType; struct Referrer; } @@ -96,13 +97,13 @@ - (void)setBrowserState:(web::BrowserState*)browserState; // Add a new item with the given url, referrer, and navigation type, making it -// the current item. If |url| is the same as the current item's url, this -// does nothing. |referrer| may be nil if there isn't one. The item starts -// out as pending, and will be lost unless |-commitPendingItem| is called. +// the current item. If pending item is the same as current item, this does +// nothing. |referrer| may be nil if there isn't one. The item starts out as +// pending, and will be lost unless |-commitPendingItem| is called. - (void)addPendingItem:(const GURL&)url referrer:(const web::Referrer&)referrer transition:(ui::PageTransition)type - rendererInitiated:(BOOL)rendererInitiated; + initiationType:(web::NavigationInitiationType)initiationType; // Updates the URL of the yet to be committed pending item. Useful for page // redirects. Does nothing if there is no pending item. @@ -152,10 +153,6 @@ - (BOOL)isSameDocumentNavigationBetweenItem:(web::NavigationItem*)firstItem andItem:(web::NavigationItem*)secondItem; -// Set |useDesktopUserAgentForNextPendingItem_| to YES if there is no pending -// entry, otherwise set |useDesktopUserAgent| in the pending entry. -- (void)useDesktopUserAgentForNextPendingItem; - // Returns the index of |item| in |items|. - (NSInteger)indexOfItem:(const web::NavigationItem*)item;
diff --git a/ios/web/navigation/crw_session_controller.mm b/ios/web/navigation/crw_session_controller.mm index 2afdc55..d03bf94 100644 --- a/ios/web/navigation/crw_session_controller.mm +++ b/ios/web/navigation/crw_session_controller.mm
@@ -111,8 +111,8 @@ - (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url referrer:(const web::Referrer&)referrer transition:(ui::PageTransition)transition - useDesktopUserAgent:(BOOL)useDesktopUserAgent - rendererInitiated:(BOOL)rendererInitiated; + initiationType: + (web::NavigationInitiationType)initiationType; // Returns YES if the PageTransition for the underlying navigationItem at // |index| in |entries_| has ui::PAGE_TRANSITION_IS_REDIRECT_MASK. - (BOOL)isRedirectTransitionForItemAtIndex:(NSInteger)index; @@ -312,12 +312,16 @@ // Only return the pending_entry for new (non-history), browser-initiated // navigations in order to prevent URL spoof attacks. web::NavigationItemImpl* pendingItem = [_pendingEntry navigationItemImpl]; - bool safeToShowPending = pendingItem && - !pendingItem->is_renderer_initiated() && - _pendingItemIndex == -1; - if (safeToShowPending) { - return _pendingEntry.get(); + + if (pendingItem) { + bool isUserInitiated = pendingItem->NavigationInitiationType() == + web::NavigationInitiationType::USER_INITIATED; + bool safeToShowPending = isUserInitiated && _pendingItemIndex == -1; + + if (safeToShowPending) + return _pendingEntry.get(); } + return [self lastCommittedEntry]; } @@ -345,7 +349,7 @@ - (void)addPendingItem:(const GURL&)url referrer:(const web::Referrer&)ref transition:(ui::PageTransition)trans - rendererInitiated:(BOOL)rendererInitiated { + initiationType:(web::NavigationInitiationType)initiationType { [self discardTransientItem]; _pendingItemIndex = -1; @@ -361,10 +365,17 @@ CRWSessionEntry* currentEntry = self.currentEntry; if (currentEntry) { web::NavigationItem* item = [currentEntry navigationItem]; - if (item->GetURL() == url && - (!PageTransitionCoreTypeIs(trans, ui::PAGE_TRANSITION_FORM_SUBMIT) || - PageTransitionCoreTypeIs(item->GetTransitionType(), - ui::PAGE_TRANSITION_FORM_SUBMIT))) { + + BOOL hasSameURL = item->GetURL() == url; + BOOL isPendingTransitionFormSubmit = + PageTransitionCoreTypeIs(trans, ui::PAGE_TRANSITION_FORM_SUBMIT); + BOOL isCurrentTransitionFormSubmit = PageTransitionCoreTypeIs( + item->GetTransitionType(), ui::PAGE_TRANSITION_FORM_SUBMIT); + BOOL shouldCreatePendingItem = + !hasSameURL || + (isPendingTransitionFormSubmit && !isCurrentTransitionFormSubmit); + + if (!shouldCreatePendingItem) { // Send the notification anyway, to preserve old behavior. It's unknown // whether anything currently relies on this, but since both this whole // hack and the content facade will both be going away, it's not worth @@ -376,16 +387,10 @@ } } - BOOL useDesktopUserAgent = - _useDesktopUserAgentForNextPendingItem || - (self.currentEntry.navigationItem && - self.currentEntry.navigationItem->IsOverridingUserAgent()); - _useDesktopUserAgentForNextPendingItem = NO; _pendingEntry.reset([self sessionEntryWithURL:url referrer:ref transition:trans - useDesktopUserAgent:useDesktopUserAgent - rendererInitiated:rendererInitiated]); + initiationType:initiationType]); if (_navigationManager && _navigationManager->GetFacadeDelegate()) { _navigationManager->GetFacadeDelegate()->OnNavigationItemPending(); @@ -478,8 +483,7 @@ sessionEntryWithURL:URL referrer:web::Referrer() transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT - useDesktopUserAgent:NO - rendererInitiated:NO]); + initiationType:web::NavigationInitiationType::USER_INITIATED]); web::NavigationItem* navigationItem = [_transientEntry navigationItem]; DCHECK(navigationItem); @@ -492,19 +496,19 @@ transition:(ui::PageTransition)transition { DCHECK(![self pendingEntry]); DCHECK([self currentEntry]); - web::NavigationItem* item = [self currentEntry].navigationItem; - CHECK( - web::history_state_util::IsHistoryStateChangeValid(item->GetURL(), URL)); - web::Referrer referrer(item->GetURL(), web::ReferrerPolicyDefault); - bool overrideUserAgent = - self.currentEntry.navigationItem->IsOverridingUserAgent(); + web::NavigationItem* currentItem = [self currentEntry].navigationItem; + CHECK(web::history_state_util::IsHistoryStateChangeValid( + currentItem->GetURL(), URL)); + web::Referrer referrer(currentItem->GetURL(), web::ReferrerPolicyDefault); + base::scoped_nsobject<CRWSessionEntry> pushedEntry([self sessionEntryWithURL:URL referrer:referrer transition:transition - useDesktopUserAgent:overrideUserAgent - rendererInitiated:NO]); + initiationType:web::NavigationInitiationType::USER_INITIATED]); + web::NavigationItemImpl* pushedItem = [pushedEntry navigationItemImpl]; + pushedItem->SetIsOverridingUserAgent(currentItem->IsOverridingUserAgent()); pushedItem->SetSerializedStateObject(stateObject); pushedItem->SetIsCreatedFromPushState(true); web::SSLStatus& sslStatus = [self currentEntry].navigationItem->GetSSL(); @@ -673,13 +677,6 @@ return [_entries objectAtIndex:index]; } -- (void)useDesktopUserAgentForNextPendingItem { - if (_pendingEntry) - [_pendingEntry navigationItem]->SetIsOverridingUserAgent(true); - else - _useDesktopUserAgentForNextPendingItem = YES; -} - - (NSInteger)indexOfItem:(const web::NavigationItem*)item { web::NavigationItemList items = self.items; for (NSInteger i = 0; i < static_cast<NSInteger>(items.size()); ++i) { @@ -695,8 +692,8 @@ - (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url referrer:(const web::Referrer&)referrer transition:(ui::PageTransition)transition - useDesktopUserAgent:(BOOL)useDesktopUserAgent - rendererInitiated:(BOOL)rendererInitiated { + initiationType: + (web::NavigationInitiationType)initiationType { GURL loaded_url(url); BOOL urlWasRewritten = NO; if (_navigationManager) { @@ -711,13 +708,13 @@ web::BrowserURLRewriter::GetInstance()->RewriteURLIfNecessary( &loaded_url, _browserState); } + std::unique_ptr<web::NavigationItemImpl> item(new web::NavigationItemImpl()); item->SetOriginalRequestURL(loaded_url); item->SetURL(loaded_url); item->SetReferrer(referrer); item->SetTransitionType(transition); - item->SetIsOverridingUserAgent(useDesktopUserAgent); - item->set_is_renderer_initiated(rendererInitiated); + item->SetNavigationInitiationType(initiationType); return [[CRWSessionEntry alloc] initWithNavigationItem:std::move(item)]; }
diff --git a/ios/web/navigation/crw_session_controller_unittest.mm b/ios/web/navigation/crw_session_controller_unittest.mm index 40b2c18..5e9057f 100644 --- a/ios/web/navigation/crw_session_controller_unittest.mm +++ b/ios/web/navigation/crw_session_controller_unittest.mm
@@ -15,6 +15,7 @@ #import "ios/web/navigation/crw_session_controller+private_constructors.h" #import "ios/web/navigation/crw_session_entry.h" #import "ios/web/navigation/navigation_item_impl.h" +#import "ios/web/navigation/navigation_manager_impl.h" #include "ios/web/public/referrer.h" #include "ios/web/public/test/fakes/test_browser_state.h" #include "ios/web/public/test/test_web_thread_bundle.h" @@ -73,10 +74,11 @@ // Tests session controller state after setting a pending index. TEST_F(CRWSessionControllerTest, SetPendingIndex) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); @@ -87,10 +89,11 @@ } TEST_F(CRWSessionControllerTest, addPendingItem) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; EXPECT_EQ(0U, [[session_controller_ entries] count]); EXPECT_EQ( @@ -99,16 +102,18 @@ } TEST_F(CRWSessionControllerTest, addPendingItemWithCommittedEntries) { - [session_controller_ addPendingItem:GURL("http://www.committed.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.committed.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; EXPECT_EQ(1U, [[session_controller_ entries] count]); EXPECT_EQ( @@ -121,15 +126,17 @@ // Tests that adding a pending entry resets pending entry index. TEST_F(CRWSessionControllerTest, addPendingItemWithExisingPendingEntryIndex) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; // Set 0 as pending entry index. @@ -139,25 +146,27 @@ EXPECT_EQ(0, [session_controller_ pendingItemIndex]); // Add a pending entry, which should drop pending navigation index. - [session_controller_ addPendingItem:GURL("http://www.example.com/1") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/1") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; EXPECT_EQ(GURL("http://www.example.com/1"), [[session_controller_ pendingEntry] navigationItem]->GetURL()); EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); } TEST_F(CRWSessionControllerTest, addPendingItemOverriding) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; [session_controller_ - addPendingItem:GURL("http://www.another.url.com") - referrer:MakeReferrer("http://www.another.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; + [session_controller_ + addPendingItem:GURL("http://www.another.url.com") + referrer:MakeReferrer("http://www.another.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; EXPECT_EQ(0U, [[session_controller_ entries] count]); EXPECT_EQ( @@ -166,10 +175,11 @@ } TEST_F(CRWSessionControllerTest, addPendingItemAndCommit) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(1U, [[session_controller_ entries] count]); @@ -182,15 +192,16 @@ } TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; [session_controller_ - addPendingItem:GURL("http://www.another.url.com") - referrer:MakeReferrer("http://www.another.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; + [session_controller_ + addPendingItem:GURL("http://www.another.url.com") + referrer:MakeReferrer("http://www.another.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(1U, [[session_controller_ entries] count]); @@ -203,17 +214,18 @@ } TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; [session_controller_ - addPendingItem:GURL("http://www.another.url.com") - referrer:MakeReferrer("http://www.another.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + addPendingItem:GURL("http://www.another.url.com") + referrer:MakeReferrer("http://www.another.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(2U, [[session_controller_ entries] count]); @@ -229,10 +241,11 @@ } TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ discardNonCommittedItems]; EXPECT_EQ(0U, [[session_controller_ entries] count]); @@ -241,10 +254,11 @@ // Tests discarding pending entry added via |setPendingItemIndex:| call. TEST_F(CRWSessionControllerTest, setPendingItemIndexAndDiscard) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; [session_controller_ setPendingItemIndex:0]; @@ -257,16 +271,18 @@ } TEST_F(CRWSessionControllerTest, addPendingItemAndDiscardAndAddAndCommit) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ discardNonCommittedItems]; - [session_controller_ addPendingItem:GURL("http://www.another.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.another.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(1U, [[session_controller_ entries] count]); @@ -279,16 +295,18 @@ } TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.another.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.another.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ discardNonCommittedItems]; EXPECT_EQ(1U, [[session_controller_ entries] count]); @@ -311,10 +329,11 @@ TEST_F(CRWSessionControllerTest, commitPendingItemWithoutPendingEntryWithCommittedEntry) { // Setup committed entry - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; // Commit pending entry when there is no such one @@ -329,30 +348,34 @@ // Tests that forward entries are discarded after navigation entry is committed. TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardEntries) { // Make 3 entries. - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/1") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/1") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/2") - referrer:MakeReferrer("http://www.example.com/c") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/2") + referrer:MakeReferrer("http://www.example.com/c") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; // Go back to the first entry. [session_controller_ goToItemAtIndex:0]; // Create and commit a new pending entry. - [session_controller_ addPendingItem:GURL("http://www.example.com/2") - referrer:MakeReferrer("http://www.example.com/c") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/2") + referrer:MakeReferrer("http://www.example.com/c") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; // All forward entries should go away. @@ -364,20 +387,23 @@ // Tests committing pending entry index from the middle. TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/1") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/1") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/2") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/2") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; ASSERT_EQ(3U, [[session_controller_ entries] count]); @@ -413,10 +439,11 @@ TEST_F(CRWSessionControllerTest, DiscardPendingEntryWithoutPendingEntryWithCommittedEntry) { // Setup committed entry - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; // Discard noncommitted entries when there is no such one @@ -437,10 +464,11 @@ } TEST_F(CRWSessionControllerTest, updatePendingItemWithPendingEntry) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; EXPECT_EQ( @@ -450,10 +478,11 @@ TEST_F(CRWSessionControllerTest, updatePendingItemWithPendingEntryAlreadyCommited) { - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; [session_controller_ commitPendingItem]; @@ -470,15 +499,17 @@ // Tests inserting session controller state. TEST_F(CRWSessionControllerTest, InsertState) { // Add 1 committed and 1 pending entry to target controller. - [session_controller_ addPendingItem:GURL("http://www.url.com/2") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com/2") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.url.com/3") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com/3") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; // Create source session controller with 1 committed entry. base::scoped_nsobject<CRWSessionController> other_session_controller( @@ -488,15 +519,17 @@ openerNavigationIndex:0 browserState:&browser_state_]); [other_session_controller setWindowName:@"test-window"]; - [other_session_controller addPendingItem:GURL("http://www.url.com/0") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [other_session_controller + addPendingItem:GURL("http://www.url.com/0") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [other_session_controller commitPendingItem]; - [other_session_controller addPendingItem:GURL("http://www.url.com/1") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [other_session_controller + addPendingItem:GURL("http://www.url.com/1") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; // Insert and verify the state of target session controller. [session_controller_ @@ -519,15 +552,17 @@ // Tests inserting session controller state from empty session controller. TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { // Add 2 committed entries to target controller. - [session_controller_ addPendingItem:GURL("http://www.url.com/0") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com/0") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.url.com/1") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com/1") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; // Create empty source session controller. @@ -566,20 +601,23 @@ openerNavigationIndex:0 browserState:&browser_state_]); [other_session_controller setWindowName:@"test-window"]; - [other_session_controller addPendingItem:GURL("http://www.url.com/0") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [other_session_controller + addPendingItem:GURL("http://www.url.com/0") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [other_session_controller commitPendingItem]; - [other_session_controller addPendingItem:GURL("http://www.url.com/1") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [other_session_controller + addPendingItem:GURL("http://www.url.com/1") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [other_session_controller commitPendingItem]; - [other_session_controller addPendingItem:GURL("http://www.url.com/2") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [other_session_controller + addPendingItem:GURL("http://www.url.com/2") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; // Insert and verify the state of target session controller. [session_controller_ @@ -602,15 +640,17 @@ TEST_F(CRWSessionControllerTest, InsertStateWithPendingEntryIndexInTargetController) { // Add 2 committed entries and make the first entry pending. - [session_controller_ addPendingItem:GURL("http://www.url.com/2") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com/2") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.url.com/3") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com/3") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; [session_controller_ setPendingItemIndex:0]; @@ -622,10 +662,11 @@ openerNavigationIndex:0 browserState:&browser_state_]); [other_session_controller setWindowName:@"test-window"]; - [other_session_controller addPendingItem:GURL("http://www.url.com/0") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [other_session_controller + addPendingItem:GURL("http://www.url.com/0") + referrer:web::Referrer() + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [other_session_controller commitPendingItem]; // Insert and verify the state of target session controller. @@ -711,22 +752,25 @@ // Tests index of previous navigation entry. TEST_F(CRWSessionControllerTest, PreviousNavigationEntry) { EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); - [session_controller_ addPendingItem:GURL("http://www.url.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); - [session_controller_ addPendingItem:GURL("http://www.url1.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url1.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(session_controller_.get().previousNavigationIndex, 0); - [session_controller_ addPendingItem:GURL("http://www.url2.com") - referrer:MakeReferrer("http://www.referer.com") - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.url2.com") + referrer:MakeReferrer("http://www.referer.com") + transition:ui::PAGE_TRANSITION_TYPED + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(session_controller_.get().previousNavigationIndex, 1); @@ -884,25 +928,29 @@ } TEST_F(CRWSessionControllerTest, TestBackwardForwardEntries) { - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/1") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/1") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/redirect") - referrer:MakeReferrer("http://www.example.com/r") - transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/redirect") + referrer:MakeReferrer("http://www.example.com/r") + transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/2") - referrer:MakeReferrer("http://www.example.com/c") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/2") + referrer:MakeReferrer("http://www.example.com/c") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); @@ -926,30 +974,35 @@ // Tests going to entries with existing and non-existing indices. TEST_F(CRWSessionControllerTest, GoToEntryAtIndex) { - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/1") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/1") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/redirect") - referrer:MakeReferrer("http://www.example.com/r") - transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/redirect") + referrer:MakeReferrer("http://www.example.com/r") + transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/2") - referrer:MakeReferrer("http://www.example.com/c") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/2") + referrer:MakeReferrer("http://www.example.com/c") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/3") - referrer:MakeReferrer("http://www.example.com/d") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/3") + referrer:MakeReferrer("http://www.example.com/d") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); @@ -998,10 +1051,11 @@ // Tests that visible URL is the same as transient URL if there is a committed // entry. TEST_F(CRWSessionControllerTest, VisibleEntryWithCommittedAndTransientEntries) { - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; web::NavigationItem* visible_item = @@ -1013,10 +1067,11 @@ // Tests that visible URL is the same as pending URL if it was user-initiated. TEST_F(CRWSessionControllerTest, VisibleEntryWithSingleUserInitiatedPendingEntry) { - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; web::NavigationItem* visible_item = [[session_controller_ visibleEntry] navigationItem]; ASSERT_TRUE(visible_item); @@ -1027,15 +1082,17 @@ // and there is a committed entry. TEST_F(CRWSessionControllerTest, VisibleEntryWithCommittedAndUserInitiatedPendingEntry) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; web::NavigationItem* visible_item = [[session_controller_ visibleEntry] navigationItem]; ASSERT_TRUE(visible_item); @@ -1046,10 +1103,11 @@ // renderer-initiated. TEST_F(CRWSessionControllerTest, VisibleEntryWithSingleRendererInitiatedPendingEntry) { - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; web::NavigationItem* visible_item = [[session_controller_ visibleEntry] navigationItem]; ASSERT_FALSE(visible_item); @@ -1059,15 +1117,17 @@ // renderer-initiated and there is a committed entry. TEST_F(CRWSessionControllerTest, VisibleEntryWithCommittedAndRendererInitiatedPendingEntry) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; web::NavigationItem* visible_item = [[session_controller_ visibleEntry] navigationItem]; ASSERT_TRUE(visible_item); @@ -1077,15 +1137,17 @@ // Tests that visible URL is not the same as pending URL created via pending // navigation index. TEST_F(CRWSessionControllerTest, VisibleEntryWithPendingNavigationIndex) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller_ commitPendingItem]; [session_controller_ setPendingItemIndex:0]; @@ -1099,15 +1161,17 @@ // Tests that |-backwardEntries| is empty if all preceding entries are // redirects. TEST_F(CRWSessionControllerTest, BackwardEntriesForAllRedirects) { - [session_controller_ addPendingItem:GURL("http://www.example.com") - referrer:MakeReferrer("http://www.example.com/a") - transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com") + referrer:MakeReferrer("http://www.example.com/a") + transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; - [session_controller_ addPendingItem:GURL("http://www.example.com/0") - referrer:MakeReferrer("http://www.example.com/b") - transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT - rendererInitiated:YES]; + [session_controller_ + addPendingItem:GURL("http://www.example.com/0") + referrer:MakeReferrer("http://www.example.com/b") + transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT + initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; [session_controller_ commitPendingItem]; EXPECT_EQ(0U, [session_controller_ backwardEntries].count); }
diff --git a/ios/web/navigation/navigation_item_impl.h b/ios/web/navigation/navigation_item_impl.h index 1b57b3d..f42cacc 100644 --- a/ios/web/navigation/navigation_item_impl.h +++ b/ios/web/navigation/navigation_item_impl.h
@@ -22,6 +22,7 @@ class NavigationItemFacadeDelegate; class NavigationItemStorageBuilder; +enum class NavigationInitiationType; // Implementation of NavigationItem. class NavigationItemImpl : public web::NavigationItem { @@ -94,6 +95,12 @@ void SetIsCreatedFromHashChange(bool hash_change); bool IsCreatedFromHashChange() const; + // The initiation type of this pending navigation. Resets to user-initiated + // after commit. + void SetNavigationInitiationType( + web::NavigationInitiationType navigation_initiation_type); + web::NavigationInitiationType NavigationInitiationType() const; + // Whether or not to bypass showing the repost form confirmation when loading // a POST request. Set to YES for browser-generated POST requests. void SetShouldSkipRepostFormConfirmation(bool skip); @@ -113,13 +120,6 @@ // non-persisted state, as documented on the members below. void ResetForCommit(); - // Whether this (pending) navigation is renderer-initiated. Resets to false - // for all types of navigations after commit. - void set_is_renderer_initiated(bool is_renderer_initiated) { - is_renderer_initiated_ = is_renderer_initiated; - } - bool is_renderer_initiated() const { return is_renderer_initiated_; } - private: // The NavigationManItemStorageBuilder functions require access to // private variables of NavigationItemImpl. @@ -146,10 +146,10 @@ bool should_skip_repost_form_confirmation_; base::scoped_nsobject<NSData> post_data_; - // Whether the item, while loading, was created for a renderer-initiated - // navigation. This dictates whether the URL should be displayed before the - // navigation commits. It is cleared in |ResetForCommit| and not persisted. - bool is_renderer_initiated_; + // The navigation initiation type of the item. This decides whether the URL + // should be displayed before the navigation commits. It is cleared in + // |ResetForCommit| and not persisted. + web::NavigationInitiationType navigation_initiation_type_; // Whether the navigation contains unsafe resources. bool is_unsafe_;
diff --git a/ios/web/navigation/navigation_item_impl.mm b/ios/web/navigation/navigation_item_impl.mm index 3b62690..1757cd9 100644 --- a/ios/web/navigation/navigation_item_impl.mm +++ b/ios/web/navigation/navigation_item_impl.mm
@@ -11,6 +11,7 @@ #include "base/logging.h" #include "components/url_formatter/url_formatter.h" +#import "ios/web/navigation/navigation_manager_impl.h" #include "ui/base/page_transition_types.h" #include "ui/gfx/text_elider.h" @@ -44,7 +45,8 @@ has_state_been_replaced_(false), is_created_from_hash_change_(false), should_skip_repost_form_confirmation_(false), - is_renderer_initiated_(false), + navigation_initiation_type_( + web::NavigationInitiationType::USER_INITIATED), is_unsafe_(false), facade_delegate_(nullptr) {} @@ -72,7 +74,7 @@ should_skip_repost_form_confirmation_( item.should_skip_repost_form_confirmation_), post_data_([item.post_data_ copy]), - is_renderer_initiated_(item.is_renderer_initiated_), + navigation_initiation_type_(item.navigation_initiation_type_), is_unsafe_(item.is_unsafe_), cached_display_title_(item.cached_display_title_), facade_delegate_(nullptr) {} @@ -250,6 +252,16 @@ return is_created_from_push_state_; } +void NavigationItemImpl::SetNavigationInitiationType( + web::NavigationInitiationType navigation_initiation_type) { + navigation_initiation_type_ = navigation_initiation_type; +} + +web::NavigationInitiationType NavigationItemImpl::NavigationInitiationType() + const { + return navigation_initiation_type_; +} + void NavigationItemImpl::SetHasStateBeenReplaced(bool replace_state) { has_state_been_replaced_ = replace_state; } @@ -296,7 +308,7 @@ void NavigationItemImpl::ResetForCommit() { // Any state that only matters when a navigation item is pending should be // cleared here. - set_is_renderer_initiated(false); + SetNavigationInitiationType(web::NavigationInitiationType::USER_INITIATED); } } // namespace web
diff --git a/ios/web/navigation/navigation_manager_impl.h b/ios/web/navigation/navigation_manager_impl.h index cf1b295..11663bd 100644 --- a/ios/web/navigation/navigation_manager_impl.h +++ b/ios/web/navigation/navigation_manager_impl.h
@@ -26,6 +26,20 @@ class NavigationManagerFacadeDelegate; class SessionStorageBuilder; +// Defines the ways how a pending navigation can be initiated. +enum class NavigationInitiationType { + // Navigation was initiated by actual user action. + USER_INITIATED = 1, + + // Navigation was initiated by renderer. Examples of renderer-initiated + // navigations include: + // * <a> link click + // * changing window.location.href + // * redirect via the <meta http-equiv="refresh"> tag + // * using window.history.pushState + RENDERER_INITIATED, +}; + // Implementation of NavigationManager. // Generally mirrors upstream's NavigationController. class NavigationManagerImpl : public NavigationManager { @@ -82,6 +96,16 @@ const Referrer& referrer, ui::PageTransition type); + // Adds a new item with the given url, referrer, navigation type, and + // initiation type, making it the pending item. If pending item is the same as + // the current item, this does nothing. |referrer| may be nil if there isn't + // one. The item starts out as pending, and will be lost unless + // |-commitPendingItem| is called. + void AddPendingItem(const GURL& url, + const web::Referrer& referrer, + ui::PageTransition navigation_type, + NavigationInitiationType initiation_type); + // Convenience accessors to get the underlying NavigationItems from the // SessionEntries returned from |session_controller_|'s -lastUserEntry and // -previousEntry methods. @@ -119,6 +143,7 @@ void GoForward() override; void GoToIndex(int index) override; void Reload(bool check_for_reposts) override; + void OverrideDesktopUserAgentForNextPendingItem() override; // Returns the current list of transient url rewriters, passing ownership to // the caller. @@ -150,6 +175,12 @@ // |index| has ui::PAGE_TRANSITION_IS_REDIRECT_MASK. bool IsRedirectItemAtIndex(int index) const; + // If true, override navigation item's useDesktopUserAgent flag and always + // create the pending entry using the desktop user agent. + // TODO(crbug.com/692303): Remove this when overriding the user agent doesn't + // create a new NavigationItem. + bool override_desktop_user_agent_for_next_pending_item_; + // The primary delegate for this manager. NavigationManagerDelegate* delegate_;
diff --git a/ios/web/navigation/navigation_manager_impl.mm b/ios/web/navigation/navigation_manager_impl.mm index b246e7e1..140c760 100644 --- a/ios/web/navigation/navigation_manager_impl.mm +++ b/ios/web/navigation/navigation_manager_impl.mm
@@ -68,7 +68,10 @@ } NavigationManagerImpl::NavigationManagerImpl() - : delegate_(nullptr), browser_state_(nullptr), facade_delegate_(nullptr) {} + : override_desktop_user_agent_for_next_pending_item_(false), + delegate_(nullptr), + browser_state_(nullptr), + facade_delegate_(nullptr) {} NavigationManagerImpl::~NavigationManagerImpl() { // The facade layer should be deleted before this object. @@ -173,6 +176,27 @@ delegate_->GetWebState()->OpenURL(params); } +void NavigationManagerImpl::AddPendingItem( + const GURL& url, + const web::Referrer& referrer, + ui::PageTransition navigation_type, + NavigationInitiationType initiation_type) { + [session_controller_ addPendingItem:url + referrer:referrer + transition:navigation_type + initiationType:initiation_type]; + + // Do nothing if pending item is the same as last committed item. + if (GetPendingItem()) { + bool use_desktop_user_agent = + override_desktop_user_agent_for_next_pending_item_ || + (GetLastCommittedItem() && + GetLastCommittedItem()->IsOverridingUserAgent()); + GetPendingItem()->SetIsOverridingUserAgent(use_desktop_user_agent); + override_desktop_user_agent_for_next_pending_item_ = false; + } +} + NavigationItem* NavigationManagerImpl::GetLastUserItem() const { CRWSessionEntry* entry = [session_controller_ lastUserEntry]; return [entry navigationItem]; @@ -396,6 +420,13 @@ return result; } +void NavigationManagerImpl::OverrideDesktopUserAgentForNextPendingItem() { + if (GetPendingItem()) + GetPendingItem()->SetIsOverridingUserAgent(true); + else + override_desktop_user_agent_for_next_pending_item_ = true; +} + bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const { DCHECK_GT(index, 0); DCHECK_LT(index, GetItemCount());
diff --git a/ios/web/navigation/navigation_manager_impl_unittest.mm b/ios/web/navigation/navigation_manager_impl_unittest.mm index 7506a80c..420beea8 100644 --- a/ios/web/navigation/navigation_manager_impl_unittest.mm +++ b/ios/web/navigation/navigation_manager_impl_unittest.mm
@@ -8,6 +8,7 @@ #import "base/mac/scoped_nsobject.h" #import "ios/web/navigation/crw_session_controller+private_constructors.h" #import "ios/web/navigation/navigation_manager_delegate.h" +#include "ios/web/public/navigation_item.h" #include "ios/web/public/test/fakes/test_browser_state.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" @@ -62,10 +63,9 @@ // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); } @@ -73,30 +73,26 @@ // Tests that GetPendingItemIndex() returns current item index if there is a // pending entry. TEST_F(NavigationManagerTest, GetPendingItemIndexWithPendingEntry) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); EXPECT_EQ(0, navigation_manager()->GetPendingItemIndex()); } // Tests that GetPendingItemIndex() returns same index as was set by // -[CRWSessionController setPendingItemIndex:]. TEST_F(NavigationManagerTest, GetPendingItemIndexWithIndexedPendingEntry) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); @@ -123,10 +119,9 @@ // Tests that going back or negative offset is possible if there is a transient // item and at least one committed item. TEST_F(NavigationManagerTest, CanGoBackWithTransientItemAndCommittedItem) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; [session_controller() addTransientItemWithURL:GURL("http://www.url.com/0")]; @@ -137,10 +132,9 @@ // Tests that going back or negative offset is not possible if there is ony one // committed item and no transient item. TEST_F(NavigationManagerTest, CanGoBackWithSingleCommitedItem) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; EXPECT_FALSE(navigation_manager()->CanGoBack()); @@ -149,20 +143,17 @@ // Tests going back possibility with multiple committed items. TEST_F(NavigationManagerTest, CanGoBackWithMultipleCommitedItems) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/1") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; EXPECT_TRUE(navigation_manager()->CanGoBack()); @@ -184,21 +175,18 @@ // Tests that going forward or positive offset is not possible if there is a // pending entry. TEST_F(NavigationManagerTest, CanGoForwardWithPendingItem) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; [session_controller() goToItemAtIndex:0]; - [session_controller() addPendingItem:GURL("http://www.url.com/1") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); // Pending entry should not allow going forward. EXPECT_FALSE(navigation_manager()->CanGoForward()); @@ -215,10 +203,9 @@ // Tests that going forward or positive offset is not possible if there is ony // one committed item and no transient item. TEST_F(NavigationManagerTest, CanGoForwardWithSingleCommitedItem) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; EXPECT_FALSE(navigation_manager()->CanGoForward()); @@ -227,20 +214,17 @@ // Tests going forward possibility with multiple committed items. TEST_F(NavigationManagerTest, CanGoForwardWithMultipleCommitedEntries) { - [session_controller() addPendingItem:GURL("http://www.url.com") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/1") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; EXPECT_FALSE(navigation_manager()->CanGoForward()); @@ -267,30 +251,27 @@ // navigation manager will have redirect entries to make sure they are // appropriately skipped. TEST_F(NavigationManagerTest, OffsetsWithoutPendingIndex) { - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/redirect") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/redirect"), Referrer(), + ui::PAGE_TRANSITION_IS_REDIRECT_MASK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/1") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/2") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/redirect") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/redirect"), Referrer(), + ui::PAGE_TRANSITION_IS_REDIRECT_MASK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; ASSERT_EQ(5, navigation_manager()->GetItemCount()); ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); @@ -494,20 +475,17 @@ TEST_F(NavigationManagerTest, OffsetsWithPendingTransientEntry) { // Create a transient item in the middle of the navigation stack and go back // to it (pending index is 1, current index is 2). - [session_controller() addPendingItem:GURL("http://www.url.com/0") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/0"), Referrer(), ui::PAGE_TRANSITION_LINK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/1") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/1"), Referrer(), ui::PAGE_TRANSITION_LINK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; - [session_controller() addPendingItem:GURL("http://www.url.com/2") - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + navigation_manager()->AddPendingItem( + GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, + web::NavigationInitiationType::USER_INITIATED); [session_controller() commitPendingItem]; [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; [session_controller() setPendingItemIndex:1]; @@ -529,4 +507,15 @@ EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); } +// Tests that desktop user agent can be enforced to use for next pending item. +TEST_F(NavigationManagerTest, OverrideDesktopUserAgent) { + navigation_manager()->OverrideDesktopUserAgentForNextPendingItem(); + navigation_manager()->AddPendingItem( + GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); + [session_controller() commitPendingItem]; + NavigationItem* visible_item = navigation_manager()->GetVisibleItem(); + EXPECT_TRUE(visible_item->IsOverridingUserAgent()); +} + } // namespace web
diff --git a/ios/web/net/crw_ssl_status_updater_unittest.mm b/ios/web/net/crw_ssl_status_updater_unittest.mm index ee4243a..e7fe2f28 100644 --- a/ios/web/net/crw_ssl_status_updater_unittest.mm +++ b/ios/web/net/crw_ssl_status_updater_unittest.mm
@@ -109,10 +109,11 @@ initWithNavigationItems:std::move(nav_items) currentIndex:0 browserState:GetBrowserState()]); - [session_controller addPendingItem:GURL(item_url_spec) - referrer:Referrer() - transition:ui::PAGE_TRANSITION_LINK - rendererInitiated:NO]; + [session_controller + addPendingItem:GURL(item_url_spec) + referrer:Referrer() + transition:ui::PAGE_TRANSITION_LINK + initiationType:web::NavigationInitiationType::USER_INITIATED]; [session_controller commitPendingItem]; return session_controller.autorelease();
diff --git a/ios/web/public/navigation_manager.h b/ios/web/public/navigation_manager.h index f3e106d..bec6c696 100644 --- a/ios/web/public/navigation_manager.h +++ b/ios/web/public/navigation_manager.h
@@ -148,6 +148,12 @@ // reload the page. In nearly all cases pass in true. If a transient item is // showing, initiates a new navigation to its URL. virtual void Reload(bool check_for_repost) = 0; + + // Forces the pending item to be loaded using desktop user agent. Note that + // the pending item may or may not already exist. + // TODO(crbug.com/692303): Remove this when overriding the user agent doesn't + // create a new NavigationItem. + virtual void OverrideDesktopUserAgentForNextPendingItem() = 0; }; } // namespace web
diff --git a/ios/web/public/test/fakes/test_navigation_manager.h b/ios/web/public/test/fakes/test_navigation_manager.h index ca6c49b..812077a 100644 --- a/ios/web/public/test/fakes/test_navigation_manager.h +++ b/ios/web/public/test/fakes/test_navigation_manager.h
@@ -39,6 +39,7 @@ void GoForward() override; void GoToIndex(int index) override; void Reload(bool check_for_reposts) override; + void OverrideDesktopUserAgentForNextPendingItem() override; // Setters for test data. void SetLastCommittedItem(NavigationItem* item);
diff --git a/ios/web/public/test/fakes/test_navigation_manager.mm b/ios/web/public/test/fakes/test_navigation_manager.mm index 38eafcac..954d59a 100644 --- a/ios/web/public/test/fakes/test_navigation_manager.mm +++ b/ios/web/public/test/fakes/test_navigation_manager.mm
@@ -54,24 +54,20 @@ void TestNavigationManager::DiscardNonCommittedItems() { NOTREACHED(); - return; } void TestNavigationManager::LoadIfNecessary() { NOTREACHED(); - return; } void TestNavigationManager::LoadURLWithParams( const NavigationManager::WebLoadParams& params) { NOTREACHED(); - return; } void TestNavigationManager::AddTransientURLRewriter( BrowserURLRewriter::URLRewriter rewriter) { NOTREACHED(); - return; } int TestNavigationManager::GetItemCount() const { @@ -121,22 +117,22 @@ void TestNavigationManager::GoBack() { NOTREACHED(); - return; } void TestNavigationManager::GoForward() { NOTREACHED(); - return; } void TestNavigationManager::GoToIndex(int index) { NOTREACHED(); - return; } void TestNavigationManager::Reload(bool check_for_repost) { NOTREACHED(); - return; +} + +void TestNavigationManager::OverrideDesktopUserAgentForNextPendingItem() { + NOTREACHED(); } } // namespace web
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm index aff3c438..d7b23f9 100644 --- a/ios/web/web_state/ui/crw_web_controller.mm +++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -435,6 +435,8 @@ @property(nonatomic, readwrite) id<CRWNativeContent> nativeController; // Returns NavigationManager's session controller. @property(nonatomic, readonly) CRWSessionController* sessionController; +// The associated NavigationManagerImpl. +@property(nonatomic, readonly) NavigationManagerImpl* navigationManagerImpl; // Dictionary where keys are the names of WKWebView properties and values are // selector names which should be called when a corresponding property has // changed. e.g. @{ @"URL" : @"webViewURLDidChange" } means that @@ -1376,8 +1378,8 @@ - (void)setNavigationItemTitle:(NSString*)title { DCHECK(title); - auto& navigationManager = _webStateImpl->GetNavigationManagerImpl(); - web::NavigationItem* item = navigationManager.GetLastCommittedItem(); + web::NavigationItem* item = + self.navigationManagerImpl->GetLastCommittedItem(); if (!item) return; @@ -1389,7 +1391,7 @@ // TODO(crbug.com/546218): See if this can be removed; it's not clear that // other platforms send this (tab sync triggers need to be compared against // upstream). - navigationManager.OnNavigationItemChanged(); + self.navigationManagerImpl->OnNavigationItemChanged(); if ([_delegate respondsToSelector:@selector(webController:titleDidChange:)]) { [_delegate webController:self titleDidChange:title]; @@ -1572,16 +1574,15 @@ [_delegate webWillAddPendingURL:requestURL transition:transition]; // Add or update pending url. - if (_webStateImpl->GetNavigationManagerImpl().GetPendingItem()) { + if (self.navigationManagerImpl->GetPendingItem()) { // Update the existing pending entry. // Typically on PAGE_TRANSITION_CLIENT_REDIRECT. [[self sessionController] updatePendingItem:requestURL]; } else { // A new session history entry needs to be created. - [[self sessionController] addPendingItem:requestURL - referrer:referrer - transition:transition - rendererInitiated:YES]; + self.navigationManagerImpl->AddPendingItem( + requestURL, referrer, transition, + web::NavigationInitiationType::RENDERER_INITIATED); } _webStateImpl->SetIsLoading(true); _webStateImpl->OnProvisionalNavigationStarted(requestURL); @@ -1619,7 +1620,7 @@ // TODO(stuartmorgan): Make CRWSessionController manage this internally (or // remove it; it's not clear this matches other platforms' behavior). - _webStateImpl->GetNavigationManagerImpl().OnNavigationItemCommitted(); + self.navigationManagerImpl->OnNavigationItemCommitted(); // Record that a same-document hashchange event will be fired. This flag will // be reset when resonding to the hashchange message. Note that resetting the // flag in the completion block below is too early, as that block is called @@ -1915,14 +1916,16 @@ // forward/back transitions? [self recordStateInHistory]; - CRWSessionController* history = - _webStateImpl->GetNavigationManagerImpl().GetSessionController(); if (!self.currentSessionEntry) initialNavigation = YES; - [history addPendingItem:navUrl - referrer:params.referrer - transition:transition - rendererInitiated:params.is_renderer_initiated]; + + web::NavigationInitiationType navigationInitiationType = + params.is_renderer_initiated + ? web::NavigationInitiationType::RENDERER_INITIATED + : web::NavigationInitiationType::USER_INITIATED; + self.navigationManagerImpl->AddPendingItem( + navUrl, params.referrer, transition, navigationInitiationType); + web::NavigationItemImpl* addedItem = [self currentSessionEntry].navigationItemImpl; DCHECK(addedItem); @@ -2061,8 +2064,7 @@ - (BOOL)shouldReload:(const GURL&)destinationURL transition:(ui::PageTransition)transition { // Do a reload if the user hits enter in the address bar or re-types a URL. - web::NavigationItem* item = - _webStateImpl->GetNavigationManagerImpl().GetVisibleItem(); + web::NavigationItem* item = self.navigationManagerImpl->GetVisibleItem(); return (transition & ui::PAGE_TRANSITION_FROM_ADDRESS_BAR) && item && (destinationURL == item->GetURL() || destinationURL == item->GetOriginalRequestURL()); @@ -2079,7 +2081,7 @@ base::RecordAction(UserMetricsAction("Reload")); if (_webView) { web::NavigationItem* transientItem = - _webStateImpl->GetNavigationManagerImpl().GetTransientItem(); + self.navigationManagerImpl->GetTransientItem(); if (transientItem) { // If there's a transient item, a reload is considered a new navigation to // the transient item's URL (as on other platforms). @@ -2273,10 +2275,9 @@ return; } - web::NavigationManagerImpl& navigationManager = - _webStateImpl->GetNavigationManagerImpl(); - if (navigationManager.CanGoToOffset(delta)) { - [self goToItemAtIndex:navigationManager.GetIndexForOffset(delta)]; + if (self.navigationManagerImpl->CanGoToOffset(delta)) { + NSInteger index = self.navigationManagerImpl->GetIndexForOffset(delta); + [self goToItemAtIndex:index]; } } @@ -2286,10 +2287,9 @@ // Only load the new URL if it has a different document than |fromEntry| to // prevent extra page loads from NavigationItems created by hash changes or // calls to window.history.pushState(). - BOOL shouldLoadURL = - ![_webStateImpl->GetNavigationManagerImpl().GetSessionController() - isSameDocumentNavigationBetweenItem:fromEntry.navigationItem - andItem:self.currentNavItem]; + BOOL shouldLoadURL = ![self.sessionController + isSameDocumentNavigationBetweenItem:fromEntry.navigationItem + andItem:self.currentNavItem]; web::NavigationItemImpl* currentItem = self.currentSessionEntry.navigationItemImpl; GURL endURL = [self URLForHistoryNavigationFromItem:fromEntry.navigationItem @@ -2358,8 +2358,7 @@ // opened from another application. BOOL rendererInitiatedWithoutInteraction = self.sessionController.openedByDOM && !_userInteractedWithWebController; - BOOL noNavigationItems = - !_webStateImpl->GetNavigationManagerImpl().GetItemCount(); + BOOL noNavigationItems = !(self.navigationManagerImpl->GetItemCount()); return rendererInitiatedWithoutInteraction || noNavigationItems; } @@ -3003,13 +3002,12 @@ replaceURL = URLEscapedForHistory(replaceURL); if (!replaceURL.is_valid()) return YES; - const NavigationManagerImpl& navigationManager = - _webStateImpl->GetNavigationManagerImpl(); + web::NavigationItem* navItem = [self currentNavItem]; // ReplaceState happened before first navigation entry or called right // after window.open when the url is empty/not valid. - if (!navItem || - (navigationManager.GetItemCount() <= 1 && navItem->GetURL().is_empty())) + if (!navItem || (self.navigationManagerImpl->GetItemCount() <= 1 && + navItem->GetURL().is_empty())) return YES; if (!web::history_state_util::IsHistoryStateChangeValid( [self currentNavItem]->GetURL(), replaceURL)) { @@ -3185,8 +3183,7 @@ // Check if the link navigation leads to a launch of an external app. // TODO(crbug.com/607780): Revise the logic of allowing external app launch // and move it to externalAppLauncher. - BOOL isOpenInNewTabNavigation = - !_webStateImpl->GetNavigationManager()->GetItemCount(); + BOOL isOpenInNewTabNavigation = !(self.navigationManagerImpl->GetItemCount()); BOOL isPossibleLinkClick = [self isLinkNavigation:action.navigationType]; if (isPossibleLinkClick || isOpenInNewTabNavigation || PageTransitionCoreTypeIs([self currentTransition], @@ -3657,9 +3654,12 @@ #pragma mark Session Information - (CRWSessionController*)sessionController { - return _webStateImpl - ? _webStateImpl->GetNavigationManagerImpl().GetSessionController() - : nil; + NavigationManagerImpl* navigationManager = self.navigationManagerImpl; + return navigationManager ? navigationManager->GetSessionController() : nil; +} + +- (NavigationManagerImpl*)navigationManagerImpl { + return _webStateImpl ? &(_webStateImpl->GetNavigationManagerImpl()) : nil; } - (CRWSessionEntry*)currentSessionEntry {
diff --git a/ios/web/web_state/ui/crw_web_controller_unittest.mm b/ios/web/web_state/ui/crw_web_controller_unittest.mm index 749b5b6c..16fad14 100644 --- a/ios/web/web_state/ui/crw_web_controller_unittest.mm +++ b/ios/web/web_state/ui/crw_web_controller_unittest.mm
@@ -218,11 +218,10 @@ NavigationManagerImpl& navigationManager = [web_controller() webStateImpl]->GetNavigationManagerImpl(); navigationManager.InitializeSession(@"name", nil, NO, 0); - [navigationManager.GetSessionController() - addPendingItem:GURL("http://www.google.com/?q=foo#bar") - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigationManager.AddPendingItem( + GURL("http://www.google.com/?q=foo#bar"), web::Referrer(), + ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); } void TearDown() override { @@ -810,11 +809,9 @@ NavigationManagerImpl& navigation_manager = [web_controller() webStateImpl]->GetNavigationManagerImpl(); navigation_manager.InitializeSession(@"name", nil, NO, 0); - [navigation_manager.GetSessionController() - addPendingItem:URL - referrer:web::Referrer() - transition:ui::PAGE_TRANSITION_TYPED - rendererInitiated:NO]; + navigation_manager.AddPendingItem( + URL, web::Referrer(), ui::PAGE_TRANSITION_TYPED, + web::NavigationInitiationType::USER_INITIATED); [web_controller() loadCurrentURL]; }
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 4fd4294..31b114f 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2547,10 +2547,10 @@ crbug.com/688486 external/wpt/service-workers/service-worker/fetch-request-redirect.https.html [ Failure Pass ] crbug.com/688486 external/wpt/service-workers/service-worker/fetch-request-resources.https.html [ Failure Pass ] -# Sheriff failures 2017-02-06 -crbug.com/688515 [ Linux ] http/tests/media/video-play-stall.html [ Pass Failure ] - # Sheriff failures 2017-02-13 crbug.com/691423 [ Mac ] fast/frames/location-change-no-file-access.html [ Failure Pass ] -# Sheriff failures 2017-02-16 +# Sheriff failures 2017-02-21 +crbug.com/73609 http/tests/media/video-play-stall.html [ Pass Timeout ] +crbug.com/73609 virtual/mojo-loading/http/tests/media/video-play-stall.html [ Pass Timeout ] +crbug.com/694467 fast/text/line-break-8bit-after-16bit.html [ Pass Failure ]
diff --git a/third_party/WebKit/LayoutTests/editing/assert_selection.html b/third_party/WebKit/LayoutTests/editing/assert_selection.html index 007df49..5bebfd2 100644 --- a/third_party/WebKit/LayoutTests/editing/assert_selection.html +++ b/third_party/WebKit/LayoutTests/editing/assert_selection.html
@@ -313,4 +313,25 @@ const sample4 = assert_selection('abc', '', 'abc', 'description'); assert_equals(sample4.iframe_.parentNode, null, 'with description'); }, 'removeSampleIfSucceeded'); + +test(() => { + assert_exists(window, 'internals'); + assert_exists(window, 'eventSender'); + assert_selection( + 'foo|bar', + () => { assert_equals(internals.textAffinity, 'Downstream'); }, + 'foo|bar'); + assert_selection( + '<div contenteditable style="width: 25px;">foobar</div>', + selection => { + eventSender.dragMode = false; + var document = selection.document; + var div = document.querySelector('div'); + eventSender.mouseMoveTo(document.offsetLeft + div.offsetLeft + 20, + document.offsetTop + div.offsetTop + 5); + eventSender.mouseDown(); + eventSender.mouseUp(); + assert_equals(internals.textAffinity, 'Upstream'); }, + '<div contenteditable style="width: 25px;">foo|bar</div>'); +}, 'Textaffinity'); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/onpaste-text-html-types.html b/third_party/WebKit/LayoutTests/editing/pasteboard/onpaste-text-html-types.html index 3b74ce48..8dd357f 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/onpaste-text-html-types.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/onpaste-text-html-types.html
@@ -1,4 +1,5 @@ -<div id="test" onpaste="paste(event)">This test verifies that we can get types from the clipboard +<body onpaste="paste(event)"> +<div id="test">This test verifies that we can get types from the clipboard during an onpaste event. This test requires DRT.</div> <div id="results">FAIL</div> @@ -24,3 +25,4 @@ runDumpAsTextEditingTest(false); </script> +</body>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/extend-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/extend-expected.txt index 7d79bdf..83532dc4 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/extend-expected.txt +++ b/third_party/WebKit/LayoutTests/editing/selection/extend-expected.txt
@@ -1,7 +1,7 @@ foobarbaz Success: window.getSelection() is ar. Success: s.extend(span2.firstChild, 4) raised IndexSizeError: Failed to execute 'extend' on 'Selection': The offset 4 is larger than or equal to the node's length (3).. -Success: s.extend(span2.firstChild, -1) raised IndexSizeError: Failed to execute 'extend' on 'Selection': -1 is not a valid offset.. +Success: s.extend(span2.firstChild, -1) raised IndexSizeError: Failed to execute 'extend' on 'Selection': The offset -1 is larger than or equal to the node's length (3).. Success: window.getSelection() is b. Success: window.getSelection() is arbaz. Success: s.extend() raised TypeError: Failed to execute 'extend' on 'Selection': 1 argument required, but only 0 present..
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/collapse-00-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/collapse-00-expected.txt deleted file mode 100644 index aa947fb..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/selection/collapse-00-expected.txt +++ /dev/null
@@ -1,3174 +0,0 @@ -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -This is a testharness.js-based test. -Found 2670 tests; 2640 PASS, 30 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Set up range 0 [] -PASS Set up range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] -PASS Set up range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] -PASS Set up range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] -PASS Set up range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] -PASS Set up range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] -PASS Set up range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] -PASS Set up range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] -PASS Set up range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] -PASS Set up range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] -PASS Set up range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] -PASS Set up range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] -PASS Set up range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] -PASS Set up range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] -PASS Set up range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] -PASS Set up range 15 [document.documentElement, 0, document.documentElement, 1] -PASS Set up range 16 [document.documentElement, 0, document.documentElement, 2] -PASS Set up range 17 [document.documentElement, 1, document.documentElement, 2] -PASS Set up range 18 [document.head, 1, document.head, 1] -PASS Set up range 19 [document.body, 0, document.body, 1] -PASS Set up range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] -PASS Set up range 21 [foreignDoc.head, 1, foreignDoc.head, 1] -PASS Set up range 22 [foreignDoc.body, 0, foreignDoc.body, 0] -PASS Set up range 23 [paras[0], 0, paras[0], 0] -PASS Set up range 24 [paras[0], 0, paras[0], 1] -PASS Set up range 25 [detachedPara1, 0, detachedPara1, 0] -PASS Set up range 26 [detachedPara1, 0, detachedPara1, 1] -PASS Set up range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] -PASS Set up range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] -PASS Set up range 29 [paras[0].firstChild, 3, paras[3], 1] -PASS Range 0 [], point 0 [paras[0].firstChild, -1] -PASS Range 0 [], point 1 [paras[0].firstChild, 0] -PASS Range 0 [], point 2 [paras[0].firstChild, 1] -PASS Range 0 [], point 3 [paras[0].firstChild, 2] -PASS Range 0 [], point 4 [paras[0].firstChild, 8] -PASS Range 0 [], point 5 [paras[0].firstChild, 9] -PASS Range 0 [], point 6 [paras[0].firstChild, 10] -PASS Range 0 [], point 7 [paras[0].firstChild, 65535] -PASS Range 0 [], point 8 [paras[1].firstChild, -1] -PASS Range 0 [], point 9 [paras[1].firstChild, 0] -PASS Range 0 [], point 10 [paras[1].firstChild, 1] -PASS Range 0 [], point 11 [paras[1].firstChild, 2] -PASS Range 0 [], point 12 [paras[1].firstChild, 8] -PASS Range 0 [], point 13 [paras[1].firstChild, 9] -PASS Range 0 [], point 14 [paras[1].firstChild, 10] -PASS Range 0 [], point 15 [paras[1].firstChild, 65535] -PASS Range 0 [], point 16 [detachedPara1.firstChild, 0] -PASS Range 0 [], point 17 [detachedPara1.firstChild, 1] -PASS Range 0 [], point 18 [detachedPara1.firstChild, 8] -PASS Range 0 [], point 19 [detachedPara1.firstChild, 9] -PASS Range 0 [], point 20 [foreignPara1.firstChild, 0] -PASS Range 0 [], point 21 [foreignPara1.firstChild, 1] -PASS Range 0 [], point 22 [foreignPara1.firstChild, 8] -PASS Range 0 [], point 23 [foreignPara1.firstChild, 9] -PASS Range 0 [], point 24 [document.documentElement, -1] -PASS Range 0 [], point 25 [document.documentElement, 0] -PASS Range 0 [], point 26 [document.documentElement, 1] -PASS Range 0 [], point 27 [document.documentElement, 2] -PASS Range 0 [], point 28 [document.documentElement, 7] -PASS Range 0 [], point 29 [document.head, 1] -PASS Range 0 [], point 30 [document.body, 3] -PASS Range 0 [], point 31 [foreignDoc.documentElement, 0] -PASS Range 0 [], point 32 [foreignDoc.documentElement, 1] -PASS Range 0 [], point 33 [foreignDoc.head, 0] -PASS Range 0 [], point 34 [foreignDoc.body, 1] -PASS Range 0 [], point 35 [paras[0], 0] -PASS Range 0 [], point 36 [paras[0], 1] -PASS Range 0 [], point 37 [paras[0], 2] -PASS Range 0 [], point 38 [paras[1], 0] -PASS Range 0 [], point 39 [paras[1], 1] -PASS Range 0 [], point 40 [paras[1], 2] -PASS Range 0 [], point 41 [detachedPara1, 0] -PASS Range 0 [], point 42 [detachedPara1, 1] -PASS Range 0 [], point 43 [testDiv, 0] -PASS Range 0 [], point 44 [testDiv, 3] -PASS Range 0 [], point 45 [document, -1] -PASS Range 0 [], point 46 [document, 0] -PASS Range 0 [], point 47 [document, 1] -PASS Range 0 [], point 48 [document, 2] -PASS Range 0 [], point 49 [document, 3] -PASS Range 0 [], point 50 [comment, -1] -PASS Range 0 [], point 51 [comment, 0] -PASS Range 0 [], point 52 [comment, 4] -PASS Range 0 [], point 53 [comment, 96] -PASS Range 0 [], point 54 [foreignDoc, 0] -PASS Range 0 [], point 55 [foreignDoc, 1] -PASS Range 0 [], point 56 [foreignComment, 2] -PASS Range 0 [], point 57 [foreignTextNode, 0] -PASS Range 0 [], point 58 [foreignTextNode, 36] -PASS Range 0 [], point 59 [xmlDoc, -1] -PASS Range 0 [], point 60 [xmlDoc, 0] -PASS Range 0 [], point 61 [xmlDoc, 1] -PASS Range 0 [], point 62 [xmlDoc, 5] -PASS Range 0 [], point 63 [xmlComment, 0] -PASS Range 0 [], point 64 [xmlComment, 4] -PASS Range 0 [], point 65 [processingInstruction, 0] -PASS Range 0 [], point 66 [processingInstruction, 5] -PASS Range 0 [], point 67 [processingInstruction, 9] -PASS Range 0 [], point 68 [detachedTextNode, 0] -PASS Range 0 [], point 69 [detachedTextNode, 8] -PASS Range 0 [], point 70 [detachedForeignTextNode, 0] -PASS Range 0 [], point 71 [detachedForeignTextNode, 8] -PASS Range 0 [], point 72 [detachedXmlTextNode, 0] -PASS Range 0 [], point 73 [detachedXmlTextNode, 8] -PASS Range 0 [], point 74 [detachedProcessingInstruction, 12] -PASS Range 0 [], point 75 [detachedComment, 3] -PASS Range 0 [], point 76 [detachedComment, 5] -PASS Range 0 [], point 77 [detachedForeignComment, 0] -PASS Range 0 [], point 78 [detachedForeignComment, 4] -PASS Range 0 [], point 79 [detachedXmlComment, 2] -PASS Range 0 [], point 80 [docfrag, 0] -PASS Range 0 [], point 81 [foreignDocfrag, 0] -PASS Range 0 [], point 82 [xmlDocfrag, 0] -PASS Range 0 [], point 83 [doctype, 0] -FAIL Range 0 [], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 0 [], point 85 [doctype, 1] -PASS Range 0 [], point 86 [foreignDoctype, 0] -PASS Range 0 [], point 87 [xmlDoctype, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 0 [paras[0].firstChild, -1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 1 [paras[0].firstChild, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 2 [paras[0].firstChild, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 3 [paras[0].firstChild, 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 4 [paras[0].firstChild, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 5 [paras[0].firstChild, 9] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 6 [paras[0].firstChild, 10] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 8 [paras[1].firstChild, -1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 9 [paras[1].firstChild, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 10 [paras[1].firstChild, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 11 [paras[1].firstChild, 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 12 [paras[1].firstChild, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 13 [paras[1].firstChild, 9] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 14 [paras[1].firstChild, 10] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 24 [document.documentElement, -1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 25 [document.documentElement, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 26 [document.documentElement, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 27 [document.documentElement, 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 28 [document.documentElement, 7] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 29 [document.head, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 30 [document.body, 3] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 33 [foreignDoc.head, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 34 [foreignDoc.body, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 35 [paras[0], 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 36 [paras[0], 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 37 [paras[0], 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 38 [paras[1], 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 39 [paras[1], 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 40 [paras[1], 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 41 [detachedPara1, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 42 [detachedPara1, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 43 [testDiv, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 44 [testDiv, 3] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 45 [document, -1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 46 [document, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 47 [document, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 48 [document, 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 49 [document, 3] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 50 [comment, -1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 51 [comment, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 52 [comment, 4] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 53 [comment, 96] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 54 [foreignDoc, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 55 [foreignDoc, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 56 [foreignComment, 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 57 [foreignTextNode, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 58 [foreignTextNode, 36] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 59 [xmlDoc, -1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 60 [xmlDoc, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 61 [xmlDoc, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 62 [xmlDoc, 5] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 63 [xmlComment, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 64 [xmlComment, 4] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 65 [processingInstruction, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 66 [processingInstruction, 5] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 67 [processingInstruction, 9] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 68 [detachedTextNode, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 69 [detachedTextNode, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 75 [detachedComment, 3] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 76 [detachedComment, 5] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 77 [detachedForeignComment, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 78 [detachedForeignComment, 4] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 79 [detachedXmlComment, 2] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 80 [docfrag, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 81 [foreignDocfrag, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 82 [xmlDocfrag, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 83 [doctype, 0] -FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 85 [doctype, 1] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 86 [foreignDoctype, 0] -PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 87 [xmlDoctype, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 0 [paras[0].firstChild, -1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 1 [paras[0].firstChild, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 2 [paras[0].firstChild, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 3 [paras[0].firstChild, 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 4 [paras[0].firstChild, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 5 [paras[0].firstChild, 9] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 6 [paras[0].firstChild, 10] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 8 [paras[1].firstChild, -1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 9 [paras[1].firstChild, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 10 [paras[1].firstChild, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 11 [paras[1].firstChild, 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 12 [paras[1].firstChild, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 13 [paras[1].firstChild, 9] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 14 [paras[1].firstChild, 10] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 24 [document.documentElement, -1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 25 [document.documentElement, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 26 [document.documentElement, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 27 [document.documentElement, 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 28 [document.documentElement, 7] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 29 [document.head, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 30 [document.body, 3] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 33 [foreignDoc.head, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 34 [foreignDoc.body, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 35 [paras[0], 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 36 [paras[0], 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 37 [paras[0], 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 38 [paras[1], 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 39 [paras[1], 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 40 [paras[1], 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 41 [detachedPara1, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 42 [detachedPara1, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 43 [testDiv, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 44 [testDiv, 3] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 45 [document, -1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 46 [document, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 47 [document, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 48 [document, 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 49 [document, 3] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 50 [comment, -1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 51 [comment, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 52 [comment, 4] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 53 [comment, 96] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 54 [foreignDoc, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 55 [foreignDoc, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 56 [foreignComment, 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 57 [foreignTextNode, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 58 [foreignTextNode, 36] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 59 [xmlDoc, -1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 60 [xmlDoc, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 61 [xmlDoc, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 62 [xmlDoc, 5] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 63 [xmlComment, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 64 [xmlComment, 4] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 65 [processingInstruction, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 66 [processingInstruction, 5] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 67 [processingInstruction, 9] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 68 [detachedTextNode, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 69 [detachedTextNode, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 75 [detachedComment, 3] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 76 [detachedComment, 5] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 77 [detachedForeignComment, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 78 [detachedForeignComment, 4] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 79 [detachedXmlComment, 2] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 80 [docfrag, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 81 [foreignDocfrag, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 82 [xmlDocfrag, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 83 [doctype, 0] -FAIL Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 85 [doctype, 1] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 86 [foreignDoctype, 0] -PASS Range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 87 [xmlDoctype, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 0 [paras[0].firstChild, -1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 1 [paras[0].firstChild, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 2 [paras[0].firstChild, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 3 [paras[0].firstChild, 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 4 [paras[0].firstChild, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 5 [paras[0].firstChild, 9] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 6 [paras[0].firstChild, 10] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 8 [paras[1].firstChild, -1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 9 [paras[1].firstChild, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 10 [paras[1].firstChild, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 11 [paras[1].firstChild, 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 12 [paras[1].firstChild, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 13 [paras[1].firstChild, 9] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 14 [paras[1].firstChild, 10] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 24 [document.documentElement, -1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 25 [document.documentElement, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 26 [document.documentElement, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 27 [document.documentElement, 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 28 [document.documentElement, 7] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 29 [document.head, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 30 [document.body, 3] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 33 [foreignDoc.head, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 34 [foreignDoc.body, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 35 [paras[0], 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 36 [paras[0], 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 37 [paras[0], 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 38 [paras[1], 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 39 [paras[1], 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 40 [paras[1], 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 41 [detachedPara1, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 42 [detachedPara1, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 43 [testDiv, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 44 [testDiv, 3] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 45 [document, -1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 46 [document, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 47 [document, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 48 [document, 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 49 [document, 3] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 50 [comment, -1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 51 [comment, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 52 [comment, 4] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 53 [comment, 96] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 54 [foreignDoc, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 55 [foreignDoc, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 56 [foreignComment, 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 57 [foreignTextNode, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 58 [foreignTextNode, 36] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 59 [xmlDoc, -1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 60 [xmlDoc, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 61 [xmlDoc, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 62 [xmlDoc, 5] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 63 [xmlComment, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 64 [xmlComment, 4] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 65 [processingInstruction, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 66 [processingInstruction, 5] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 67 [processingInstruction, 9] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 68 [detachedTextNode, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 69 [detachedTextNode, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 75 [detachedComment, 3] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 76 [detachedComment, 5] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 77 [detachedForeignComment, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 78 [detachedForeignComment, 4] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 79 [detachedXmlComment, 2] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 80 [docfrag, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 81 [foreignDocfrag, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 82 [xmlDocfrag, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 83 [doctype, 0] -FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 85 [doctype, 1] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 86 [foreignDoctype, 0] -PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 87 [xmlDoctype, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 0 [paras[0].firstChild, -1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 1 [paras[0].firstChild, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 2 [paras[0].firstChild, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 3 [paras[0].firstChild, 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 4 [paras[0].firstChild, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 5 [paras[0].firstChild, 9] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 6 [paras[0].firstChild, 10] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 7 [paras[0].firstChild, 65535] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 8 [paras[1].firstChild, -1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 9 [paras[1].firstChild, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 10 [paras[1].firstChild, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 11 [paras[1].firstChild, 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 12 [paras[1].firstChild, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 13 [paras[1].firstChild, 9] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 14 [paras[1].firstChild, 10] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 15 [paras[1].firstChild, 65535] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 16 [detachedPara1.firstChild, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 17 [detachedPara1.firstChild, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 18 [detachedPara1.firstChild, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 19 [detachedPara1.firstChild, 9] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 20 [foreignPara1.firstChild, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 21 [foreignPara1.firstChild, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 22 [foreignPara1.firstChild, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 23 [foreignPara1.firstChild, 9] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 24 [document.documentElement, -1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 25 [document.documentElement, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 26 [document.documentElement, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 27 [document.documentElement, 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 28 [document.documentElement, 7] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 29 [document.head, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 30 [document.body, 3] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 31 [foreignDoc.documentElement, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 32 [foreignDoc.documentElement, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 33 [foreignDoc.head, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 34 [foreignDoc.body, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 35 [paras[0], 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 36 [paras[0], 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 37 [paras[0], 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 38 [paras[1], 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 39 [paras[1], 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 40 [paras[1], 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 41 [detachedPara1, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 42 [detachedPara1, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 43 [testDiv, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 44 [testDiv, 3] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 45 [document, -1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 46 [document, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 47 [document, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 48 [document, 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 49 [document, 3] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 50 [comment, -1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 51 [comment, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 52 [comment, 4] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 53 [comment, 96] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 54 [foreignDoc, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 55 [foreignDoc, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 56 [foreignComment, 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 57 [foreignTextNode, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 58 [foreignTextNode, 36] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 59 [xmlDoc, -1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 60 [xmlDoc, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 61 [xmlDoc, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 62 [xmlDoc, 5] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 63 [xmlComment, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 64 [xmlComment, 4] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 65 [processingInstruction, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 66 [processingInstruction, 5] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 67 [processingInstruction, 9] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 68 [detachedTextNode, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 69 [detachedTextNode, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 70 [detachedForeignTextNode, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 71 [detachedForeignTextNode, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 72 [detachedXmlTextNode, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 73 [detachedXmlTextNode, 8] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 74 [detachedProcessingInstruction, 12] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 75 [detachedComment, 3] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 76 [detachedComment, 5] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 77 [detachedForeignComment, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 78 [detachedForeignComment, 4] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 79 [detachedXmlComment, 2] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 80 [docfrag, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 81 [foreignDocfrag, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 82 [xmlDocfrag, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 83 [doctype, 0] -FAIL Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 85 [doctype, 1] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 86 [foreignDoctype, 0] -PASS Range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 87 [xmlDoctype, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 0 [paras[0].firstChild, -1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 1 [paras[0].firstChild, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 2 [paras[0].firstChild, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 3 [paras[0].firstChild, 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 4 [paras[0].firstChild, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 5 [paras[0].firstChild, 9] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 6 [paras[0].firstChild, 10] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 8 [paras[1].firstChild, -1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 9 [paras[1].firstChild, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 10 [paras[1].firstChild, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 11 [paras[1].firstChild, 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 12 [paras[1].firstChild, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 13 [paras[1].firstChild, 9] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 14 [paras[1].firstChild, 10] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 24 [document.documentElement, -1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 25 [document.documentElement, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 26 [document.documentElement, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 27 [document.documentElement, 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 28 [document.documentElement, 7] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 29 [document.head, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 30 [document.body, 3] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 33 [foreignDoc.head, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 34 [foreignDoc.body, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 35 [paras[0], 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 36 [paras[0], 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 37 [paras[0], 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 38 [paras[1], 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 39 [paras[1], 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 40 [paras[1], 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 41 [detachedPara1, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 42 [detachedPara1, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 43 [testDiv, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 44 [testDiv, 3] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 45 [document, -1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 46 [document, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 47 [document, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 48 [document, 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 49 [document, 3] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 50 [comment, -1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 51 [comment, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 52 [comment, 4] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 53 [comment, 96] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 54 [foreignDoc, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 55 [foreignDoc, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 56 [foreignComment, 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 57 [foreignTextNode, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 58 [foreignTextNode, 36] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 59 [xmlDoc, -1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 60 [xmlDoc, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 61 [xmlDoc, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 62 [xmlDoc, 5] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 63 [xmlComment, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 64 [xmlComment, 4] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 65 [processingInstruction, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 66 [processingInstruction, 5] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 67 [processingInstruction, 9] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 68 [detachedTextNode, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 69 [detachedTextNode, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 75 [detachedComment, 3] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 76 [detachedComment, 5] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 77 [detachedForeignComment, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 78 [detachedForeignComment, 4] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 79 [detachedXmlComment, 2] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 80 [docfrag, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 81 [foreignDocfrag, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 82 [xmlDocfrag, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 83 [doctype, 0] -FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 85 [doctype, 1] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 86 [foreignDoctype, 0] -PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 87 [xmlDoctype, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 0 [paras[0].firstChild, -1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 1 [paras[0].firstChild, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 2 [paras[0].firstChild, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 3 [paras[0].firstChild, 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 4 [paras[0].firstChild, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 5 [paras[0].firstChild, 9] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 6 [paras[0].firstChild, 10] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 8 [paras[1].firstChild, -1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 9 [paras[1].firstChild, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 10 [paras[1].firstChild, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 11 [paras[1].firstChild, 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 12 [paras[1].firstChild, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 13 [paras[1].firstChild, 9] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 14 [paras[1].firstChild, 10] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 24 [document.documentElement, -1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 25 [document.documentElement, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 26 [document.documentElement, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 27 [document.documentElement, 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 28 [document.documentElement, 7] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 29 [document.head, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 30 [document.body, 3] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 33 [foreignDoc.head, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 34 [foreignDoc.body, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 35 [paras[0], 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 36 [paras[0], 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 37 [paras[0], 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 38 [paras[1], 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 39 [paras[1], 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 40 [paras[1], 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 41 [detachedPara1, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 42 [detachedPara1, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 43 [testDiv, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 44 [testDiv, 3] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 45 [document, -1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 46 [document, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 47 [document, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 48 [document, 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 49 [document, 3] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 50 [comment, -1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 51 [comment, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 52 [comment, 4] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 53 [comment, 96] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 54 [foreignDoc, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 55 [foreignDoc, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 56 [foreignComment, 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 57 [foreignTextNode, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 58 [foreignTextNode, 36] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 59 [xmlDoc, -1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 60 [xmlDoc, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 61 [xmlDoc, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 62 [xmlDoc, 5] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 63 [xmlComment, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 64 [xmlComment, 4] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 65 [processingInstruction, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 66 [processingInstruction, 5] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 67 [processingInstruction, 9] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 68 [detachedTextNode, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 69 [detachedTextNode, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 75 [detachedComment, 3] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 76 [detachedComment, 5] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 77 [detachedForeignComment, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 78 [detachedForeignComment, 4] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 79 [detachedXmlComment, 2] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 80 [docfrag, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 81 [foreignDocfrag, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 82 [xmlDocfrag, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 83 [doctype, 0] -FAIL Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 85 [doctype, 1] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 86 [foreignDoctype, 0] -PASS Range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], point 87 [xmlDoctype, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 0 [paras[0].firstChild, -1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 1 [paras[0].firstChild, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 2 [paras[0].firstChild, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 3 [paras[0].firstChild, 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 4 [paras[0].firstChild, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 5 [paras[0].firstChild, 9] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 6 [paras[0].firstChild, 10] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 8 [paras[1].firstChild, -1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 9 [paras[1].firstChild, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 10 [paras[1].firstChild, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 11 [paras[1].firstChild, 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 12 [paras[1].firstChild, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 13 [paras[1].firstChild, 9] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 14 [paras[1].firstChild, 10] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 24 [document.documentElement, -1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 25 [document.documentElement, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 26 [document.documentElement, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 27 [document.documentElement, 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 28 [document.documentElement, 7] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 29 [document.head, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 30 [document.body, 3] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 33 [foreignDoc.head, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 34 [foreignDoc.body, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 35 [paras[0], 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 36 [paras[0], 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 37 [paras[0], 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 38 [paras[1], 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 39 [paras[1], 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 40 [paras[1], 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 41 [detachedPara1, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 42 [detachedPara1, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 43 [testDiv, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 44 [testDiv, 3] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 45 [document, -1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 46 [document, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 47 [document, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 48 [document, 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 49 [document, 3] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 50 [comment, -1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 51 [comment, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 52 [comment, 4] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 53 [comment, 96] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 54 [foreignDoc, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 55 [foreignDoc, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 56 [foreignComment, 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 57 [foreignTextNode, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 58 [foreignTextNode, 36] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 59 [xmlDoc, -1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 60 [xmlDoc, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 61 [xmlDoc, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 62 [xmlDoc, 5] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 63 [xmlComment, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 64 [xmlComment, 4] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 65 [processingInstruction, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 66 [processingInstruction, 5] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 67 [processingInstruction, 9] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 68 [detachedTextNode, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 69 [detachedTextNode, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 75 [detachedComment, 3] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 76 [detachedComment, 5] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 77 [detachedForeignComment, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 78 [detachedForeignComment, 4] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 79 [detachedXmlComment, 2] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 80 [docfrag, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 81 [foreignDocfrag, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 82 [xmlDocfrag, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 83 [doctype, 0] -FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 85 [doctype, 1] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 86 [foreignDoctype, 0] -PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], point 87 [xmlDoctype, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 0 [paras[0].firstChild, -1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 1 [paras[0].firstChild, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 2 [paras[0].firstChild, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 3 [paras[0].firstChild, 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 4 [paras[0].firstChild, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 5 [paras[0].firstChild, 9] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 6 [paras[0].firstChild, 10] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 7 [paras[0].firstChild, 65535] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 8 [paras[1].firstChild, -1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 9 [paras[1].firstChild, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 10 [paras[1].firstChild, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 11 [paras[1].firstChild, 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 12 [paras[1].firstChild, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 13 [paras[1].firstChild, 9] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 14 [paras[1].firstChild, 10] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 15 [paras[1].firstChild, 65535] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 16 [detachedPara1.firstChild, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 17 [detachedPara1.firstChild, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 18 [detachedPara1.firstChild, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 19 [detachedPara1.firstChild, 9] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 20 [foreignPara1.firstChild, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 21 [foreignPara1.firstChild, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 22 [foreignPara1.firstChild, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 23 [foreignPara1.firstChild, 9] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 24 [document.documentElement, -1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 25 [document.documentElement, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 26 [document.documentElement, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 27 [document.documentElement, 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 28 [document.documentElement, 7] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 29 [document.head, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 30 [document.body, 3] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 31 [foreignDoc.documentElement, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 32 [foreignDoc.documentElement, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 33 [foreignDoc.head, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 34 [foreignDoc.body, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 35 [paras[0], 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 36 [paras[0], 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 37 [paras[0], 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 38 [paras[1], 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 39 [paras[1], 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 40 [paras[1], 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 41 [detachedPara1, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 42 [detachedPara1, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 43 [testDiv, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 44 [testDiv, 3] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 45 [document, -1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 46 [document, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 47 [document, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 48 [document, 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 49 [document, 3] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 50 [comment, -1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 51 [comment, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 52 [comment, 4] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 53 [comment, 96] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 54 [foreignDoc, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 55 [foreignDoc, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 56 [foreignComment, 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 57 [foreignTextNode, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 58 [foreignTextNode, 36] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 59 [xmlDoc, -1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 60 [xmlDoc, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 61 [xmlDoc, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 62 [xmlDoc, 5] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 63 [xmlComment, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 64 [xmlComment, 4] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 65 [processingInstruction, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 66 [processingInstruction, 5] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 67 [processingInstruction, 9] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 68 [detachedTextNode, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 69 [detachedTextNode, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 70 [detachedForeignTextNode, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 71 [detachedForeignTextNode, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 72 [detachedXmlTextNode, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 73 [detachedXmlTextNode, 8] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 74 [detachedProcessingInstruction, 12] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 75 [detachedComment, 3] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 76 [detachedComment, 5] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 77 [detachedForeignComment, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 78 [detachedForeignComment, 4] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 79 [detachedXmlComment, 2] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 80 [docfrag, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 81 [foreignDocfrag, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 82 [xmlDocfrag, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 83 [doctype, 0] -FAIL Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 85 [doctype, 1] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 86 [foreignDoctype, 0] -PASS Range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 87 [xmlDoctype, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 0 [paras[0].firstChild, -1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 1 [paras[0].firstChild, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 2 [paras[0].firstChild, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 3 [paras[0].firstChild, 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 4 [paras[0].firstChild, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 5 [paras[0].firstChild, 9] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 6 [paras[0].firstChild, 10] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 8 [paras[1].firstChild, -1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 9 [paras[1].firstChild, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 10 [paras[1].firstChild, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 11 [paras[1].firstChild, 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 12 [paras[1].firstChild, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 13 [paras[1].firstChild, 9] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 14 [paras[1].firstChild, 10] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 24 [document.documentElement, -1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 25 [document.documentElement, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 26 [document.documentElement, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 27 [document.documentElement, 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 28 [document.documentElement, 7] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 29 [document.head, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 30 [document.body, 3] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 33 [foreignDoc.head, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 34 [foreignDoc.body, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 35 [paras[0], 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 36 [paras[0], 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 37 [paras[0], 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 38 [paras[1], 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 39 [paras[1], 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 40 [paras[1], 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 41 [detachedPara1, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 42 [detachedPara1, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 43 [testDiv, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 44 [testDiv, 3] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 45 [document, -1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 46 [document, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 47 [document, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 48 [document, 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 49 [document, 3] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 50 [comment, -1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 51 [comment, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 52 [comment, 4] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 53 [comment, 96] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 54 [foreignDoc, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 55 [foreignDoc, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 56 [foreignComment, 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 57 [foreignTextNode, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 58 [foreignTextNode, 36] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 59 [xmlDoc, -1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 60 [xmlDoc, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 61 [xmlDoc, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 62 [xmlDoc, 5] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 63 [xmlComment, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 64 [xmlComment, 4] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 65 [processingInstruction, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 66 [processingInstruction, 5] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 67 [processingInstruction, 9] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 68 [detachedTextNode, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 69 [detachedTextNode, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 75 [detachedComment, 3] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 76 [detachedComment, 5] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 77 [detachedForeignComment, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 78 [detachedForeignComment, 4] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 79 [detachedXmlComment, 2] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 80 [docfrag, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 81 [foreignDocfrag, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 82 [xmlDocfrag, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 83 [doctype, 0] -FAIL Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 85 [doctype, 1] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 86 [foreignDoctype, 0] -PASS Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 87 [xmlDoctype, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 0 [paras[0].firstChild, -1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 1 [paras[0].firstChild, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 2 [paras[0].firstChild, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 3 [paras[0].firstChild, 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 4 [paras[0].firstChild, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 5 [paras[0].firstChild, 9] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 6 [paras[0].firstChild, 10] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 8 [paras[1].firstChild, -1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 9 [paras[1].firstChild, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 10 [paras[1].firstChild, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 11 [paras[1].firstChild, 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 12 [paras[1].firstChild, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 13 [paras[1].firstChild, 9] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 14 [paras[1].firstChild, 10] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 24 [document.documentElement, -1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 25 [document.documentElement, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 26 [document.documentElement, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 27 [document.documentElement, 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 28 [document.documentElement, 7] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 29 [document.head, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 30 [document.body, 3] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 33 [foreignDoc.head, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 34 [foreignDoc.body, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 35 [paras[0], 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 36 [paras[0], 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 37 [paras[0], 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 38 [paras[1], 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 39 [paras[1], 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 40 [paras[1], 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 41 [detachedPara1, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 42 [detachedPara1, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 43 [testDiv, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 44 [testDiv, 3] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 45 [document, -1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 46 [document, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 47 [document, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 48 [document, 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 49 [document, 3] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 50 [comment, -1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 51 [comment, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 52 [comment, 4] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 53 [comment, 96] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 54 [foreignDoc, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 55 [foreignDoc, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 56 [foreignComment, 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 57 [foreignTextNode, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 58 [foreignTextNode, 36] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 59 [xmlDoc, -1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 60 [xmlDoc, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 61 [xmlDoc, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 62 [xmlDoc, 5] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 63 [xmlComment, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 64 [xmlComment, 4] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 65 [processingInstruction, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 66 [processingInstruction, 5] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 67 [processingInstruction, 9] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 68 [detachedTextNode, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 69 [detachedTextNode, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 75 [detachedComment, 3] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 76 [detachedComment, 5] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 77 [detachedForeignComment, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 78 [detachedForeignComment, 4] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 79 [detachedXmlComment, 2] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 80 [docfrag, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 81 [foreignDocfrag, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 82 [xmlDocfrag, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 83 [doctype, 0] -FAIL Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 85 [doctype, 1] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 86 [foreignDoctype, 0] -PASS Range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], point 87 [xmlDoctype, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 0 [paras[0].firstChild, -1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 1 [paras[0].firstChild, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 2 [paras[0].firstChild, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 3 [paras[0].firstChild, 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 4 [paras[0].firstChild, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 5 [paras[0].firstChild, 9] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 6 [paras[0].firstChild, 10] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 8 [paras[1].firstChild, -1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 9 [paras[1].firstChild, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 10 [paras[1].firstChild, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 11 [paras[1].firstChild, 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 12 [paras[1].firstChild, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 13 [paras[1].firstChild, 9] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 14 [paras[1].firstChild, 10] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 24 [document.documentElement, -1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 25 [document.documentElement, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 26 [document.documentElement, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 27 [document.documentElement, 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 28 [document.documentElement, 7] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 29 [document.head, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 30 [document.body, 3] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 33 [foreignDoc.head, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 34 [foreignDoc.body, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 35 [paras[0], 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 36 [paras[0], 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 37 [paras[0], 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 38 [paras[1], 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 39 [paras[1], 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 40 [paras[1], 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 41 [detachedPara1, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 42 [detachedPara1, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 43 [testDiv, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 44 [testDiv, 3] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 45 [document, -1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 46 [document, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 47 [document, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 48 [document, 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 49 [document, 3] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 50 [comment, -1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 51 [comment, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 52 [comment, 4] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 53 [comment, 96] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 54 [foreignDoc, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 55 [foreignDoc, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 56 [foreignComment, 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 57 [foreignTextNode, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 58 [foreignTextNode, 36] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 59 [xmlDoc, -1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 60 [xmlDoc, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 61 [xmlDoc, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 62 [xmlDoc, 5] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 63 [xmlComment, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 64 [xmlComment, 4] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 65 [processingInstruction, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 66 [processingInstruction, 5] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 67 [processingInstruction, 9] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 68 [detachedTextNode, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 69 [detachedTextNode, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 75 [detachedComment, 3] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 76 [detachedComment, 5] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 77 [detachedForeignComment, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 78 [detachedForeignComment, 4] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 79 [detachedXmlComment, 2] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 80 [docfrag, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 81 [foreignDocfrag, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 82 [xmlDocfrag, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 83 [doctype, 0] -FAIL Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 85 [doctype, 1] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 86 [foreignDoctype, 0] -PASS Range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 87 [xmlDoctype, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 0 [paras[0].firstChild, -1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 1 [paras[0].firstChild, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 2 [paras[0].firstChild, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 3 [paras[0].firstChild, 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 4 [paras[0].firstChild, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 5 [paras[0].firstChild, 9] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 6 [paras[0].firstChild, 10] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 8 [paras[1].firstChild, -1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 9 [paras[1].firstChild, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 10 [paras[1].firstChild, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 11 [paras[1].firstChild, 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 12 [paras[1].firstChild, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 13 [paras[1].firstChild, 9] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 14 [paras[1].firstChild, 10] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 24 [document.documentElement, -1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 25 [document.documentElement, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 26 [document.documentElement, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 27 [document.documentElement, 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 28 [document.documentElement, 7] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 29 [document.head, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 30 [document.body, 3] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 33 [foreignDoc.head, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 34 [foreignDoc.body, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 35 [paras[0], 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 36 [paras[0], 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 37 [paras[0], 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 38 [paras[1], 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 39 [paras[1], 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 40 [paras[1], 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 41 [detachedPara1, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 42 [detachedPara1, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 43 [testDiv, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 44 [testDiv, 3] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 45 [document, -1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 46 [document, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 47 [document, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 48 [document, 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 49 [document, 3] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 50 [comment, -1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 51 [comment, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 52 [comment, 4] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 53 [comment, 96] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 54 [foreignDoc, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 55 [foreignDoc, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 56 [foreignComment, 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 57 [foreignTextNode, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 58 [foreignTextNode, 36] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 59 [xmlDoc, -1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 60 [xmlDoc, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 61 [xmlDoc, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 62 [xmlDoc, 5] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 63 [xmlComment, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 64 [xmlComment, 4] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 65 [processingInstruction, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 66 [processingInstruction, 5] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 67 [processingInstruction, 9] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 68 [detachedTextNode, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 69 [detachedTextNode, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 75 [detachedComment, 3] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 76 [detachedComment, 5] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 77 [detachedForeignComment, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 78 [detachedForeignComment, 4] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 79 [detachedXmlComment, 2] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 80 [docfrag, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 81 [foreignDocfrag, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 82 [xmlDocfrag, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 83 [doctype, 0] -FAIL Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 85 [doctype, 1] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 86 [foreignDoctype, 0] -PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 87 [xmlDoctype, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 0 [paras[0].firstChild, -1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 1 [paras[0].firstChild, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 2 [paras[0].firstChild, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 3 [paras[0].firstChild, 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 4 [paras[0].firstChild, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 5 [paras[0].firstChild, 9] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 6 [paras[0].firstChild, 10] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 8 [paras[1].firstChild, -1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 9 [paras[1].firstChild, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 10 [paras[1].firstChild, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 11 [paras[1].firstChild, 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 12 [paras[1].firstChild, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 13 [paras[1].firstChild, 9] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 14 [paras[1].firstChild, 10] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 24 [document.documentElement, -1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 25 [document.documentElement, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 26 [document.documentElement, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 27 [document.documentElement, 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 28 [document.documentElement, 7] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 29 [document.head, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 30 [document.body, 3] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 33 [foreignDoc.head, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 34 [foreignDoc.body, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 35 [paras[0], 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 36 [paras[0], 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 37 [paras[0], 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 38 [paras[1], 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 39 [paras[1], 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 40 [paras[1], 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 41 [detachedPara1, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 42 [detachedPara1, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 43 [testDiv, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 44 [testDiv, 3] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 45 [document, -1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 46 [document, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 47 [document, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 48 [document, 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 49 [document, 3] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 50 [comment, -1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 51 [comment, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 52 [comment, 4] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 53 [comment, 96] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 54 [foreignDoc, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 55 [foreignDoc, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 56 [foreignComment, 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 57 [foreignTextNode, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 58 [foreignTextNode, 36] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 59 [xmlDoc, -1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 60 [xmlDoc, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 61 [xmlDoc, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 62 [xmlDoc, 5] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 63 [xmlComment, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 64 [xmlComment, 4] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 65 [processingInstruction, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 66 [processingInstruction, 5] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 67 [processingInstruction, 9] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 68 [detachedTextNode, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 69 [detachedTextNode, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 75 [detachedComment, 3] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 76 [detachedComment, 5] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 77 [detachedForeignComment, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 78 [detachedForeignComment, 4] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 79 [detachedXmlComment, 2] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 80 [docfrag, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 81 [foreignDocfrag, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 82 [xmlDocfrag, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 83 [doctype, 0] -FAIL Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 85 [doctype, 1] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 86 [foreignDoctype, 0] -PASS Range 13 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], point 87 [xmlDoctype, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 0 [paras[0].firstChild, -1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 1 [paras[0].firstChild, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 2 [paras[0].firstChild, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 3 [paras[0].firstChild, 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 4 [paras[0].firstChild, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 5 [paras[0].firstChild, 9] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 6 [paras[0].firstChild, 10] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 8 [paras[1].firstChild, -1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 9 [paras[1].firstChild, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 10 [paras[1].firstChild, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 11 [paras[1].firstChild, 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 12 [paras[1].firstChild, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 13 [paras[1].firstChild, 9] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 14 [paras[1].firstChild, 10] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 24 [document.documentElement, -1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 25 [document.documentElement, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 26 [document.documentElement, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 27 [document.documentElement, 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 28 [document.documentElement, 7] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 29 [document.head, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 30 [document.body, 3] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 33 [foreignDoc.head, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 34 [foreignDoc.body, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 35 [paras[0], 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 36 [paras[0], 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 37 [paras[0], 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 38 [paras[1], 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 39 [paras[1], 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 40 [paras[1], 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 41 [detachedPara1, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 42 [detachedPara1, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 43 [testDiv, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 44 [testDiv, 3] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 45 [document, -1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 46 [document, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 47 [document, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 48 [document, 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 49 [document, 3] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 50 [comment, -1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 51 [comment, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 52 [comment, 4] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 53 [comment, 96] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 54 [foreignDoc, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 55 [foreignDoc, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 56 [foreignComment, 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 57 [foreignTextNode, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 58 [foreignTextNode, 36] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 59 [xmlDoc, -1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 60 [xmlDoc, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 61 [xmlDoc, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 62 [xmlDoc, 5] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 63 [xmlComment, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 64 [xmlComment, 4] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 65 [processingInstruction, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 66 [processingInstruction, 5] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 67 [processingInstruction, 9] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 68 [detachedTextNode, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 69 [detachedTextNode, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 75 [detachedComment, 3] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 76 [detachedComment, 5] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 77 [detachedForeignComment, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 78 [detachedForeignComment, 4] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 79 [detachedXmlComment, 2] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 80 [docfrag, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 81 [foreignDocfrag, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 82 [xmlDocfrag, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 83 [doctype, 0] -FAIL Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 85 [doctype, 1] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 86 [foreignDoctype, 0] -PASS Range 14 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 87 [xmlDoctype, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 0 [paras[0].firstChild, -1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 1 [paras[0].firstChild, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 2 [paras[0].firstChild, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 3 [paras[0].firstChild, 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 4 [paras[0].firstChild, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 5 [paras[0].firstChild, 9] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 6 [paras[0].firstChild, 10] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 8 [paras[1].firstChild, -1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 9 [paras[1].firstChild, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 10 [paras[1].firstChild, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 11 [paras[1].firstChild, 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 12 [paras[1].firstChild, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 13 [paras[1].firstChild, 9] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 14 [paras[1].firstChild, 10] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 24 [document.documentElement, -1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 25 [document.documentElement, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 26 [document.documentElement, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 27 [document.documentElement, 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 28 [document.documentElement, 7] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 29 [document.head, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 30 [document.body, 3] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 33 [foreignDoc.head, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 34 [foreignDoc.body, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 35 [paras[0], 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 36 [paras[0], 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 37 [paras[0], 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 38 [paras[1], 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 39 [paras[1], 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 40 [paras[1], 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 41 [detachedPara1, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 42 [detachedPara1, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 43 [testDiv, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 44 [testDiv, 3] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 45 [document, -1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 46 [document, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 47 [document, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 48 [document, 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 49 [document, 3] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 50 [comment, -1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 51 [comment, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 52 [comment, 4] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 53 [comment, 96] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 54 [foreignDoc, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 55 [foreignDoc, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 56 [foreignComment, 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 57 [foreignTextNode, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 58 [foreignTextNode, 36] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 59 [xmlDoc, -1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 60 [xmlDoc, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 61 [xmlDoc, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 62 [xmlDoc, 5] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 63 [xmlComment, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 64 [xmlComment, 4] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 65 [processingInstruction, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 66 [processingInstruction, 5] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 67 [processingInstruction, 9] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 68 [detachedTextNode, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 69 [detachedTextNode, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 75 [detachedComment, 3] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 76 [detachedComment, 5] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 77 [detachedForeignComment, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 78 [detachedForeignComment, 4] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 79 [detachedXmlComment, 2] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 80 [docfrag, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 81 [foreignDocfrag, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 82 [xmlDocfrag, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 83 [doctype, 0] -FAIL Range 15 [document.documentElement, 0, document.documentElement, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 85 [doctype, 1] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 86 [foreignDoctype, 0] -PASS Range 15 [document.documentElement, 0, document.documentElement, 1], point 87 [xmlDoctype, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 0 [paras[0].firstChild, -1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 1 [paras[0].firstChild, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 2 [paras[0].firstChild, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 3 [paras[0].firstChild, 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 4 [paras[0].firstChild, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 5 [paras[0].firstChild, 9] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 6 [paras[0].firstChild, 10] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 7 [paras[0].firstChild, 65535] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 8 [paras[1].firstChild, -1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 9 [paras[1].firstChild, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 10 [paras[1].firstChild, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 11 [paras[1].firstChild, 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 12 [paras[1].firstChild, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 13 [paras[1].firstChild, 9] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 14 [paras[1].firstChild, 10] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 15 [paras[1].firstChild, 65535] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 16 [detachedPara1.firstChild, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 17 [detachedPara1.firstChild, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 18 [detachedPara1.firstChild, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 19 [detachedPara1.firstChild, 9] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 20 [foreignPara1.firstChild, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 21 [foreignPara1.firstChild, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 22 [foreignPara1.firstChild, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 23 [foreignPara1.firstChild, 9] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 24 [document.documentElement, -1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 25 [document.documentElement, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 26 [document.documentElement, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 27 [document.documentElement, 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 28 [document.documentElement, 7] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 29 [document.head, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 30 [document.body, 3] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 31 [foreignDoc.documentElement, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 32 [foreignDoc.documentElement, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 33 [foreignDoc.head, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 34 [foreignDoc.body, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 35 [paras[0], 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 36 [paras[0], 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 37 [paras[0], 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 38 [paras[1], 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 39 [paras[1], 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 40 [paras[1], 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 41 [detachedPara1, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 42 [detachedPara1, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 43 [testDiv, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 44 [testDiv, 3] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 45 [document, -1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 46 [document, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 47 [document, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 48 [document, 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 49 [document, 3] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 50 [comment, -1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 51 [comment, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 52 [comment, 4] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 53 [comment, 96] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 54 [foreignDoc, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 55 [foreignDoc, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 56 [foreignComment, 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 57 [foreignTextNode, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 58 [foreignTextNode, 36] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 59 [xmlDoc, -1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 60 [xmlDoc, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 61 [xmlDoc, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 62 [xmlDoc, 5] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 63 [xmlComment, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 64 [xmlComment, 4] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 65 [processingInstruction, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 66 [processingInstruction, 5] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 67 [processingInstruction, 9] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 68 [detachedTextNode, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 69 [detachedTextNode, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 70 [detachedForeignTextNode, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 71 [detachedForeignTextNode, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 72 [detachedXmlTextNode, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 73 [detachedXmlTextNode, 8] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 74 [detachedProcessingInstruction, 12] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 75 [detachedComment, 3] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 76 [detachedComment, 5] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 77 [detachedForeignComment, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 78 [detachedForeignComment, 4] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 79 [detachedXmlComment, 2] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 80 [docfrag, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 81 [foreignDocfrag, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 82 [xmlDocfrag, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 83 [doctype, 0] -FAIL Range 16 [document.documentElement, 0, document.documentElement, 2], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 85 [doctype, 1] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 86 [foreignDoctype, 0] -PASS Range 16 [document.documentElement, 0, document.documentElement, 2], point 87 [xmlDoctype, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 0 [paras[0].firstChild, -1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 1 [paras[0].firstChild, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 2 [paras[0].firstChild, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 3 [paras[0].firstChild, 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 4 [paras[0].firstChild, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 5 [paras[0].firstChild, 9] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 6 [paras[0].firstChild, 10] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 7 [paras[0].firstChild, 65535] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 8 [paras[1].firstChild, -1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 9 [paras[1].firstChild, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 10 [paras[1].firstChild, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 11 [paras[1].firstChild, 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 12 [paras[1].firstChild, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 13 [paras[1].firstChild, 9] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 14 [paras[1].firstChild, 10] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 15 [paras[1].firstChild, 65535] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 16 [detachedPara1.firstChild, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 17 [detachedPara1.firstChild, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 18 [detachedPara1.firstChild, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 19 [detachedPara1.firstChild, 9] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 20 [foreignPara1.firstChild, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 21 [foreignPara1.firstChild, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 22 [foreignPara1.firstChild, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 23 [foreignPara1.firstChild, 9] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 24 [document.documentElement, -1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 25 [document.documentElement, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 26 [document.documentElement, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 27 [document.documentElement, 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 28 [document.documentElement, 7] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 29 [document.head, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 30 [document.body, 3] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 31 [foreignDoc.documentElement, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 32 [foreignDoc.documentElement, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 33 [foreignDoc.head, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 34 [foreignDoc.body, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 35 [paras[0], 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 36 [paras[0], 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 37 [paras[0], 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 38 [paras[1], 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 39 [paras[1], 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 40 [paras[1], 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 41 [detachedPara1, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 42 [detachedPara1, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 43 [testDiv, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 44 [testDiv, 3] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 45 [document, -1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 46 [document, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 47 [document, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 48 [document, 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 49 [document, 3] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 50 [comment, -1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 51 [comment, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 52 [comment, 4] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 53 [comment, 96] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 54 [foreignDoc, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 55 [foreignDoc, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 56 [foreignComment, 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 57 [foreignTextNode, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 58 [foreignTextNode, 36] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 59 [xmlDoc, -1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 60 [xmlDoc, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 61 [xmlDoc, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 62 [xmlDoc, 5] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 63 [xmlComment, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 64 [xmlComment, 4] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 65 [processingInstruction, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 66 [processingInstruction, 5] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 67 [processingInstruction, 9] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 68 [detachedTextNode, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 69 [detachedTextNode, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 70 [detachedForeignTextNode, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 71 [detachedForeignTextNode, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 72 [detachedXmlTextNode, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 73 [detachedXmlTextNode, 8] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 74 [detachedProcessingInstruction, 12] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 75 [detachedComment, 3] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 76 [detachedComment, 5] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 77 [detachedForeignComment, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 78 [detachedForeignComment, 4] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 79 [detachedXmlComment, 2] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 80 [docfrag, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 81 [foreignDocfrag, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 82 [xmlDocfrag, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 83 [doctype, 0] -FAIL Range 17 [document.documentElement, 1, document.documentElement, 2], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 85 [doctype, 1] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 86 [foreignDoctype, 0] -PASS Range 17 [document.documentElement, 1, document.documentElement, 2], point 87 [xmlDoctype, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 0 [paras[0].firstChild, -1] -PASS Range 18 [document.head, 1, document.head, 1], point 1 [paras[0].firstChild, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 2 [paras[0].firstChild, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 3 [paras[0].firstChild, 2] -PASS Range 18 [document.head, 1, document.head, 1], point 4 [paras[0].firstChild, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 5 [paras[0].firstChild, 9] -PASS Range 18 [document.head, 1, document.head, 1], point 6 [paras[0].firstChild, 10] -PASS Range 18 [document.head, 1, document.head, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 18 [document.head, 1, document.head, 1], point 8 [paras[1].firstChild, -1] -PASS Range 18 [document.head, 1, document.head, 1], point 9 [paras[1].firstChild, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 10 [paras[1].firstChild, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 11 [paras[1].firstChild, 2] -PASS Range 18 [document.head, 1, document.head, 1], point 12 [paras[1].firstChild, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 13 [paras[1].firstChild, 9] -PASS Range 18 [document.head, 1, document.head, 1], point 14 [paras[1].firstChild, 10] -PASS Range 18 [document.head, 1, document.head, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 18 [document.head, 1, document.head, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 18 [document.head, 1, document.head, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 18 [document.head, 1, document.head, 1], point 24 [document.documentElement, -1] -PASS Range 18 [document.head, 1, document.head, 1], point 25 [document.documentElement, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 26 [document.documentElement, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 27 [document.documentElement, 2] -PASS Range 18 [document.head, 1, document.head, 1], point 28 [document.documentElement, 7] -PASS Range 18 [document.head, 1, document.head, 1], point 29 [document.head, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 30 [document.body, 3] -PASS Range 18 [document.head, 1, document.head, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 33 [foreignDoc.head, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 34 [foreignDoc.body, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 35 [paras[0], 0] -PASS Range 18 [document.head, 1, document.head, 1], point 36 [paras[0], 1] -PASS Range 18 [document.head, 1, document.head, 1], point 37 [paras[0], 2] -PASS Range 18 [document.head, 1, document.head, 1], point 38 [paras[1], 0] -PASS Range 18 [document.head, 1, document.head, 1], point 39 [paras[1], 1] -PASS Range 18 [document.head, 1, document.head, 1], point 40 [paras[1], 2] -PASS Range 18 [document.head, 1, document.head, 1], point 41 [detachedPara1, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 42 [detachedPara1, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 43 [testDiv, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 44 [testDiv, 3] -PASS Range 18 [document.head, 1, document.head, 1], point 45 [document, -1] -PASS Range 18 [document.head, 1, document.head, 1], point 46 [document, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 47 [document, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 48 [document, 2] -PASS Range 18 [document.head, 1, document.head, 1], point 49 [document, 3] -PASS Range 18 [document.head, 1, document.head, 1], point 50 [comment, -1] -PASS Range 18 [document.head, 1, document.head, 1], point 51 [comment, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 52 [comment, 4] -PASS Range 18 [document.head, 1, document.head, 1], point 53 [comment, 96] -PASS Range 18 [document.head, 1, document.head, 1], point 54 [foreignDoc, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 55 [foreignDoc, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 56 [foreignComment, 2] -PASS Range 18 [document.head, 1, document.head, 1], point 57 [foreignTextNode, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 58 [foreignTextNode, 36] -PASS Range 18 [document.head, 1, document.head, 1], point 59 [xmlDoc, -1] -PASS Range 18 [document.head, 1, document.head, 1], point 60 [xmlDoc, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 61 [xmlDoc, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 62 [xmlDoc, 5] -PASS Range 18 [document.head, 1, document.head, 1], point 63 [xmlComment, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 64 [xmlComment, 4] -PASS Range 18 [document.head, 1, document.head, 1], point 65 [processingInstruction, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 66 [processingInstruction, 5] -PASS Range 18 [document.head, 1, document.head, 1], point 67 [processingInstruction, 9] -PASS Range 18 [document.head, 1, document.head, 1], point 68 [detachedTextNode, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 69 [detachedTextNode, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 18 [document.head, 1, document.head, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 18 [document.head, 1, document.head, 1], point 75 [detachedComment, 3] -PASS Range 18 [document.head, 1, document.head, 1], point 76 [detachedComment, 5] -PASS Range 18 [document.head, 1, document.head, 1], point 77 [detachedForeignComment, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 78 [detachedForeignComment, 4] -PASS Range 18 [document.head, 1, document.head, 1], point 79 [detachedXmlComment, 2] -PASS Range 18 [document.head, 1, document.head, 1], point 80 [docfrag, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 81 [foreignDocfrag, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 82 [xmlDocfrag, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 83 [doctype, 0] -FAIL Range 18 [document.head, 1, document.head, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 18 [document.head, 1, document.head, 1], point 85 [doctype, 1] -PASS Range 18 [document.head, 1, document.head, 1], point 86 [foreignDoctype, 0] -PASS Range 18 [document.head, 1, document.head, 1], point 87 [xmlDoctype, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 0 [paras[0].firstChild, -1] -PASS Range 19 [document.body, 0, document.body, 1], point 1 [paras[0].firstChild, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 2 [paras[0].firstChild, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 3 [paras[0].firstChild, 2] -PASS Range 19 [document.body, 0, document.body, 1], point 4 [paras[0].firstChild, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 5 [paras[0].firstChild, 9] -PASS Range 19 [document.body, 0, document.body, 1], point 6 [paras[0].firstChild, 10] -PASS Range 19 [document.body, 0, document.body, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 19 [document.body, 0, document.body, 1], point 8 [paras[1].firstChild, -1] -PASS Range 19 [document.body, 0, document.body, 1], point 9 [paras[1].firstChild, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 10 [paras[1].firstChild, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 11 [paras[1].firstChild, 2] -PASS Range 19 [document.body, 0, document.body, 1], point 12 [paras[1].firstChild, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 13 [paras[1].firstChild, 9] -PASS Range 19 [document.body, 0, document.body, 1], point 14 [paras[1].firstChild, 10] -PASS Range 19 [document.body, 0, document.body, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 19 [document.body, 0, document.body, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 19 [document.body, 0, document.body, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 19 [document.body, 0, document.body, 1], point 24 [document.documentElement, -1] -PASS Range 19 [document.body, 0, document.body, 1], point 25 [document.documentElement, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 26 [document.documentElement, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 27 [document.documentElement, 2] -PASS Range 19 [document.body, 0, document.body, 1], point 28 [document.documentElement, 7] -PASS Range 19 [document.body, 0, document.body, 1], point 29 [document.head, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 30 [document.body, 3] -PASS Range 19 [document.body, 0, document.body, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 33 [foreignDoc.head, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 34 [foreignDoc.body, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 35 [paras[0], 0] -PASS Range 19 [document.body, 0, document.body, 1], point 36 [paras[0], 1] -PASS Range 19 [document.body, 0, document.body, 1], point 37 [paras[0], 2] -PASS Range 19 [document.body, 0, document.body, 1], point 38 [paras[1], 0] -PASS Range 19 [document.body, 0, document.body, 1], point 39 [paras[1], 1] -PASS Range 19 [document.body, 0, document.body, 1], point 40 [paras[1], 2] -PASS Range 19 [document.body, 0, document.body, 1], point 41 [detachedPara1, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 42 [detachedPara1, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 43 [testDiv, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 44 [testDiv, 3] -PASS Range 19 [document.body, 0, document.body, 1], point 45 [document, -1] -PASS Range 19 [document.body, 0, document.body, 1], point 46 [document, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 47 [document, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 48 [document, 2] -PASS Range 19 [document.body, 0, document.body, 1], point 49 [document, 3] -PASS Range 19 [document.body, 0, document.body, 1], point 50 [comment, -1] -PASS Range 19 [document.body, 0, document.body, 1], point 51 [comment, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 52 [comment, 4] -PASS Range 19 [document.body, 0, document.body, 1], point 53 [comment, 96] -PASS Range 19 [document.body, 0, document.body, 1], point 54 [foreignDoc, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 55 [foreignDoc, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 56 [foreignComment, 2] -PASS Range 19 [document.body, 0, document.body, 1], point 57 [foreignTextNode, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 58 [foreignTextNode, 36] -PASS Range 19 [document.body, 0, document.body, 1], point 59 [xmlDoc, -1] -PASS Range 19 [document.body, 0, document.body, 1], point 60 [xmlDoc, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 61 [xmlDoc, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 62 [xmlDoc, 5] -PASS Range 19 [document.body, 0, document.body, 1], point 63 [xmlComment, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 64 [xmlComment, 4] -PASS Range 19 [document.body, 0, document.body, 1], point 65 [processingInstruction, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 66 [processingInstruction, 5] -PASS Range 19 [document.body, 0, document.body, 1], point 67 [processingInstruction, 9] -PASS Range 19 [document.body, 0, document.body, 1], point 68 [detachedTextNode, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 69 [detachedTextNode, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 19 [document.body, 0, document.body, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 19 [document.body, 0, document.body, 1], point 75 [detachedComment, 3] -PASS Range 19 [document.body, 0, document.body, 1], point 76 [detachedComment, 5] -PASS Range 19 [document.body, 0, document.body, 1], point 77 [detachedForeignComment, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 78 [detachedForeignComment, 4] -PASS Range 19 [document.body, 0, document.body, 1], point 79 [detachedXmlComment, 2] -PASS Range 19 [document.body, 0, document.body, 1], point 80 [docfrag, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 81 [foreignDocfrag, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 82 [xmlDocfrag, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 83 [doctype, 0] -FAIL Range 19 [document.body, 0, document.body, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 19 [document.body, 0, document.body, 1], point 85 [doctype, 1] -PASS Range 19 [document.body, 0, document.body, 1], point 86 [foreignDoctype, 0] -PASS Range 19 [document.body, 0, document.body, 1], point 87 [xmlDoctype, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 0 [paras[0].firstChild, -1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 1 [paras[0].firstChild, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 2 [paras[0].firstChild, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 3 [paras[0].firstChild, 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 4 [paras[0].firstChild, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 5 [paras[0].firstChild, 9] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 6 [paras[0].firstChild, 10] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 8 [paras[1].firstChild, -1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 9 [paras[1].firstChild, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 10 [paras[1].firstChild, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 11 [paras[1].firstChild, 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 12 [paras[1].firstChild, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 13 [paras[1].firstChild, 9] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 14 [paras[1].firstChild, 10] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 24 [document.documentElement, -1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 25 [document.documentElement, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 26 [document.documentElement, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 27 [document.documentElement, 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 28 [document.documentElement, 7] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 29 [document.head, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 30 [document.body, 3] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 33 [foreignDoc.head, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 34 [foreignDoc.body, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 35 [paras[0], 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 36 [paras[0], 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 37 [paras[0], 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 38 [paras[1], 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 39 [paras[1], 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 40 [paras[1], 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 41 [detachedPara1, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 42 [detachedPara1, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 43 [testDiv, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 44 [testDiv, 3] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 45 [document, -1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 46 [document, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 47 [document, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 48 [document, 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 49 [document, 3] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 50 [comment, -1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 51 [comment, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 52 [comment, 4] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 53 [comment, 96] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 54 [foreignDoc, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 55 [foreignDoc, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 56 [foreignComment, 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 57 [foreignTextNode, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 58 [foreignTextNode, 36] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 59 [xmlDoc, -1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 60 [xmlDoc, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 61 [xmlDoc, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 62 [xmlDoc, 5] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 63 [xmlComment, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 64 [xmlComment, 4] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 65 [processingInstruction, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 66 [processingInstruction, 5] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 67 [processingInstruction, 9] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 68 [detachedTextNode, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 69 [detachedTextNode, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 75 [detachedComment, 3] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 76 [detachedComment, 5] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 77 [detachedForeignComment, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 78 [detachedForeignComment, 4] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 79 [detachedXmlComment, 2] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 80 [docfrag, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 81 [foreignDocfrag, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 82 [xmlDocfrag, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 83 [doctype, 0] -FAIL Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 85 [doctype, 1] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 86 [foreignDoctype, 0] -PASS Range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 87 [xmlDoctype, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 0 [paras[0].firstChild, -1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 1 [paras[0].firstChild, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 2 [paras[0].firstChild, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 3 [paras[0].firstChild, 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 4 [paras[0].firstChild, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 5 [paras[0].firstChild, 9] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 6 [paras[0].firstChild, 10] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 8 [paras[1].firstChild, -1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 9 [paras[1].firstChild, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 10 [paras[1].firstChild, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 11 [paras[1].firstChild, 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 12 [paras[1].firstChild, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 13 [paras[1].firstChild, 9] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 14 [paras[1].firstChild, 10] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 24 [document.documentElement, -1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 25 [document.documentElement, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 26 [document.documentElement, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 27 [document.documentElement, 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 28 [document.documentElement, 7] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 29 [document.head, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 30 [document.body, 3] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 33 [foreignDoc.head, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 34 [foreignDoc.body, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 35 [paras[0], 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 36 [paras[0], 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 37 [paras[0], 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 38 [paras[1], 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 39 [paras[1], 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 40 [paras[1], 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 41 [detachedPara1, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 42 [detachedPara1, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 43 [testDiv, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 44 [testDiv, 3] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 45 [document, -1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 46 [document, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 47 [document, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 48 [document, 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 49 [document, 3] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 50 [comment, -1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 51 [comment, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 52 [comment, 4] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 53 [comment, 96] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 54 [foreignDoc, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 55 [foreignDoc, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 56 [foreignComment, 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 57 [foreignTextNode, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 58 [foreignTextNode, 36] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 59 [xmlDoc, -1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 60 [xmlDoc, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 61 [xmlDoc, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 62 [xmlDoc, 5] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 63 [xmlComment, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 64 [xmlComment, 4] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 65 [processingInstruction, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 66 [processingInstruction, 5] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 67 [processingInstruction, 9] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 68 [detachedTextNode, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 69 [detachedTextNode, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 75 [detachedComment, 3] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 76 [detachedComment, 5] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 77 [detachedForeignComment, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 78 [detachedForeignComment, 4] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 79 [detachedXmlComment, 2] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 80 [docfrag, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 81 [foreignDocfrag, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 82 [xmlDocfrag, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 83 [doctype, 0] -FAIL Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 85 [doctype, 1] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 86 [foreignDoctype, 0] -PASS Range 21 [foreignDoc.head, 1, foreignDoc.head, 1], point 87 [xmlDoctype, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 0 [paras[0].firstChild, -1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 1 [paras[0].firstChild, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 2 [paras[0].firstChild, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 3 [paras[0].firstChild, 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 4 [paras[0].firstChild, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 5 [paras[0].firstChild, 9] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 6 [paras[0].firstChild, 10] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 8 [paras[1].firstChild, -1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 9 [paras[1].firstChild, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 10 [paras[1].firstChild, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 11 [paras[1].firstChild, 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 12 [paras[1].firstChild, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 13 [paras[1].firstChild, 9] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 14 [paras[1].firstChild, 10] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 24 [document.documentElement, -1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 25 [document.documentElement, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 26 [document.documentElement, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 27 [document.documentElement, 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 28 [document.documentElement, 7] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 29 [document.head, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 30 [document.body, 3] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 33 [foreignDoc.head, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 34 [foreignDoc.body, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 35 [paras[0], 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 36 [paras[0], 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 37 [paras[0], 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 38 [paras[1], 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 39 [paras[1], 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 40 [paras[1], 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 41 [detachedPara1, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 42 [detachedPara1, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 43 [testDiv, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 44 [testDiv, 3] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 45 [document, -1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 46 [document, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 47 [document, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 48 [document, 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 49 [document, 3] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 50 [comment, -1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 51 [comment, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 52 [comment, 4] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 53 [comment, 96] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 54 [foreignDoc, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 55 [foreignDoc, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 56 [foreignComment, 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 57 [foreignTextNode, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 58 [foreignTextNode, 36] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 59 [xmlDoc, -1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 60 [xmlDoc, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 61 [xmlDoc, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 62 [xmlDoc, 5] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 63 [xmlComment, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 64 [xmlComment, 4] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 65 [processingInstruction, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 66 [processingInstruction, 5] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 67 [processingInstruction, 9] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 68 [detachedTextNode, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 69 [detachedTextNode, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 75 [detachedComment, 3] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 76 [detachedComment, 5] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 77 [detachedForeignComment, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 78 [detachedForeignComment, 4] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 79 [detachedXmlComment, 2] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 80 [docfrag, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 81 [foreignDocfrag, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 82 [xmlDocfrag, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 83 [doctype, 0] -FAIL Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 85 [doctype, 1] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 86 [foreignDoctype, 0] -PASS Range 22 [foreignDoc.body, 0, foreignDoc.body, 0], point 87 [xmlDoctype, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 0 [paras[0].firstChild, -1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 1 [paras[0].firstChild, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 2 [paras[0].firstChild, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 3 [paras[0].firstChild, 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 4 [paras[0].firstChild, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 5 [paras[0].firstChild, 9] -PASS Range 23 [paras[0], 0, paras[0], 0], point 6 [paras[0].firstChild, 10] -PASS Range 23 [paras[0], 0, paras[0], 0], point 7 [paras[0].firstChild, 65535] -PASS Range 23 [paras[0], 0, paras[0], 0], point 8 [paras[1].firstChild, -1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 9 [paras[1].firstChild, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 10 [paras[1].firstChild, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 11 [paras[1].firstChild, 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 12 [paras[1].firstChild, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 13 [paras[1].firstChild, 9] -PASS Range 23 [paras[0], 0, paras[0], 0], point 14 [paras[1].firstChild, 10] -PASS Range 23 [paras[0], 0, paras[0], 0], point 15 [paras[1].firstChild, 65535] -PASS Range 23 [paras[0], 0, paras[0], 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 23 [paras[0], 0, paras[0], 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 23 [paras[0], 0, paras[0], 0], point 24 [document.documentElement, -1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 25 [document.documentElement, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 26 [document.documentElement, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 27 [document.documentElement, 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 28 [document.documentElement, 7] -PASS Range 23 [paras[0], 0, paras[0], 0], point 29 [document.head, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 30 [document.body, 3] -PASS Range 23 [paras[0], 0, paras[0], 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 33 [foreignDoc.head, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 34 [foreignDoc.body, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 35 [paras[0], 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 36 [paras[0], 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 37 [paras[0], 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 38 [paras[1], 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 39 [paras[1], 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 40 [paras[1], 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 41 [detachedPara1, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 42 [detachedPara1, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 43 [testDiv, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 44 [testDiv, 3] -PASS Range 23 [paras[0], 0, paras[0], 0], point 45 [document, -1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 46 [document, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 47 [document, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 48 [document, 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 49 [document, 3] -PASS Range 23 [paras[0], 0, paras[0], 0], point 50 [comment, -1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 51 [comment, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 52 [comment, 4] -PASS Range 23 [paras[0], 0, paras[0], 0], point 53 [comment, 96] -PASS Range 23 [paras[0], 0, paras[0], 0], point 54 [foreignDoc, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 55 [foreignDoc, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 56 [foreignComment, 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 57 [foreignTextNode, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 58 [foreignTextNode, 36] -PASS Range 23 [paras[0], 0, paras[0], 0], point 59 [xmlDoc, -1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 60 [xmlDoc, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 61 [xmlDoc, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 62 [xmlDoc, 5] -PASS Range 23 [paras[0], 0, paras[0], 0], point 63 [xmlComment, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 64 [xmlComment, 4] -PASS Range 23 [paras[0], 0, paras[0], 0], point 65 [processingInstruction, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 66 [processingInstruction, 5] -PASS Range 23 [paras[0], 0, paras[0], 0], point 67 [processingInstruction, 9] -PASS Range 23 [paras[0], 0, paras[0], 0], point 68 [detachedTextNode, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 69 [detachedTextNode, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 70 [detachedForeignTextNode, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 71 [detachedForeignTextNode, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 72 [detachedXmlTextNode, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 73 [detachedXmlTextNode, 8] -PASS Range 23 [paras[0], 0, paras[0], 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 23 [paras[0], 0, paras[0], 0], point 75 [detachedComment, 3] -PASS Range 23 [paras[0], 0, paras[0], 0], point 76 [detachedComment, 5] -PASS Range 23 [paras[0], 0, paras[0], 0], point 77 [detachedForeignComment, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 78 [detachedForeignComment, 4] -PASS Range 23 [paras[0], 0, paras[0], 0], point 79 [detachedXmlComment, 2] -PASS Range 23 [paras[0], 0, paras[0], 0], point 80 [docfrag, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 81 [foreignDocfrag, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 82 [xmlDocfrag, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 83 [doctype, 0] -FAIL Range 23 [paras[0], 0, paras[0], 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 23 [paras[0], 0, paras[0], 0], point 85 [doctype, 1] -PASS Range 23 [paras[0], 0, paras[0], 0], point 86 [foreignDoctype, 0] -PASS Range 23 [paras[0], 0, paras[0], 0], point 87 [xmlDoctype, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 0 [paras[0].firstChild, -1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 1 [paras[0].firstChild, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 2 [paras[0].firstChild, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 3 [paras[0].firstChild, 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 4 [paras[0].firstChild, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 5 [paras[0].firstChild, 9] -PASS Range 24 [paras[0], 0, paras[0], 1], point 6 [paras[0].firstChild, 10] -PASS Range 24 [paras[0], 0, paras[0], 1], point 7 [paras[0].firstChild, 65535] -PASS Range 24 [paras[0], 0, paras[0], 1], point 8 [paras[1].firstChild, -1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 9 [paras[1].firstChild, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 10 [paras[1].firstChild, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 11 [paras[1].firstChild, 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 12 [paras[1].firstChild, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 13 [paras[1].firstChild, 9] -PASS Range 24 [paras[0], 0, paras[0], 1], point 14 [paras[1].firstChild, 10] -PASS Range 24 [paras[0], 0, paras[0], 1], point 15 [paras[1].firstChild, 65535] -PASS Range 24 [paras[0], 0, paras[0], 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 24 [paras[0], 0, paras[0], 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 24 [paras[0], 0, paras[0], 1], point 24 [document.documentElement, -1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 25 [document.documentElement, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 26 [document.documentElement, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 27 [document.documentElement, 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 28 [document.documentElement, 7] -PASS Range 24 [paras[0], 0, paras[0], 1], point 29 [document.head, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 30 [document.body, 3] -PASS Range 24 [paras[0], 0, paras[0], 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 33 [foreignDoc.head, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 34 [foreignDoc.body, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 35 [paras[0], 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 36 [paras[0], 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 37 [paras[0], 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 38 [paras[1], 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 39 [paras[1], 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 40 [paras[1], 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 41 [detachedPara1, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 42 [detachedPara1, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 43 [testDiv, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 44 [testDiv, 3] -PASS Range 24 [paras[0], 0, paras[0], 1], point 45 [document, -1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 46 [document, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 47 [document, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 48 [document, 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 49 [document, 3] -PASS Range 24 [paras[0], 0, paras[0], 1], point 50 [comment, -1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 51 [comment, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 52 [comment, 4] -PASS Range 24 [paras[0], 0, paras[0], 1], point 53 [comment, 96] -PASS Range 24 [paras[0], 0, paras[0], 1], point 54 [foreignDoc, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 55 [foreignDoc, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 56 [foreignComment, 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 57 [foreignTextNode, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 58 [foreignTextNode, 36] -PASS Range 24 [paras[0], 0, paras[0], 1], point 59 [xmlDoc, -1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 60 [xmlDoc, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 61 [xmlDoc, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 62 [xmlDoc, 5] -PASS Range 24 [paras[0], 0, paras[0], 1], point 63 [xmlComment, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 64 [xmlComment, 4] -PASS Range 24 [paras[0], 0, paras[0], 1], point 65 [processingInstruction, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 66 [processingInstruction, 5] -PASS Range 24 [paras[0], 0, paras[0], 1], point 67 [processingInstruction, 9] -PASS Range 24 [paras[0], 0, paras[0], 1], point 68 [detachedTextNode, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 69 [detachedTextNode, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 70 [detachedForeignTextNode, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 71 [detachedForeignTextNode, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 72 [detachedXmlTextNode, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 73 [detachedXmlTextNode, 8] -PASS Range 24 [paras[0], 0, paras[0], 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 24 [paras[0], 0, paras[0], 1], point 75 [detachedComment, 3] -PASS Range 24 [paras[0], 0, paras[0], 1], point 76 [detachedComment, 5] -PASS Range 24 [paras[0], 0, paras[0], 1], point 77 [detachedForeignComment, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 78 [detachedForeignComment, 4] -PASS Range 24 [paras[0], 0, paras[0], 1], point 79 [detachedXmlComment, 2] -PASS Range 24 [paras[0], 0, paras[0], 1], point 80 [docfrag, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 81 [foreignDocfrag, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 82 [xmlDocfrag, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 83 [doctype, 0] -FAIL Range 24 [paras[0], 0, paras[0], 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 24 [paras[0], 0, paras[0], 1], point 85 [doctype, 1] -PASS Range 24 [paras[0], 0, paras[0], 1], point 86 [foreignDoctype, 0] -PASS Range 24 [paras[0], 0, paras[0], 1], point 87 [xmlDoctype, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 0 [paras[0].firstChild, -1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 1 [paras[0].firstChild, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 2 [paras[0].firstChild, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 3 [paras[0].firstChild, 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 4 [paras[0].firstChild, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 5 [paras[0].firstChild, 9] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 6 [paras[0].firstChild, 10] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 8 [paras[1].firstChild, -1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 9 [paras[1].firstChild, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 10 [paras[1].firstChild, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 11 [paras[1].firstChild, 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 12 [paras[1].firstChild, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 13 [paras[1].firstChild, 9] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 14 [paras[1].firstChild, 10] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 24 [document.documentElement, -1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 25 [document.documentElement, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 26 [document.documentElement, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 27 [document.documentElement, 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 28 [document.documentElement, 7] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 29 [document.head, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 30 [document.body, 3] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 33 [foreignDoc.head, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 34 [foreignDoc.body, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 35 [paras[0], 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 36 [paras[0], 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 37 [paras[0], 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 38 [paras[1], 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 39 [paras[1], 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 40 [paras[1], 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 41 [detachedPara1, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 42 [detachedPara1, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 43 [testDiv, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 44 [testDiv, 3] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 45 [document, -1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 46 [document, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 47 [document, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 48 [document, 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 49 [document, 3] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 50 [comment, -1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 51 [comment, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 52 [comment, 4] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 53 [comment, 96] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 54 [foreignDoc, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 55 [foreignDoc, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 56 [foreignComment, 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 57 [foreignTextNode, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 58 [foreignTextNode, 36] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 59 [xmlDoc, -1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 60 [xmlDoc, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 61 [xmlDoc, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 62 [xmlDoc, 5] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 63 [xmlComment, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 64 [xmlComment, 4] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 65 [processingInstruction, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 66 [processingInstruction, 5] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 67 [processingInstruction, 9] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 68 [detachedTextNode, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 69 [detachedTextNode, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 75 [detachedComment, 3] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 76 [detachedComment, 5] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 77 [detachedForeignComment, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 78 [detachedForeignComment, 4] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 79 [detachedXmlComment, 2] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 80 [docfrag, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 81 [foreignDocfrag, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 82 [xmlDocfrag, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 83 [doctype, 0] -FAIL Range 25 [detachedPara1, 0, detachedPara1, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 85 [doctype, 1] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 86 [foreignDoctype, 0] -PASS Range 25 [detachedPara1, 0, detachedPara1, 0], point 87 [xmlDoctype, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 0 [paras[0].firstChild, -1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 1 [paras[0].firstChild, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 2 [paras[0].firstChild, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 3 [paras[0].firstChild, 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 4 [paras[0].firstChild, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 5 [paras[0].firstChild, 9] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 6 [paras[0].firstChild, 10] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 8 [paras[1].firstChild, -1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 9 [paras[1].firstChild, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 10 [paras[1].firstChild, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 11 [paras[1].firstChild, 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 12 [paras[1].firstChild, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 13 [paras[1].firstChild, 9] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 14 [paras[1].firstChild, 10] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 24 [document.documentElement, -1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 25 [document.documentElement, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 26 [document.documentElement, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 27 [document.documentElement, 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 28 [document.documentElement, 7] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 29 [document.head, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 30 [document.body, 3] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 33 [foreignDoc.head, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 34 [foreignDoc.body, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 35 [paras[0], 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 36 [paras[0], 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 37 [paras[0], 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 38 [paras[1], 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 39 [paras[1], 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 40 [paras[1], 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 41 [detachedPara1, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 42 [detachedPara1, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 43 [testDiv, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 44 [testDiv, 3] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 45 [document, -1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 46 [document, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 47 [document, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 48 [document, 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 49 [document, 3] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 50 [comment, -1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 51 [comment, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 52 [comment, 4] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 53 [comment, 96] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 54 [foreignDoc, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 55 [foreignDoc, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 56 [foreignComment, 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 57 [foreignTextNode, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 58 [foreignTextNode, 36] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 59 [xmlDoc, -1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 60 [xmlDoc, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 61 [xmlDoc, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 62 [xmlDoc, 5] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 63 [xmlComment, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 64 [xmlComment, 4] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 65 [processingInstruction, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 66 [processingInstruction, 5] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 67 [processingInstruction, 9] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 68 [detachedTextNode, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 69 [detachedTextNode, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 75 [detachedComment, 3] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 76 [detachedComment, 5] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 77 [detachedForeignComment, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 78 [detachedForeignComment, 4] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 79 [detachedXmlComment, 2] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 80 [docfrag, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 81 [foreignDocfrag, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 82 [xmlDocfrag, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 83 [doctype, 0] -FAIL Range 26 [detachedPara1, 0, detachedPara1, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 85 [doctype, 1] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 86 [foreignDoctype, 0] -PASS Range 26 [detachedPara1, 0, detachedPara1, 1], point 87 [xmlDoctype, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 0 [paras[0].firstChild, -1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 1 [paras[0].firstChild, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 2 [paras[0].firstChild, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 3 [paras[0].firstChild, 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 4 [paras[0].firstChild, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 5 [paras[0].firstChild, 9] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 6 [paras[0].firstChild, 10] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 8 [paras[1].firstChild, -1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 9 [paras[1].firstChild, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 10 [paras[1].firstChild, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 11 [paras[1].firstChild, 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 12 [paras[1].firstChild, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 13 [paras[1].firstChild, 9] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 14 [paras[1].firstChild, 10] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 24 [document.documentElement, -1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 25 [document.documentElement, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 26 [document.documentElement, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 27 [document.documentElement, 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 28 [document.documentElement, 7] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 29 [document.head, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 30 [document.body, 3] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 33 [foreignDoc.head, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 34 [foreignDoc.body, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 35 [paras[0], 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 36 [paras[0], 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 37 [paras[0], 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 38 [paras[1], 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 39 [paras[1], 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 40 [paras[1], 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 41 [detachedPara1, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 42 [detachedPara1, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 43 [testDiv, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 44 [testDiv, 3] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 45 [document, -1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 46 [document, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 47 [document, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 48 [document, 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 49 [document, 3] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 50 [comment, -1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 51 [comment, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 52 [comment, 4] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 53 [comment, 96] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 54 [foreignDoc, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 55 [foreignDoc, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 56 [foreignComment, 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 57 [foreignTextNode, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 58 [foreignTextNode, 36] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 59 [xmlDoc, -1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 60 [xmlDoc, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 61 [xmlDoc, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 62 [xmlDoc, 5] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 63 [xmlComment, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 64 [xmlComment, 4] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 65 [processingInstruction, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 66 [processingInstruction, 5] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 67 [processingInstruction, 9] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 68 [detachedTextNode, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 69 [detachedTextNode, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 75 [detachedComment, 3] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 76 [detachedComment, 5] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 77 [detachedForeignComment, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 78 [detachedForeignComment, 4] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 79 [detachedXmlComment, 2] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 80 [docfrag, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 81 [foreignDocfrag, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 82 [xmlDocfrag, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 83 [doctype, 0] -FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 85 [doctype, 1] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 86 [foreignDoctype, 0] -PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 87 [xmlDoctype, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 0 [paras[0].firstChild, -1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 1 [paras[0].firstChild, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 2 [paras[0].firstChild, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 3 [paras[0].firstChild, 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 4 [paras[0].firstChild, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 5 [paras[0].firstChild, 9] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 6 [paras[0].firstChild, 10] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 8 [paras[1].firstChild, -1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 9 [paras[1].firstChild, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 10 [paras[1].firstChild, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 11 [paras[1].firstChild, 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 12 [paras[1].firstChild, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 13 [paras[1].firstChild, 9] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 14 [paras[1].firstChild, 10] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 24 [document.documentElement, -1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 25 [document.documentElement, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 26 [document.documentElement, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 27 [document.documentElement, 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 28 [document.documentElement, 7] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 29 [document.head, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 30 [document.body, 3] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 33 [foreignDoc.head, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 34 [foreignDoc.body, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 35 [paras[0], 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 36 [paras[0], 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 37 [paras[0], 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 38 [paras[1], 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 39 [paras[1], 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 40 [paras[1], 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 41 [detachedPara1, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 42 [detachedPara1, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 43 [testDiv, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 44 [testDiv, 3] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 45 [document, -1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 46 [document, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 47 [document, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 48 [document, 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 49 [document, 3] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 50 [comment, -1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 51 [comment, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 52 [comment, 4] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 53 [comment, 96] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 54 [foreignDoc, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 55 [foreignDoc, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 56 [foreignComment, 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 57 [foreignTextNode, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 58 [foreignTextNode, 36] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 59 [xmlDoc, -1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 60 [xmlDoc, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 61 [xmlDoc, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 62 [xmlDoc, 5] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 63 [xmlComment, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 64 [xmlComment, 4] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 65 [processingInstruction, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 66 [processingInstruction, 5] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 67 [processingInstruction, 9] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 68 [detachedTextNode, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 69 [detachedTextNode, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 75 [detachedComment, 3] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 76 [detachedComment, 5] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 77 [detachedForeignComment, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 78 [detachedForeignComment, 4] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 79 [detachedXmlComment, 2] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 80 [docfrag, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 81 [foreignDocfrag, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 82 [xmlDocfrag, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 83 [doctype, 0] -FAIL Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 85 [doctype, 1] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 86 [foreignDoctype, 0] -PASS Range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 87 [xmlDoctype, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 0 [paras[0].firstChild, -1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 1 [paras[0].firstChild, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 2 [paras[0].firstChild, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 3 [paras[0].firstChild, 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 4 [paras[0].firstChild, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 5 [paras[0].firstChild, 9] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 6 [paras[0].firstChild, 10] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 7 [paras[0].firstChild, 65535] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 8 [paras[1].firstChild, -1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 9 [paras[1].firstChild, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 10 [paras[1].firstChild, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 11 [paras[1].firstChild, 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 12 [paras[1].firstChild, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 13 [paras[1].firstChild, 9] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 14 [paras[1].firstChild, 10] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 15 [paras[1].firstChild, 65535] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 24 [document.documentElement, -1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 25 [document.documentElement, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 26 [document.documentElement, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 27 [document.documentElement, 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 28 [document.documentElement, 7] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 29 [document.head, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 30 [document.body, 3] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 33 [foreignDoc.head, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 34 [foreignDoc.body, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 35 [paras[0], 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 36 [paras[0], 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 37 [paras[0], 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 38 [paras[1], 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 39 [paras[1], 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 40 [paras[1], 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 41 [detachedPara1, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 42 [detachedPara1, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 43 [testDiv, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 44 [testDiv, 3] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 45 [document, -1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 46 [document, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 47 [document, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 48 [document, 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 49 [document, 3] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 50 [comment, -1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 51 [comment, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 52 [comment, 4] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 53 [comment, 96] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 54 [foreignDoc, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 55 [foreignDoc, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 56 [foreignComment, 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 57 [foreignTextNode, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 58 [foreignTextNode, 36] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 59 [xmlDoc, -1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 60 [xmlDoc, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 61 [xmlDoc, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 62 [xmlDoc, 5] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 63 [xmlComment, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 64 [xmlComment, 4] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 65 [processingInstruction, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 66 [processingInstruction, 5] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 67 [processingInstruction, 9] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 68 [detachedTextNode, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 69 [detachedTextNode, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 70 [detachedForeignTextNode, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 71 [detachedForeignTextNode, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 72 [detachedXmlTextNode, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 73 [detachedXmlTextNode, 8] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 75 [detachedComment, 3] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 76 [detachedComment, 5] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 77 [detachedForeignComment, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 78 [detachedForeignComment, 4] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 79 [detachedXmlComment, 2] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 80 [docfrag, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 81 [foreignDocfrag, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 82 [xmlDocfrag, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 83 [doctype, 0] -FAIL Range 29 [paras[0].firstChild, 3, paras[3], 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 85 [doctype, 1] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 86 [foreignDoctype, 0] -PASS Range 29 [paras[0].firstChild, 3, paras[3], 1], point 87 [xmlDoctype, 0] -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/collapse-30-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/collapse-30-expected.txt deleted file mode 100644 index f9ef654c..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/selection/collapse-30-expected.txt +++ /dev/null
@@ -1,2995 +0,0 @@ -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -CONSOLE ERROR: line 8: The given range isn't in document. -This is a testharness.js-based test. -Found 2581 tests; 2552 PASS, 29 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Set up range 30 [paras[0], 0, paras[0].firstChild, 7] -PASS Set up range 31 [testDiv, 2, paras[4], 1] -PASS Set up range 32 [testDiv, 1, paras[2].firstChild, 5] -PASS Set up range 33 [document.documentElement, 1, document.body, 0] -PASS Set up range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0] -PASS Set up range 35 [document, 0, document, 1] -PASS Set up range 36 [document, 0, document, 2] -PASS Set up range 37 [document, 1, document, 2] -PASS Set up range 38 [testDiv, 0, comment, 5] -PASS Set up range 39 [paras[2].firstChild, 4, comment, 2] -PASS Set up range 40 [paras[3], 1, comment, 8] -PASS Set up range 41 [foreignDoc, 0, foreignDoc, 0] -PASS Set up range 42 [foreignDoc, 1, foreignComment, 2] -PASS Set up range 43 [foreignDoc.body, 0, foreignTextNode, 36] -PASS Set up range 44 [xmlDoc, 0, xmlDoc, 0] -PASS Set up range 45 [xmlDoc, 1, xmlComment, 0] -PASS Set up range 46 [detachedTextNode, 0, detachedTextNode, 8] -PASS Set up range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] -PASS Set up range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] -PASS Set up range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] -PASS Set up range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] -PASS Set up range 51 [detachedComment, 3, detachedComment, 4] -PASS Set up range 52 [detachedComment, 5, detachedComment, 5] -PASS Set up range 53 [detachedForeignComment, 0, detachedForeignComment, 1] -PASS Set up range 54 [detachedForeignComment, 4, detachedForeignComment, 4] -PASS Set up range 55 [detachedXmlComment, 2, detachedXmlComment, 6] -PASS Set up range 56 [docfrag, 0, docfrag, 0] -PASS Set up range 57 [foreignDocfrag, 0, foreignDocfrag, 0] -PASS Set up range 58 [xmlDocfrag, 0, xmlDocfrag, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 0 [paras[0].firstChild, -1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 1 [paras[0].firstChild, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 2 [paras[0].firstChild, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 3 [paras[0].firstChild, 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 4 [paras[0].firstChild, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 5 [paras[0].firstChild, 9] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 6 [paras[0].firstChild, 10] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 7 [paras[0].firstChild, 65535] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 8 [paras[1].firstChild, -1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 9 [paras[1].firstChild, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 10 [paras[1].firstChild, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 11 [paras[1].firstChild, 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 12 [paras[1].firstChild, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 13 [paras[1].firstChild, 9] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 14 [paras[1].firstChild, 10] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 15 [paras[1].firstChild, 65535] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 16 [detachedPara1.firstChild, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 17 [detachedPara1.firstChild, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 18 [detachedPara1.firstChild, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 19 [detachedPara1.firstChild, 9] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 20 [foreignPara1.firstChild, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 21 [foreignPara1.firstChild, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 22 [foreignPara1.firstChild, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 23 [foreignPara1.firstChild, 9] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 24 [document.documentElement, -1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 25 [document.documentElement, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 26 [document.documentElement, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 27 [document.documentElement, 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 28 [document.documentElement, 7] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 29 [document.head, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 30 [document.body, 3] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 31 [foreignDoc.documentElement, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 32 [foreignDoc.documentElement, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 33 [foreignDoc.head, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 34 [foreignDoc.body, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 35 [paras[0], 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 36 [paras[0], 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 37 [paras[0], 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 38 [paras[1], 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 39 [paras[1], 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 40 [paras[1], 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 41 [detachedPara1, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 42 [detachedPara1, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 43 [testDiv, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 44 [testDiv, 3] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 45 [document, -1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 46 [document, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 47 [document, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 48 [document, 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 49 [document, 3] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 50 [comment, -1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 51 [comment, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 52 [comment, 4] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 53 [comment, 96] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 54 [foreignDoc, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 55 [foreignDoc, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 56 [foreignComment, 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 57 [foreignTextNode, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 58 [foreignTextNode, 36] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 59 [xmlDoc, -1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 60 [xmlDoc, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 61 [xmlDoc, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 62 [xmlDoc, 5] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 63 [xmlComment, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 64 [xmlComment, 4] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 65 [processingInstruction, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 66 [processingInstruction, 5] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 67 [processingInstruction, 9] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 68 [detachedTextNode, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 69 [detachedTextNode, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 70 [detachedForeignTextNode, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 71 [detachedForeignTextNode, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 72 [detachedXmlTextNode, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 73 [detachedXmlTextNode, 8] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 74 [detachedProcessingInstruction, 12] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 75 [detachedComment, 3] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 76 [detachedComment, 5] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 77 [detachedForeignComment, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 78 [detachedForeignComment, 4] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 79 [detachedXmlComment, 2] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 80 [docfrag, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 81 [foreignDocfrag, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 82 [xmlDocfrag, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 83 [doctype, 0] -FAIL Range 30 [paras[0], 0, paras[0].firstChild, 7], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 85 [doctype, 1] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 86 [foreignDoctype, 0] -PASS Range 30 [paras[0], 0, paras[0].firstChild, 7], point 87 [xmlDoctype, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 0 [paras[0].firstChild, -1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 1 [paras[0].firstChild, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 2 [paras[0].firstChild, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 3 [paras[0].firstChild, 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 4 [paras[0].firstChild, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 5 [paras[0].firstChild, 9] -PASS Range 31 [testDiv, 2, paras[4], 1], point 6 [paras[0].firstChild, 10] -PASS Range 31 [testDiv, 2, paras[4], 1], point 7 [paras[0].firstChild, 65535] -PASS Range 31 [testDiv, 2, paras[4], 1], point 8 [paras[1].firstChild, -1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 9 [paras[1].firstChild, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 10 [paras[1].firstChild, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 11 [paras[1].firstChild, 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 12 [paras[1].firstChild, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 13 [paras[1].firstChild, 9] -PASS Range 31 [testDiv, 2, paras[4], 1], point 14 [paras[1].firstChild, 10] -PASS Range 31 [testDiv, 2, paras[4], 1], point 15 [paras[1].firstChild, 65535] -PASS Range 31 [testDiv, 2, paras[4], 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 31 [testDiv, 2, paras[4], 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 31 [testDiv, 2, paras[4], 1], point 24 [document.documentElement, -1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 25 [document.documentElement, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 26 [document.documentElement, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 27 [document.documentElement, 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 28 [document.documentElement, 7] -PASS Range 31 [testDiv, 2, paras[4], 1], point 29 [document.head, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 30 [document.body, 3] -PASS Range 31 [testDiv, 2, paras[4], 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 33 [foreignDoc.head, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 34 [foreignDoc.body, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 35 [paras[0], 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 36 [paras[0], 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 37 [paras[0], 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 38 [paras[1], 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 39 [paras[1], 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 40 [paras[1], 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 41 [detachedPara1, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 42 [detachedPara1, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 43 [testDiv, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 44 [testDiv, 3] -PASS Range 31 [testDiv, 2, paras[4], 1], point 45 [document, -1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 46 [document, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 47 [document, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 48 [document, 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 49 [document, 3] -PASS Range 31 [testDiv, 2, paras[4], 1], point 50 [comment, -1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 51 [comment, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 52 [comment, 4] -PASS Range 31 [testDiv, 2, paras[4], 1], point 53 [comment, 96] -PASS Range 31 [testDiv, 2, paras[4], 1], point 54 [foreignDoc, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 55 [foreignDoc, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 56 [foreignComment, 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 57 [foreignTextNode, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 58 [foreignTextNode, 36] -PASS Range 31 [testDiv, 2, paras[4], 1], point 59 [xmlDoc, -1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 60 [xmlDoc, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 61 [xmlDoc, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 62 [xmlDoc, 5] -PASS Range 31 [testDiv, 2, paras[4], 1], point 63 [xmlComment, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 64 [xmlComment, 4] -PASS Range 31 [testDiv, 2, paras[4], 1], point 65 [processingInstruction, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 66 [processingInstruction, 5] -PASS Range 31 [testDiv, 2, paras[4], 1], point 67 [processingInstruction, 9] -PASS Range 31 [testDiv, 2, paras[4], 1], point 68 [detachedTextNode, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 69 [detachedTextNode, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 70 [detachedForeignTextNode, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 71 [detachedForeignTextNode, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 72 [detachedXmlTextNode, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 73 [detachedXmlTextNode, 8] -PASS Range 31 [testDiv, 2, paras[4], 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 31 [testDiv, 2, paras[4], 1], point 75 [detachedComment, 3] -PASS Range 31 [testDiv, 2, paras[4], 1], point 76 [detachedComment, 5] -PASS Range 31 [testDiv, 2, paras[4], 1], point 77 [detachedForeignComment, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 78 [detachedForeignComment, 4] -PASS Range 31 [testDiv, 2, paras[4], 1], point 79 [detachedXmlComment, 2] -PASS Range 31 [testDiv, 2, paras[4], 1], point 80 [docfrag, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 81 [foreignDocfrag, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 82 [xmlDocfrag, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 83 [doctype, 0] -FAIL Range 31 [testDiv, 2, paras[4], 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 31 [testDiv, 2, paras[4], 1], point 85 [doctype, 1] -PASS Range 31 [testDiv, 2, paras[4], 1], point 86 [foreignDoctype, 0] -PASS Range 31 [testDiv, 2, paras[4], 1], point 87 [xmlDoctype, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 0 [paras[0].firstChild, -1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 1 [paras[0].firstChild, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 2 [paras[0].firstChild, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 3 [paras[0].firstChild, 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 4 [paras[0].firstChild, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 5 [paras[0].firstChild, 9] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 6 [paras[0].firstChild, 10] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 7 [paras[0].firstChild, 65535] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 8 [paras[1].firstChild, -1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 9 [paras[1].firstChild, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 10 [paras[1].firstChild, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 11 [paras[1].firstChild, 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 12 [paras[1].firstChild, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 13 [paras[1].firstChild, 9] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 14 [paras[1].firstChild, 10] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 15 [paras[1].firstChild, 65535] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 16 [detachedPara1.firstChild, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 17 [detachedPara1.firstChild, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 18 [detachedPara1.firstChild, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 19 [detachedPara1.firstChild, 9] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 20 [foreignPara1.firstChild, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 21 [foreignPara1.firstChild, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 22 [foreignPara1.firstChild, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 23 [foreignPara1.firstChild, 9] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 24 [document.documentElement, -1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 25 [document.documentElement, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 26 [document.documentElement, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 27 [document.documentElement, 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 28 [document.documentElement, 7] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 29 [document.head, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 30 [document.body, 3] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 31 [foreignDoc.documentElement, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 32 [foreignDoc.documentElement, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 33 [foreignDoc.head, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 34 [foreignDoc.body, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 35 [paras[0], 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 36 [paras[0], 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 37 [paras[0], 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 38 [paras[1], 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 39 [paras[1], 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 40 [paras[1], 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 41 [detachedPara1, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 42 [detachedPara1, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 43 [testDiv, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 44 [testDiv, 3] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 45 [document, -1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 46 [document, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 47 [document, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 48 [document, 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 49 [document, 3] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 50 [comment, -1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 51 [comment, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 52 [comment, 4] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 53 [comment, 96] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 54 [foreignDoc, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 55 [foreignDoc, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 56 [foreignComment, 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 57 [foreignTextNode, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 58 [foreignTextNode, 36] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 59 [xmlDoc, -1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 60 [xmlDoc, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 61 [xmlDoc, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 62 [xmlDoc, 5] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 63 [xmlComment, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 64 [xmlComment, 4] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 65 [processingInstruction, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 66 [processingInstruction, 5] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 67 [processingInstruction, 9] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 68 [detachedTextNode, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 69 [detachedTextNode, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 70 [detachedForeignTextNode, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 71 [detachedForeignTextNode, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 72 [detachedXmlTextNode, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 73 [detachedXmlTextNode, 8] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 74 [detachedProcessingInstruction, 12] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 75 [detachedComment, 3] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 76 [detachedComment, 5] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 77 [detachedForeignComment, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 78 [detachedForeignComment, 4] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 79 [detachedXmlComment, 2] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 80 [docfrag, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 81 [foreignDocfrag, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 82 [xmlDocfrag, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 83 [doctype, 0] -FAIL Range 32 [testDiv, 1, paras[2].firstChild, 5], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 85 [doctype, 1] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 86 [foreignDoctype, 0] -PASS Range 32 [testDiv, 1, paras[2].firstChild, 5], point 87 [xmlDoctype, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 0 [paras[0].firstChild, -1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 1 [paras[0].firstChild, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 2 [paras[0].firstChild, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 3 [paras[0].firstChild, 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 4 [paras[0].firstChild, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 5 [paras[0].firstChild, 9] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 6 [paras[0].firstChild, 10] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 8 [paras[1].firstChild, -1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 9 [paras[1].firstChild, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 10 [paras[1].firstChild, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 11 [paras[1].firstChild, 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 12 [paras[1].firstChild, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 13 [paras[1].firstChild, 9] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 14 [paras[1].firstChild, 10] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 24 [document.documentElement, -1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 25 [document.documentElement, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 26 [document.documentElement, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 27 [document.documentElement, 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 28 [document.documentElement, 7] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 29 [document.head, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 30 [document.body, 3] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 33 [foreignDoc.head, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 34 [foreignDoc.body, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 35 [paras[0], 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 36 [paras[0], 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 37 [paras[0], 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 38 [paras[1], 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 39 [paras[1], 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 40 [paras[1], 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 41 [detachedPara1, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 42 [detachedPara1, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 43 [testDiv, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 44 [testDiv, 3] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 45 [document, -1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 46 [document, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 47 [document, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 48 [document, 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 49 [document, 3] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 50 [comment, -1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 51 [comment, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 52 [comment, 4] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 53 [comment, 96] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 54 [foreignDoc, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 55 [foreignDoc, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 56 [foreignComment, 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 57 [foreignTextNode, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 58 [foreignTextNode, 36] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 59 [xmlDoc, -1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 60 [xmlDoc, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 61 [xmlDoc, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 62 [xmlDoc, 5] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 63 [xmlComment, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 64 [xmlComment, 4] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 65 [processingInstruction, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 66 [processingInstruction, 5] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 67 [processingInstruction, 9] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 68 [detachedTextNode, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 69 [detachedTextNode, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 75 [detachedComment, 3] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 76 [detachedComment, 5] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 77 [detachedForeignComment, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 78 [detachedForeignComment, 4] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 79 [detachedXmlComment, 2] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 80 [docfrag, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 81 [foreignDocfrag, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 82 [xmlDocfrag, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 83 [doctype, 0] -FAIL Range 33 [document.documentElement, 1, document.body, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 33 [document.documentElement, 1, document.body, 0], point 85 [doctype, 1] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 86 [foreignDoctype, 0] -PASS Range 33 [document.documentElement, 1, document.body, 0], point 87 [xmlDoctype, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 0 [paras[0].firstChild, -1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 1 [paras[0].firstChild, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 2 [paras[0].firstChild, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 3 [paras[0].firstChild, 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 4 [paras[0].firstChild, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 5 [paras[0].firstChild, 9] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 6 [paras[0].firstChild, 10] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 8 [paras[1].firstChild, -1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 9 [paras[1].firstChild, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 10 [paras[1].firstChild, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 11 [paras[1].firstChild, 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 12 [paras[1].firstChild, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 13 [paras[1].firstChild, 9] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 14 [paras[1].firstChild, 10] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 24 [document.documentElement, -1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 25 [document.documentElement, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 26 [document.documentElement, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 27 [document.documentElement, 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 28 [document.documentElement, 7] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 29 [document.head, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 30 [document.body, 3] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 33 [foreignDoc.head, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 34 [foreignDoc.body, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 35 [paras[0], 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 36 [paras[0], 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 37 [paras[0], 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 38 [paras[1], 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 39 [paras[1], 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 40 [paras[1], 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 41 [detachedPara1, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 42 [detachedPara1, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 43 [testDiv, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 44 [testDiv, 3] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 45 [document, -1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 46 [document, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 47 [document, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 48 [document, 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 49 [document, 3] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 50 [comment, -1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 51 [comment, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 52 [comment, 4] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 53 [comment, 96] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 54 [foreignDoc, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 55 [foreignDoc, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 56 [foreignComment, 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 57 [foreignTextNode, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 58 [foreignTextNode, 36] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 59 [xmlDoc, -1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 60 [xmlDoc, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 61 [xmlDoc, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 62 [xmlDoc, 5] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 63 [xmlComment, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 64 [xmlComment, 4] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 65 [processingInstruction, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 66 [processingInstruction, 5] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 67 [processingInstruction, 9] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 68 [detachedTextNode, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 69 [detachedTextNode, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 75 [detachedComment, 3] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 76 [detachedComment, 5] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 77 [detachedForeignComment, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 78 [detachedForeignComment, 4] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 79 [detachedXmlComment, 2] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 80 [docfrag, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 81 [foreignDocfrag, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 82 [xmlDocfrag, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 83 [doctype, 0] -FAIL Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 85 [doctype, 1] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 86 [foreignDoctype, 0] -PASS Range 34 [foreignDoc.documentElement, 1, foreignDoc.body, 0], point 87 [xmlDoctype, 0] -PASS Range 35 [document, 0, document, 1], point 0 [paras[0].firstChild, -1] -PASS Range 35 [document, 0, document, 1], point 1 [paras[0].firstChild, 0] -PASS Range 35 [document, 0, document, 1], point 2 [paras[0].firstChild, 1] -PASS Range 35 [document, 0, document, 1], point 3 [paras[0].firstChild, 2] -PASS Range 35 [document, 0, document, 1], point 4 [paras[0].firstChild, 8] -PASS Range 35 [document, 0, document, 1], point 5 [paras[0].firstChild, 9] -PASS Range 35 [document, 0, document, 1], point 6 [paras[0].firstChild, 10] -PASS Range 35 [document, 0, document, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 35 [document, 0, document, 1], point 8 [paras[1].firstChild, -1] -PASS Range 35 [document, 0, document, 1], point 9 [paras[1].firstChild, 0] -PASS Range 35 [document, 0, document, 1], point 10 [paras[1].firstChild, 1] -PASS Range 35 [document, 0, document, 1], point 11 [paras[1].firstChild, 2] -PASS Range 35 [document, 0, document, 1], point 12 [paras[1].firstChild, 8] -PASS Range 35 [document, 0, document, 1], point 13 [paras[1].firstChild, 9] -PASS Range 35 [document, 0, document, 1], point 14 [paras[1].firstChild, 10] -PASS Range 35 [document, 0, document, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 35 [document, 0, document, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 35 [document, 0, document, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 35 [document, 0, document, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 35 [document, 0, document, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 35 [document, 0, document, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 35 [document, 0, document, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 35 [document, 0, document, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 35 [document, 0, document, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 35 [document, 0, document, 1], point 24 [document.documentElement, -1] -PASS Range 35 [document, 0, document, 1], point 25 [document.documentElement, 0] -PASS Range 35 [document, 0, document, 1], point 26 [document.documentElement, 1] -PASS Range 35 [document, 0, document, 1], point 27 [document.documentElement, 2] -PASS Range 35 [document, 0, document, 1], point 28 [document.documentElement, 7] -PASS Range 35 [document, 0, document, 1], point 29 [document.head, 1] -PASS Range 35 [document, 0, document, 1], point 30 [document.body, 3] -PASS Range 35 [document, 0, document, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 35 [document, 0, document, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 35 [document, 0, document, 1], point 33 [foreignDoc.head, 0] -PASS Range 35 [document, 0, document, 1], point 34 [foreignDoc.body, 1] -PASS Range 35 [document, 0, document, 1], point 35 [paras[0], 0] -PASS Range 35 [document, 0, document, 1], point 36 [paras[0], 1] -PASS Range 35 [document, 0, document, 1], point 37 [paras[0], 2] -PASS Range 35 [document, 0, document, 1], point 38 [paras[1], 0] -PASS Range 35 [document, 0, document, 1], point 39 [paras[1], 1] -PASS Range 35 [document, 0, document, 1], point 40 [paras[1], 2] -PASS Range 35 [document, 0, document, 1], point 41 [detachedPara1, 0] -PASS Range 35 [document, 0, document, 1], point 42 [detachedPara1, 1] -PASS Range 35 [document, 0, document, 1], point 43 [testDiv, 0] -PASS Range 35 [document, 0, document, 1], point 44 [testDiv, 3] -PASS Range 35 [document, 0, document, 1], point 45 [document, -1] -PASS Range 35 [document, 0, document, 1], point 46 [document, 0] -PASS Range 35 [document, 0, document, 1], point 47 [document, 1] -PASS Range 35 [document, 0, document, 1], point 48 [document, 2] -PASS Range 35 [document, 0, document, 1], point 49 [document, 3] -PASS Range 35 [document, 0, document, 1], point 50 [comment, -1] -PASS Range 35 [document, 0, document, 1], point 51 [comment, 0] -PASS Range 35 [document, 0, document, 1], point 52 [comment, 4] -PASS Range 35 [document, 0, document, 1], point 53 [comment, 96] -PASS Range 35 [document, 0, document, 1], point 54 [foreignDoc, 0] -PASS Range 35 [document, 0, document, 1], point 55 [foreignDoc, 1] -PASS Range 35 [document, 0, document, 1], point 56 [foreignComment, 2] -PASS Range 35 [document, 0, document, 1], point 57 [foreignTextNode, 0] -PASS Range 35 [document, 0, document, 1], point 58 [foreignTextNode, 36] -PASS Range 35 [document, 0, document, 1], point 59 [xmlDoc, -1] -PASS Range 35 [document, 0, document, 1], point 60 [xmlDoc, 0] -PASS Range 35 [document, 0, document, 1], point 61 [xmlDoc, 1] -PASS Range 35 [document, 0, document, 1], point 62 [xmlDoc, 5] -PASS Range 35 [document, 0, document, 1], point 63 [xmlComment, 0] -PASS Range 35 [document, 0, document, 1], point 64 [xmlComment, 4] -PASS Range 35 [document, 0, document, 1], point 65 [processingInstruction, 0] -PASS Range 35 [document, 0, document, 1], point 66 [processingInstruction, 5] -PASS Range 35 [document, 0, document, 1], point 67 [processingInstruction, 9] -PASS Range 35 [document, 0, document, 1], point 68 [detachedTextNode, 0] -PASS Range 35 [document, 0, document, 1], point 69 [detachedTextNode, 8] -PASS Range 35 [document, 0, document, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 35 [document, 0, document, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 35 [document, 0, document, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 35 [document, 0, document, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 35 [document, 0, document, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 35 [document, 0, document, 1], point 75 [detachedComment, 3] -PASS Range 35 [document, 0, document, 1], point 76 [detachedComment, 5] -PASS Range 35 [document, 0, document, 1], point 77 [detachedForeignComment, 0] -PASS Range 35 [document, 0, document, 1], point 78 [detachedForeignComment, 4] -PASS Range 35 [document, 0, document, 1], point 79 [detachedXmlComment, 2] -PASS Range 35 [document, 0, document, 1], point 80 [docfrag, 0] -PASS Range 35 [document, 0, document, 1], point 81 [foreignDocfrag, 0] -PASS Range 35 [document, 0, document, 1], point 82 [xmlDocfrag, 0] -PASS Range 35 [document, 0, document, 1], point 83 [doctype, 0] -FAIL Range 35 [document, 0, document, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 35 [document, 0, document, 1], point 85 [doctype, 1] -PASS Range 35 [document, 0, document, 1], point 86 [foreignDoctype, 0] -PASS Range 35 [document, 0, document, 1], point 87 [xmlDoctype, 0] -PASS Range 36 [document, 0, document, 2], point 0 [paras[0].firstChild, -1] -PASS Range 36 [document, 0, document, 2], point 1 [paras[0].firstChild, 0] -PASS Range 36 [document, 0, document, 2], point 2 [paras[0].firstChild, 1] -PASS Range 36 [document, 0, document, 2], point 3 [paras[0].firstChild, 2] -PASS Range 36 [document, 0, document, 2], point 4 [paras[0].firstChild, 8] -PASS Range 36 [document, 0, document, 2], point 5 [paras[0].firstChild, 9] -PASS Range 36 [document, 0, document, 2], point 6 [paras[0].firstChild, 10] -PASS Range 36 [document, 0, document, 2], point 7 [paras[0].firstChild, 65535] -PASS Range 36 [document, 0, document, 2], point 8 [paras[1].firstChild, -1] -PASS Range 36 [document, 0, document, 2], point 9 [paras[1].firstChild, 0] -PASS Range 36 [document, 0, document, 2], point 10 [paras[1].firstChild, 1] -PASS Range 36 [document, 0, document, 2], point 11 [paras[1].firstChild, 2] -PASS Range 36 [document, 0, document, 2], point 12 [paras[1].firstChild, 8] -PASS Range 36 [document, 0, document, 2], point 13 [paras[1].firstChild, 9] -PASS Range 36 [document, 0, document, 2], point 14 [paras[1].firstChild, 10] -PASS Range 36 [document, 0, document, 2], point 15 [paras[1].firstChild, 65535] -PASS Range 36 [document, 0, document, 2], point 16 [detachedPara1.firstChild, 0] -PASS Range 36 [document, 0, document, 2], point 17 [detachedPara1.firstChild, 1] -PASS Range 36 [document, 0, document, 2], point 18 [detachedPara1.firstChild, 8] -PASS Range 36 [document, 0, document, 2], point 19 [detachedPara1.firstChild, 9] -PASS Range 36 [document, 0, document, 2], point 20 [foreignPara1.firstChild, 0] -PASS Range 36 [document, 0, document, 2], point 21 [foreignPara1.firstChild, 1] -PASS Range 36 [document, 0, document, 2], point 22 [foreignPara1.firstChild, 8] -PASS Range 36 [document, 0, document, 2], point 23 [foreignPara1.firstChild, 9] -PASS Range 36 [document, 0, document, 2], point 24 [document.documentElement, -1] -PASS Range 36 [document, 0, document, 2], point 25 [document.documentElement, 0] -PASS Range 36 [document, 0, document, 2], point 26 [document.documentElement, 1] -PASS Range 36 [document, 0, document, 2], point 27 [document.documentElement, 2] -PASS Range 36 [document, 0, document, 2], point 28 [document.documentElement, 7] -PASS Range 36 [document, 0, document, 2], point 29 [document.head, 1] -PASS Range 36 [document, 0, document, 2], point 30 [document.body, 3] -PASS Range 36 [document, 0, document, 2], point 31 [foreignDoc.documentElement, 0] -PASS Range 36 [document, 0, document, 2], point 32 [foreignDoc.documentElement, 1] -PASS Range 36 [document, 0, document, 2], point 33 [foreignDoc.head, 0] -PASS Range 36 [document, 0, document, 2], point 34 [foreignDoc.body, 1] -PASS Range 36 [document, 0, document, 2], point 35 [paras[0], 0] -PASS Range 36 [document, 0, document, 2], point 36 [paras[0], 1] -PASS Range 36 [document, 0, document, 2], point 37 [paras[0], 2] -PASS Range 36 [document, 0, document, 2], point 38 [paras[1], 0] -PASS Range 36 [document, 0, document, 2], point 39 [paras[1], 1] -PASS Range 36 [document, 0, document, 2], point 40 [paras[1], 2] -PASS Range 36 [document, 0, document, 2], point 41 [detachedPara1, 0] -PASS Range 36 [document, 0, document, 2], point 42 [detachedPara1, 1] -PASS Range 36 [document, 0, document, 2], point 43 [testDiv, 0] -PASS Range 36 [document, 0, document, 2], point 44 [testDiv, 3] -PASS Range 36 [document, 0, document, 2], point 45 [document, -1] -PASS Range 36 [document, 0, document, 2], point 46 [document, 0] -PASS Range 36 [document, 0, document, 2], point 47 [document, 1] -PASS Range 36 [document, 0, document, 2], point 48 [document, 2] -PASS Range 36 [document, 0, document, 2], point 49 [document, 3] -PASS Range 36 [document, 0, document, 2], point 50 [comment, -1] -PASS Range 36 [document, 0, document, 2], point 51 [comment, 0] -PASS Range 36 [document, 0, document, 2], point 52 [comment, 4] -PASS Range 36 [document, 0, document, 2], point 53 [comment, 96] -PASS Range 36 [document, 0, document, 2], point 54 [foreignDoc, 0] -PASS Range 36 [document, 0, document, 2], point 55 [foreignDoc, 1] -PASS Range 36 [document, 0, document, 2], point 56 [foreignComment, 2] -PASS Range 36 [document, 0, document, 2], point 57 [foreignTextNode, 0] -PASS Range 36 [document, 0, document, 2], point 58 [foreignTextNode, 36] -PASS Range 36 [document, 0, document, 2], point 59 [xmlDoc, -1] -PASS Range 36 [document, 0, document, 2], point 60 [xmlDoc, 0] -PASS Range 36 [document, 0, document, 2], point 61 [xmlDoc, 1] -PASS Range 36 [document, 0, document, 2], point 62 [xmlDoc, 5] -PASS Range 36 [document, 0, document, 2], point 63 [xmlComment, 0] -PASS Range 36 [document, 0, document, 2], point 64 [xmlComment, 4] -PASS Range 36 [document, 0, document, 2], point 65 [processingInstruction, 0] -PASS Range 36 [document, 0, document, 2], point 66 [processingInstruction, 5] -PASS Range 36 [document, 0, document, 2], point 67 [processingInstruction, 9] -PASS Range 36 [document, 0, document, 2], point 68 [detachedTextNode, 0] -PASS Range 36 [document, 0, document, 2], point 69 [detachedTextNode, 8] -PASS Range 36 [document, 0, document, 2], point 70 [detachedForeignTextNode, 0] -PASS Range 36 [document, 0, document, 2], point 71 [detachedForeignTextNode, 8] -PASS Range 36 [document, 0, document, 2], point 72 [detachedXmlTextNode, 0] -PASS Range 36 [document, 0, document, 2], point 73 [detachedXmlTextNode, 8] -PASS Range 36 [document, 0, document, 2], point 74 [detachedProcessingInstruction, 12] -PASS Range 36 [document, 0, document, 2], point 75 [detachedComment, 3] -PASS Range 36 [document, 0, document, 2], point 76 [detachedComment, 5] -PASS Range 36 [document, 0, document, 2], point 77 [detachedForeignComment, 0] -PASS Range 36 [document, 0, document, 2], point 78 [detachedForeignComment, 4] -PASS Range 36 [document, 0, document, 2], point 79 [detachedXmlComment, 2] -PASS Range 36 [document, 0, document, 2], point 80 [docfrag, 0] -PASS Range 36 [document, 0, document, 2], point 81 [foreignDocfrag, 0] -PASS Range 36 [document, 0, document, 2], point 82 [xmlDocfrag, 0] -PASS Range 36 [document, 0, document, 2], point 83 [doctype, 0] -FAIL Range 36 [document, 0, document, 2], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 36 [document, 0, document, 2], point 85 [doctype, 1] -PASS Range 36 [document, 0, document, 2], point 86 [foreignDoctype, 0] -PASS Range 36 [document, 0, document, 2], point 87 [xmlDoctype, 0] -PASS Range 37 [document, 1, document, 2], point 0 [paras[0].firstChild, -1] -PASS Range 37 [document, 1, document, 2], point 1 [paras[0].firstChild, 0] -PASS Range 37 [document, 1, document, 2], point 2 [paras[0].firstChild, 1] -PASS Range 37 [document, 1, document, 2], point 3 [paras[0].firstChild, 2] -PASS Range 37 [document, 1, document, 2], point 4 [paras[0].firstChild, 8] -PASS Range 37 [document, 1, document, 2], point 5 [paras[0].firstChild, 9] -PASS Range 37 [document, 1, document, 2], point 6 [paras[0].firstChild, 10] -PASS Range 37 [document, 1, document, 2], point 7 [paras[0].firstChild, 65535] -PASS Range 37 [document, 1, document, 2], point 8 [paras[1].firstChild, -1] -PASS Range 37 [document, 1, document, 2], point 9 [paras[1].firstChild, 0] -PASS Range 37 [document, 1, document, 2], point 10 [paras[1].firstChild, 1] -PASS Range 37 [document, 1, document, 2], point 11 [paras[1].firstChild, 2] -PASS Range 37 [document, 1, document, 2], point 12 [paras[1].firstChild, 8] -PASS Range 37 [document, 1, document, 2], point 13 [paras[1].firstChild, 9] -PASS Range 37 [document, 1, document, 2], point 14 [paras[1].firstChild, 10] -PASS Range 37 [document, 1, document, 2], point 15 [paras[1].firstChild, 65535] -PASS Range 37 [document, 1, document, 2], point 16 [detachedPara1.firstChild, 0] -PASS Range 37 [document, 1, document, 2], point 17 [detachedPara1.firstChild, 1] -PASS Range 37 [document, 1, document, 2], point 18 [detachedPara1.firstChild, 8] -PASS Range 37 [document, 1, document, 2], point 19 [detachedPara1.firstChild, 9] -PASS Range 37 [document, 1, document, 2], point 20 [foreignPara1.firstChild, 0] -PASS Range 37 [document, 1, document, 2], point 21 [foreignPara1.firstChild, 1] -PASS Range 37 [document, 1, document, 2], point 22 [foreignPara1.firstChild, 8] -PASS Range 37 [document, 1, document, 2], point 23 [foreignPara1.firstChild, 9] -PASS Range 37 [document, 1, document, 2], point 24 [document.documentElement, -1] -PASS Range 37 [document, 1, document, 2], point 25 [document.documentElement, 0] -PASS Range 37 [document, 1, document, 2], point 26 [document.documentElement, 1] -PASS Range 37 [document, 1, document, 2], point 27 [document.documentElement, 2] -PASS Range 37 [document, 1, document, 2], point 28 [document.documentElement, 7] -PASS Range 37 [document, 1, document, 2], point 29 [document.head, 1] -PASS Range 37 [document, 1, document, 2], point 30 [document.body, 3] -PASS Range 37 [document, 1, document, 2], point 31 [foreignDoc.documentElement, 0] -PASS Range 37 [document, 1, document, 2], point 32 [foreignDoc.documentElement, 1] -PASS Range 37 [document, 1, document, 2], point 33 [foreignDoc.head, 0] -PASS Range 37 [document, 1, document, 2], point 34 [foreignDoc.body, 1] -PASS Range 37 [document, 1, document, 2], point 35 [paras[0], 0] -PASS Range 37 [document, 1, document, 2], point 36 [paras[0], 1] -PASS Range 37 [document, 1, document, 2], point 37 [paras[0], 2] -PASS Range 37 [document, 1, document, 2], point 38 [paras[1], 0] -PASS Range 37 [document, 1, document, 2], point 39 [paras[1], 1] -PASS Range 37 [document, 1, document, 2], point 40 [paras[1], 2] -PASS Range 37 [document, 1, document, 2], point 41 [detachedPara1, 0] -PASS Range 37 [document, 1, document, 2], point 42 [detachedPara1, 1] -PASS Range 37 [document, 1, document, 2], point 43 [testDiv, 0] -PASS Range 37 [document, 1, document, 2], point 44 [testDiv, 3] -PASS Range 37 [document, 1, document, 2], point 45 [document, -1] -PASS Range 37 [document, 1, document, 2], point 46 [document, 0] -PASS Range 37 [document, 1, document, 2], point 47 [document, 1] -PASS Range 37 [document, 1, document, 2], point 48 [document, 2] -PASS Range 37 [document, 1, document, 2], point 49 [document, 3] -PASS Range 37 [document, 1, document, 2], point 50 [comment, -1] -PASS Range 37 [document, 1, document, 2], point 51 [comment, 0] -PASS Range 37 [document, 1, document, 2], point 52 [comment, 4] -PASS Range 37 [document, 1, document, 2], point 53 [comment, 96] -PASS Range 37 [document, 1, document, 2], point 54 [foreignDoc, 0] -PASS Range 37 [document, 1, document, 2], point 55 [foreignDoc, 1] -PASS Range 37 [document, 1, document, 2], point 56 [foreignComment, 2] -PASS Range 37 [document, 1, document, 2], point 57 [foreignTextNode, 0] -PASS Range 37 [document, 1, document, 2], point 58 [foreignTextNode, 36] -PASS Range 37 [document, 1, document, 2], point 59 [xmlDoc, -1] -PASS Range 37 [document, 1, document, 2], point 60 [xmlDoc, 0] -PASS Range 37 [document, 1, document, 2], point 61 [xmlDoc, 1] -PASS Range 37 [document, 1, document, 2], point 62 [xmlDoc, 5] -PASS Range 37 [document, 1, document, 2], point 63 [xmlComment, 0] -PASS Range 37 [document, 1, document, 2], point 64 [xmlComment, 4] -PASS Range 37 [document, 1, document, 2], point 65 [processingInstruction, 0] -PASS Range 37 [document, 1, document, 2], point 66 [processingInstruction, 5] -PASS Range 37 [document, 1, document, 2], point 67 [processingInstruction, 9] -PASS Range 37 [document, 1, document, 2], point 68 [detachedTextNode, 0] -PASS Range 37 [document, 1, document, 2], point 69 [detachedTextNode, 8] -PASS Range 37 [document, 1, document, 2], point 70 [detachedForeignTextNode, 0] -PASS Range 37 [document, 1, document, 2], point 71 [detachedForeignTextNode, 8] -PASS Range 37 [document, 1, document, 2], point 72 [detachedXmlTextNode, 0] -PASS Range 37 [document, 1, document, 2], point 73 [detachedXmlTextNode, 8] -PASS Range 37 [document, 1, document, 2], point 74 [detachedProcessingInstruction, 12] -PASS Range 37 [document, 1, document, 2], point 75 [detachedComment, 3] -PASS Range 37 [document, 1, document, 2], point 76 [detachedComment, 5] -PASS Range 37 [document, 1, document, 2], point 77 [detachedForeignComment, 0] -PASS Range 37 [document, 1, document, 2], point 78 [detachedForeignComment, 4] -PASS Range 37 [document, 1, document, 2], point 79 [detachedXmlComment, 2] -PASS Range 37 [document, 1, document, 2], point 80 [docfrag, 0] -PASS Range 37 [document, 1, document, 2], point 81 [foreignDocfrag, 0] -PASS Range 37 [document, 1, document, 2], point 82 [xmlDocfrag, 0] -PASS Range 37 [document, 1, document, 2], point 83 [doctype, 0] -FAIL Range 37 [document, 1, document, 2], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 37 [document, 1, document, 2], point 85 [doctype, 1] -PASS Range 37 [document, 1, document, 2], point 86 [foreignDoctype, 0] -PASS Range 37 [document, 1, document, 2], point 87 [xmlDoctype, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 0 [paras[0].firstChild, -1] -PASS Range 38 [testDiv, 0, comment, 5], point 1 [paras[0].firstChild, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 2 [paras[0].firstChild, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 3 [paras[0].firstChild, 2] -PASS Range 38 [testDiv, 0, comment, 5], point 4 [paras[0].firstChild, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 5 [paras[0].firstChild, 9] -PASS Range 38 [testDiv, 0, comment, 5], point 6 [paras[0].firstChild, 10] -PASS Range 38 [testDiv, 0, comment, 5], point 7 [paras[0].firstChild, 65535] -PASS Range 38 [testDiv, 0, comment, 5], point 8 [paras[1].firstChild, -1] -PASS Range 38 [testDiv, 0, comment, 5], point 9 [paras[1].firstChild, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 10 [paras[1].firstChild, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 11 [paras[1].firstChild, 2] -PASS Range 38 [testDiv, 0, comment, 5], point 12 [paras[1].firstChild, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 13 [paras[1].firstChild, 9] -PASS Range 38 [testDiv, 0, comment, 5], point 14 [paras[1].firstChild, 10] -PASS Range 38 [testDiv, 0, comment, 5], point 15 [paras[1].firstChild, 65535] -PASS Range 38 [testDiv, 0, comment, 5], point 16 [detachedPara1.firstChild, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 17 [detachedPara1.firstChild, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 18 [detachedPara1.firstChild, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 19 [detachedPara1.firstChild, 9] -PASS Range 38 [testDiv, 0, comment, 5], point 20 [foreignPara1.firstChild, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 21 [foreignPara1.firstChild, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 22 [foreignPara1.firstChild, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 23 [foreignPara1.firstChild, 9] -PASS Range 38 [testDiv, 0, comment, 5], point 24 [document.documentElement, -1] -PASS Range 38 [testDiv, 0, comment, 5], point 25 [document.documentElement, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 26 [document.documentElement, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 27 [document.documentElement, 2] -PASS Range 38 [testDiv, 0, comment, 5], point 28 [document.documentElement, 7] -PASS Range 38 [testDiv, 0, comment, 5], point 29 [document.head, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 30 [document.body, 3] -PASS Range 38 [testDiv, 0, comment, 5], point 31 [foreignDoc.documentElement, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 32 [foreignDoc.documentElement, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 33 [foreignDoc.head, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 34 [foreignDoc.body, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 35 [paras[0], 0] -PASS Range 38 [testDiv, 0, comment, 5], point 36 [paras[0], 1] -PASS Range 38 [testDiv, 0, comment, 5], point 37 [paras[0], 2] -PASS Range 38 [testDiv, 0, comment, 5], point 38 [paras[1], 0] -PASS Range 38 [testDiv, 0, comment, 5], point 39 [paras[1], 1] -PASS Range 38 [testDiv, 0, comment, 5], point 40 [paras[1], 2] -PASS Range 38 [testDiv, 0, comment, 5], point 41 [detachedPara1, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 42 [detachedPara1, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 43 [testDiv, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 44 [testDiv, 3] -PASS Range 38 [testDiv, 0, comment, 5], point 45 [document, -1] -PASS Range 38 [testDiv, 0, comment, 5], point 46 [document, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 47 [document, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 48 [document, 2] -PASS Range 38 [testDiv, 0, comment, 5], point 49 [document, 3] -PASS Range 38 [testDiv, 0, comment, 5], point 50 [comment, -1] -PASS Range 38 [testDiv, 0, comment, 5], point 51 [comment, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 52 [comment, 4] -PASS Range 38 [testDiv, 0, comment, 5], point 53 [comment, 96] -PASS Range 38 [testDiv, 0, comment, 5], point 54 [foreignDoc, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 55 [foreignDoc, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 56 [foreignComment, 2] -PASS Range 38 [testDiv, 0, comment, 5], point 57 [foreignTextNode, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 58 [foreignTextNode, 36] -PASS Range 38 [testDiv, 0, comment, 5], point 59 [xmlDoc, -1] -PASS Range 38 [testDiv, 0, comment, 5], point 60 [xmlDoc, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 61 [xmlDoc, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 62 [xmlDoc, 5] -PASS Range 38 [testDiv, 0, comment, 5], point 63 [xmlComment, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 64 [xmlComment, 4] -PASS Range 38 [testDiv, 0, comment, 5], point 65 [processingInstruction, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 66 [processingInstruction, 5] -PASS Range 38 [testDiv, 0, comment, 5], point 67 [processingInstruction, 9] -PASS Range 38 [testDiv, 0, comment, 5], point 68 [detachedTextNode, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 69 [detachedTextNode, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 70 [detachedForeignTextNode, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 71 [detachedForeignTextNode, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 72 [detachedXmlTextNode, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 73 [detachedXmlTextNode, 8] -PASS Range 38 [testDiv, 0, comment, 5], point 74 [detachedProcessingInstruction, 12] -PASS Range 38 [testDiv, 0, comment, 5], point 75 [detachedComment, 3] -PASS Range 38 [testDiv, 0, comment, 5], point 76 [detachedComment, 5] -PASS Range 38 [testDiv, 0, comment, 5], point 77 [detachedForeignComment, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 78 [detachedForeignComment, 4] -PASS Range 38 [testDiv, 0, comment, 5], point 79 [detachedXmlComment, 2] -PASS Range 38 [testDiv, 0, comment, 5], point 80 [docfrag, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 81 [foreignDocfrag, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 82 [xmlDocfrag, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 83 [doctype, 0] -FAIL Range 38 [testDiv, 0, comment, 5], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 38 [testDiv, 0, comment, 5], point 85 [doctype, 1] -PASS Range 38 [testDiv, 0, comment, 5], point 86 [foreignDoctype, 0] -PASS Range 38 [testDiv, 0, comment, 5], point 87 [xmlDoctype, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 0 [paras[0].firstChild, -1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 1 [paras[0].firstChild, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 2 [paras[0].firstChild, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 3 [paras[0].firstChild, 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 4 [paras[0].firstChild, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 5 [paras[0].firstChild, 9] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 6 [paras[0].firstChild, 10] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 7 [paras[0].firstChild, 65535] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 8 [paras[1].firstChild, -1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 9 [paras[1].firstChild, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 10 [paras[1].firstChild, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 11 [paras[1].firstChild, 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 12 [paras[1].firstChild, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 13 [paras[1].firstChild, 9] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 14 [paras[1].firstChild, 10] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 15 [paras[1].firstChild, 65535] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 16 [detachedPara1.firstChild, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 17 [detachedPara1.firstChild, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 18 [detachedPara1.firstChild, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 19 [detachedPara1.firstChild, 9] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 20 [foreignPara1.firstChild, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 21 [foreignPara1.firstChild, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 22 [foreignPara1.firstChild, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 23 [foreignPara1.firstChild, 9] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 24 [document.documentElement, -1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 25 [document.documentElement, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 26 [document.documentElement, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 27 [document.documentElement, 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 28 [document.documentElement, 7] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 29 [document.head, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 30 [document.body, 3] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 31 [foreignDoc.documentElement, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 32 [foreignDoc.documentElement, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 33 [foreignDoc.head, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 34 [foreignDoc.body, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 35 [paras[0], 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 36 [paras[0], 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 37 [paras[0], 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 38 [paras[1], 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 39 [paras[1], 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 40 [paras[1], 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 41 [detachedPara1, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 42 [detachedPara1, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 43 [testDiv, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 44 [testDiv, 3] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 45 [document, -1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 46 [document, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 47 [document, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 48 [document, 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 49 [document, 3] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 50 [comment, -1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 51 [comment, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 52 [comment, 4] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 53 [comment, 96] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 54 [foreignDoc, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 55 [foreignDoc, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 56 [foreignComment, 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 57 [foreignTextNode, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 58 [foreignTextNode, 36] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 59 [xmlDoc, -1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 60 [xmlDoc, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 61 [xmlDoc, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 62 [xmlDoc, 5] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 63 [xmlComment, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 64 [xmlComment, 4] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 65 [processingInstruction, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 66 [processingInstruction, 5] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 67 [processingInstruction, 9] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 68 [detachedTextNode, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 69 [detachedTextNode, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 70 [detachedForeignTextNode, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 71 [detachedForeignTextNode, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 72 [detachedXmlTextNode, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 73 [detachedXmlTextNode, 8] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 74 [detachedProcessingInstruction, 12] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 75 [detachedComment, 3] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 76 [detachedComment, 5] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 77 [detachedForeignComment, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 78 [detachedForeignComment, 4] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 79 [detachedXmlComment, 2] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 80 [docfrag, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 81 [foreignDocfrag, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 82 [xmlDocfrag, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 83 [doctype, 0] -FAIL Range 39 [paras[2].firstChild, 4, comment, 2], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 85 [doctype, 1] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 86 [foreignDoctype, 0] -PASS Range 39 [paras[2].firstChild, 4, comment, 2], point 87 [xmlDoctype, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 0 [paras[0].firstChild, -1] -PASS Range 40 [paras[3], 1, comment, 8], point 1 [paras[0].firstChild, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 2 [paras[0].firstChild, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 3 [paras[0].firstChild, 2] -PASS Range 40 [paras[3], 1, comment, 8], point 4 [paras[0].firstChild, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 5 [paras[0].firstChild, 9] -PASS Range 40 [paras[3], 1, comment, 8], point 6 [paras[0].firstChild, 10] -PASS Range 40 [paras[3], 1, comment, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 40 [paras[3], 1, comment, 8], point 8 [paras[1].firstChild, -1] -PASS Range 40 [paras[3], 1, comment, 8], point 9 [paras[1].firstChild, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 10 [paras[1].firstChild, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 11 [paras[1].firstChild, 2] -PASS Range 40 [paras[3], 1, comment, 8], point 12 [paras[1].firstChild, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 13 [paras[1].firstChild, 9] -PASS Range 40 [paras[3], 1, comment, 8], point 14 [paras[1].firstChild, 10] -PASS Range 40 [paras[3], 1, comment, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 40 [paras[3], 1, comment, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 40 [paras[3], 1, comment, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 40 [paras[3], 1, comment, 8], point 24 [document.documentElement, -1] -PASS Range 40 [paras[3], 1, comment, 8], point 25 [document.documentElement, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 26 [document.documentElement, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 27 [document.documentElement, 2] -PASS Range 40 [paras[3], 1, comment, 8], point 28 [document.documentElement, 7] -PASS Range 40 [paras[3], 1, comment, 8], point 29 [document.head, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 30 [document.body, 3] -PASS Range 40 [paras[3], 1, comment, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 33 [foreignDoc.head, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 34 [foreignDoc.body, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 35 [paras[0], 0] -PASS Range 40 [paras[3], 1, comment, 8], point 36 [paras[0], 1] -PASS Range 40 [paras[3], 1, comment, 8], point 37 [paras[0], 2] -PASS Range 40 [paras[3], 1, comment, 8], point 38 [paras[1], 0] -PASS Range 40 [paras[3], 1, comment, 8], point 39 [paras[1], 1] -PASS Range 40 [paras[3], 1, comment, 8], point 40 [paras[1], 2] -PASS Range 40 [paras[3], 1, comment, 8], point 41 [detachedPara1, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 42 [detachedPara1, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 43 [testDiv, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 44 [testDiv, 3] -PASS Range 40 [paras[3], 1, comment, 8], point 45 [document, -1] -PASS Range 40 [paras[3], 1, comment, 8], point 46 [document, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 47 [document, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 48 [document, 2] -PASS Range 40 [paras[3], 1, comment, 8], point 49 [document, 3] -PASS Range 40 [paras[3], 1, comment, 8], point 50 [comment, -1] -PASS Range 40 [paras[3], 1, comment, 8], point 51 [comment, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 52 [comment, 4] -PASS Range 40 [paras[3], 1, comment, 8], point 53 [comment, 96] -PASS Range 40 [paras[3], 1, comment, 8], point 54 [foreignDoc, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 55 [foreignDoc, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 56 [foreignComment, 2] -PASS Range 40 [paras[3], 1, comment, 8], point 57 [foreignTextNode, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 58 [foreignTextNode, 36] -PASS Range 40 [paras[3], 1, comment, 8], point 59 [xmlDoc, -1] -PASS Range 40 [paras[3], 1, comment, 8], point 60 [xmlDoc, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 61 [xmlDoc, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 62 [xmlDoc, 5] -PASS Range 40 [paras[3], 1, comment, 8], point 63 [xmlComment, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 64 [xmlComment, 4] -PASS Range 40 [paras[3], 1, comment, 8], point 65 [processingInstruction, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 66 [processingInstruction, 5] -PASS Range 40 [paras[3], 1, comment, 8], point 67 [processingInstruction, 9] -PASS Range 40 [paras[3], 1, comment, 8], point 68 [detachedTextNode, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 69 [detachedTextNode, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 40 [paras[3], 1, comment, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 40 [paras[3], 1, comment, 8], point 75 [detachedComment, 3] -PASS Range 40 [paras[3], 1, comment, 8], point 76 [detachedComment, 5] -PASS Range 40 [paras[3], 1, comment, 8], point 77 [detachedForeignComment, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 78 [detachedForeignComment, 4] -PASS Range 40 [paras[3], 1, comment, 8], point 79 [detachedXmlComment, 2] -PASS Range 40 [paras[3], 1, comment, 8], point 80 [docfrag, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 81 [foreignDocfrag, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 82 [xmlDocfrag, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 83 [doctype, 0] -FAIL Range 40 [paras[3], 1, comment, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 40 [paras[3], 1, comment, 8], point 85 [doctype, 1] -PASS Range 40 [paras[3], 1, comment, 8], point 86 [foreignDoctype, 0] -PASS Range 40 [paras[3], 1, comment, 8], point 87 [xmlDoctype, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 0 [paras[0].firstChild, -1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 1 [paras[0].firstChild, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 2 [paras[0].firstChild, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 3 [paras[0].firstChild, 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 4 [paras[0].firstChild, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 5 [paras[0].firstChild, 9] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 6 [paras[0].firstChild, 10] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 8 [paras[1].firstChild, -1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 9 [paras[1].firstChild, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 10 [paras[1].firstChild, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 11 [paras[1].firstChild, 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 12 [paras[1].firstChild, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 13 [paras[1].firstChild, 9] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 14 [paras[1].firstChild, 10] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 24 [document.documentElement, -1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 25 [document.documentElement, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 26 [document.documentElement, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 27 [document.documentElement, 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 28 [document.documentElement, 7] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 29 [document.head, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 30 [document.body, 3] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 33 [foreignDoc.head, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 34 [foreignDoc.body, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 35 [paras[0], 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 36 [paras[0], 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 37 [paras[0], 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 38 [paras[1], 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 39 [paras[1], 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 40 [paras[1], 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 41 [detachedPara1, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 42 [detachedPara1, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 43 [testDiv, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 44 [testDiv, 3] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 45 [document, -1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 46 [document, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 47 [document, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 48 [document, 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 49 [document, 3] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 50 [comment, -1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 51 [comment, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 52 [comment, 4] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 53 [comment, 96] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 54 [foreignDoc, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 55 [foreignDoc, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 56 [foreignComment, 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 57 [foreignTextNode, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 58 [foreignTextNode, 36] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 59 [xmlDoc, -1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 60 [xmlDoc, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 61 [xmlDoc, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 62 [xmlDoc, 5] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 63 [xmlComment, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 64 [xmlComment, 4] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 65 [processingInstruction, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 66 [processingInstruction, 5] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 67 [processingInstruction, 9] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 68 [detachedTextNode, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 69 [detachedTextNode, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 75 [detachedComment, 3] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 76 [detachedComment, 5] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 77 [detachedForeignComment, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 78 [detachedForeignComment, 4] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 79 [detachedXmlComment, 2] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 80 [docfrag, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 81 [foreignDocfrag, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 82 [xmlDocfrag, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 83 [doctype, 0] -FAIL Range 41 [foreignDoc, 0, foreignDoc, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 85 [doctype, 1] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 86 [foreignDoctype, 0] -PASS Range 41 [foreignDoc, 0, foreignDoc, 0], point 87 [xmlDoctype, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 0 [paras[0].firstChild, -1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 1 [paras[0].firstChild, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 2 [paras[0].firstChild, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 3 [paras[0].firstChild, 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 4 [paras[0].firstChild, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 5 [paras[0].firstChild, 9] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 6 [paras[0].firstChild, 10] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 7 [paras[0].firstChild, 65535] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 8 [paras[1].firstChild, -1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 9 [paras[1].firstChild, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 10 [paras[1].firstChild, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 11 [paras[1].firstChild, 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 12 [paras[1].firstChild, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 13 [paras[1].firstChild, 9] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 14 [paras[1].firstChild, 10] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 15 [paras[1].firstChild, 65535] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 16 [detachedPara1.firstChild, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 17 [detachedPara1.firstChild, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 18 [detachedPara1.firstChild, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 19 [detachedPara1.firstChild, 9] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 20 [foreignPara1.firstChild, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 21 [foreignPara1.firstChild, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 22 [foreignPara1.firstChild, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 23 [foreignPara1.firstChild, 9] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 24 [document.documentElement, -1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 25 [document.documentElement, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 26 [document.documentElement, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 27 [document.documentElement, 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 28 [document.documentElement, 7] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 29 [document.head, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 30 [document.body, 3] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 31 [foreignDoc.documentElement, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 32 [foreignDoc.documentElement, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 33 [foreignDoc.head, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 34 [foreignDoc.body, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 35 [paras[0], 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 36 [paras[0], 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 37 [paras[0], 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 38 [paras[1], 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 39 [paras[1], 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 40 [paras[1], 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 41 [detachedPara1, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 42 [detachedPara1, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 43 [testDiv, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 44 [testDiv, 3] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 45 [document, -1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 46 [document, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 47 [document, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 48 [document, 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 49 [document, 3] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 50 [comment, -1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 51 [comment, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 52 [comment, 4] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 53 [comment, 96] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 54 [foreignDoc, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 55 [foreignDoc, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 56 [foreignComment, 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 57 [foreignTextNode, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 58 [foreignTextNode, 36] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 59 [xmlDoc, -1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 60 [xmlDoc, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 61 [xmlDoc, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 62 [xmlDoc, 5] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 63 [xmlComment, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 64 [xmlComment, 4] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 65 [processingInstruction, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 66 [processingInstruction, 5] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 67 [processingInstruction, 9] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 68 [detachedTextNode, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 69 [detachedTextNode, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 70 [detachedForeignTextNode, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 71 [detachedForeignTextNode, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 72 [detachedXmlTextNode, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 73 [detachedXmlTextNode, 8] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 74 [detachedProcessingInstruction, 12] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 75 [detachedComment, 3] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 76 [detachedComment, 5] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 77 [detachedForeignComment, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 78 [detachedForeignComment, 4] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 79 [detachedXmlComment, 2] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 80 [docfrag, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 81 [foreignDocfrag, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 82 [xmlDocfrag, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 83 [doctype, 0] -FAIL Range 42 [foreignDoc, 1, foreignComment, 2], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 85 [doctype, 1] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 86 [foreignDoctype, 0] -PASS Range 42 [foreignDoc, 1, foreignComment, 2], point 87 [xmlDoctype, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 0 [paras[0].firstChild, -1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 1 [paras[0].firstChild, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 2 [paras[0].firstChild, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 3 [paras[0].firstChild, 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 4 [paras[0].firstChild, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 5 [paras[0].firstChild, 9] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 6 [paras[0].firstChild, 10] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 7 [paras[0].firstChild, 65535] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 8 [paras[1].firstChild, -1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 9 [paras[1].firstChild, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 10 [paras[1].firstChild, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 11 [paras[1].firstChild, 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 12 [paras[1].firstChild, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 13 [paras[1].firstChild, 9] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 14 [paras[1].firstChild, 10] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 15 [paras[1].firstChild, 65535] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 16 [detachedPara1.firstChild, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 17 [detachedPara1.firstChild, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 18 [detachedPara1.firstChild, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 19 [detachedPara1.firstChild, 9] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 20 [foreignPara1.firstChild, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 21 [foreignPara1.firstChild, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 22 [foreignPara1.firstChild, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 23 [foreignPara1.firstChild, 9] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 24 [document.documentElement, -1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 25 [document.documentElement, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 26 [document.documentElement, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 27 [document.documentElement, 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 28 [document.documentElement, 7] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 29 [document.head, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 30 [document.body, 3] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 31 [foreignDoc.documentElement, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 32 [foreignDoc.documentElement, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 33 [foreignDoc.head, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 34 [foreignDoc.body, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 35 [paras[0], 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 36 [paras[0], 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 37 [paras[0], 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 38 [paras[1], 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 39 [paras[1], 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 40 [paras[1], 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 41 [detachedPara1, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 42 [detachedPara1, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 43 [testDiv, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 44 [testDiv, 3] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 45 [document, -1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 46 [document, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 47 [document, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 48 [document, 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 49 [document, 3] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 50 [comment, -1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 51 [comment, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 52 [comment, 4] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 53 [comment, 96] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 54 [foreignDoc, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 55 [foreignDoc, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 56 [foreignComment, 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 57 [foreignTextNode, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 58 [foreignTextNode, 36] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 59 [xmlDoc, -1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 60 [xmlDoc, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 61 [xmlDoc, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 62 [xmlDoc, 5] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 63 [xmlComment, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 64 [xmlComment, 4] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 65 [processingInstruction, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 66 [processingInstruction, 5] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 67 [processingInstruction, 9] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 68 [detachedTextNode, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 69 [detachedTextNode, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 70 [detachedForeignTextNode, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 71 [detachedForeignTextNode, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 72 [detachedXmlTextNode, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 73 [detachedXmlTextNode, 8] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 74 [detachedProcessingInstruction, 12] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 75 [detachedComment, 3] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 76 [detachedComment, 5] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 77 [detachedForeignComment, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 78 [detachedForeignComment, 4] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 79 [detachedXmlComment, 2] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 80 [docfrag, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 81 [foreignDocfrag, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 82 [xmlDocfrag, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 83 [doctype, 0] -FAIL Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 85 [doctype, 1] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 86 [foreignDoctype, 0] -PASS Range 43 [foreignDoc.body, 0, foreignTextNode, 36], point 87 [xmlDoctype, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 0 [paras[0].firstChild, -1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 1 [paras[0].firstChild, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 2 [paras[0].firstChild, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 3 [paras[0].firstChild, 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 4 [paras[0].firstChild, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 5 [paras[0].firstChild, 9] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 6 [paras[0].firstChild, 10] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 8 [paras[1].firstChild, -1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 9 [paras[1].firstChild, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 10 [paras[1].firstChild, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 11 [paras[1].firstChild, 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 12 [paras[1].firstChild, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 13 [paras[1].firstChild, 9] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 14 [paras[1].firstChild, 10] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 24 [document.documentElement, -1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 25 [document.documentElement, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 26 [document.documentElement, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 27 [document.documentElement, 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 28 [document.documentElement, 7] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 29 [document.head, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 30 [document.body, 3] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 33 [foreignDoc.head, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 34 [foreignDoc.body, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 35 [paras[0], 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 36 [paras[0], 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 37 [paras[0], 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 38 [paras[1], 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 39 [paras[1], 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 40 [paras[1], 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 41 [detachedPara1, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 42 [detachedPara1, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 43 [testDiv, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 44 [testDiv, 3] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 45 [document, -1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 46 [document, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 47 [document, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 48 [document, 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 49 [document, 3] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 50 [comment, -1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 51 [comment, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 52 [comment, 4] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 53 [comment, 96] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 54 [foreignDoc, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 55 [foreignDoc, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 56 [foreignComment, 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 57 [foreignTextNode, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 58 [foreignTextNode, 36] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 59 [xmlDoc, -1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 60 [xmlDoc, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 61 [xmlDoc, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 62 [xmlDoc, 5] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 63 [xmlComment, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 64 [xmlComment, 4] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 65 [processingInstruction, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 66 [processingInstruction, 5] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 67 [processingInstruction, 9] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 68 [detachedTextNode, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 69 [detachedTextNode, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 75 [detachedComment, 3] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 76 [detachedComment, 5] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 77 [detachedForeignComment, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 78 [detachedForeignComment, 4] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 79 [detachedXmlComment, 2] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 80 [docfrag, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 81 [foreignDocfrag, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 82 [xmlDocfrag, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 83 [doctype, 0] -FAIL Range 44 [xmlDoc, 0, xmlDoc, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 85 [doctype, 1] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 86 [foreignDoctype, 0] -PASS Range 44 [xmlDoc, 0, xmlDoc, 0], point 87 [xmlDoctype, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 0 [paras[0].firstChild, -1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 1 [paras[0].firstChild, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 2 [paras[0].firstChild, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 3 [paras[0].firstChild, 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 4 [paras[0].firstChild, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 5 [paras[0].firstChild, 9] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 6 [paras[0].firstChild, 10] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 8 [paras[1].firstChild, -1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 9 [paras[1].firstChild, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 10 [paras[1].firstChild, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 11 [paras[1].firstChild, 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 12 [paras[1].firstChild, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 13 [paras[1].firstChild, 9] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 14 [paras[1].firstChild, 10] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 24 [document.documentElement, -1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 25 [document.documentElement, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 26 [document.documentElement, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 27 [document.documentElement, 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 28 [document.documentElement, 7] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 29 [document.head, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 30 [document.body, 3] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 33 [foreignDoc.head, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 34 [foreignDoc.body, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 35 [paras[0], 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 36 [paras[0], 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 37 [paras[0], 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 38 [paras[1], 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 39 [paras[1], 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 40 [paras[1], 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 41 [detachedPara1, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 42 [detachedPara1, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 43 [testDiv, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 44 [testDiv, 3] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 45 [document, -1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 46 [document, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 47 [document, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 48 [document, 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 49 [document, 3] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 50 [comment, -1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 51 [comment, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 52 [comment, 4] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 53 [comment, 96] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 54 [foreignDoc, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 55 [foreignDoc, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 56 [foreignComment, 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 57 [foreignTextNode, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 58 [foreignTextNode, 36] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 59 [xmlDoc, -1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 60 [xmlDoc, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 61 [xmlDoc, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 62 [xmlDoc, 5] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 63 [xmlComment, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 64 [xmlComment, 4] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 65 [processingInstruction, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 66 [processingInstruction, 5] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 67 [processingInstruction, 9] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 68 [detachedTextNode, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 69 [detachedTextNode, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 75 [detachedComment, 3] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 76 [detachedComment, 5] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 77 [detachedForeignComment, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 78 [detachedForeignComment, 4] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 79 [detachedXmlComment, 2] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 80 [docfrag, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 81 [foreignDocfrag, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 82 [xmlDocfrag, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 83 [doctype, 0] -FAIL Range 45 [xmlDoc, 1, xmlComment, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 85 [doctype, 1] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 86 [foreignDoctype, 0] -PASS Range 45 [xmlDoc, 1, xmlComment, 0], point 87 [xmlDoctype, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 0 [paras[0].firstChild, -1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 1 [paras[0].firstChild, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 2 [paras[0].firstChild, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 3 [paras[0].firstChild, 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 4 [paras[0].firstChild, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 5 [paras[0].firstChild, 9] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 6 [paras[0].firstChild, 10] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 8 [paras[1].firstChild, -1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 9 [paras[1].firstChild, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 10 [paras[1].firstChild, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 11 [paras[1].firstChild, 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 12 [paras[1].firstChild, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 13 [paras[1].firstChild, 9] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 14 [paras[1].firstChild, 10] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 24 [document.documentElement, -1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 25 [document.documentElement, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 26 [document.documentElement, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 27 [document.documentElement, 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 28 [document.documentElement, 7] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 29 [document.head, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 30 [document.body, 3] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 33 [foreignDoc.head, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 34 [foreignDoc.body, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 35 [paras[0], 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 36 [paras[0], 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 37 [paras[0], 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 38 [paras[1], 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 39 [paras[1], 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 40 [paras[1], 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 41 [detachedPara1, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 42 [detachedPara1, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 43 [testDiv, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 44 [testDiv, 3] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 45 [document, -1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 46 [document, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 47 [document, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 48 [document, 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 49 [document, 3] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 50 [comment, -1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 51 [comment, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 52 [comment, 4] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 53 [comment, 96] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 54 [foreignDoc, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 55 [foreignDoc, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 56 [foreignComment, 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 57 [foreignTextNode, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 58 [foreignTextNode, 36] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 59 [xmlDoc, -1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 60 [xmlDoc, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 61 [xmlDoc, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 62 [xmlDoc, 5] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 63 [xmlComment, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 64 [xmlComment, 4] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 65 [processingInstruction, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 66 [processingInstruction, 5] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 67 [processingInstruction, 9] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 68 [detachedTextNode, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 69 [detachedTextNode, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 75 [detachedComment, 3] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 76 [detachedComment, 5] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 77 [detachedForeignComment, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 78 [detachedForeignComment, 4] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 79 [detachedXmlComment, 2] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 80 [docfrag, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 81 [foreignDocfrag, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 82 [xmlDocfrag, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 83 [doctype, 0] -FAIL Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 85 [doctype, 1] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 86 [foreignDoctype, 0] -PASS Range 46 [detachedTextNode, 0, detachedTextNode, 8], point 87 [xmlDoctype, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 0 [paras[0].firstChild, -1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 1 [paras[0].firstChild, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 2 [paras[0].firstChild, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 3 [paras[0].firstChild, 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 4 [paras[0].firstChild, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 5 [paras[0].firstChild, 9] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 6 [paras[0].firstChild, 10] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 7 [paras[0].firstChild, 65535] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 8 [paras[1].firstChild, -1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 9 [paras[1].firstChild, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 10 [paras[1].firstChild, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 11 [paras[1].firstChild, 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 12 [paras[1].firstChild, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 13 [paras[1].firstChild, 9] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 14 [paras[1].firstChild, 10] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 15 [paras[1].firstChild, 65535] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 16 [detachedPara1.firstChild, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 17 [detachedPara1.firstChild, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 18 [detachedPara1.firstChild, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 19 [detachedPara1.firstChild, 9] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 20 [foreignPara1.firstChild, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 21 [foreignPara1.firstChild, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 22 [foreignPara1.firstChild, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 23 [foreignPara1.firstChild, 9] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 24 [document.documentElement, -1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 25 [document.documentElement, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 26 [document.documentElement, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 27 [document.documentElement, 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 28 [document.documentElement, 7] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 29 [document.head, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 30 [document.body, 3] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 31 [foreignDoc.documentElement, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 32 [foreignDoc.documentElement, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 33 [foreignDoc.head, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 34 [foreignDoc.body, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 35 [paras[0], 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 36 [paras[0], 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 37 [paras[0], 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 38 [paras[1], 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 39 [paras[1], 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 40 [paras[1], 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 41 [detachedPara1, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 42 [detachedPara1, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 43 [testDiv, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 44 [testDiv, 3] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 45 [document, -1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 46 [document, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 47 [document, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 48 [document, 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 49 [document, 3] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 50 [comment, -1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 51 [comment, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 52 [comment, 4] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 53 [comment, 96] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 54 [foreignDoc, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 55 [foreignDoc, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 56 [foreignComment, 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 57 [foreignTextNode, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 58 [foreignTextNode, 36] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 59 [xmlDoc, -1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 60 [xmlDoc, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 61 [xmlDoc, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 62 [xmlDoc, 5] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 63 [xmlComment, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 64 [xmlComment, 4] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 65 [processingInstruction, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 66 [processingInstruction, 5] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 67 [processingInstruction, 9] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 68 [detachedTextNode, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 69 [detachedTextNode, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 70 [detachedForeignTextNode, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 71 [detachedForeignTextNode, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 72 [detachedXmlTextNode, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 73 [detachedXmlTextNode, 8] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 74 [detachedProcessingInstruction, 12] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 75 [detachedComment, 3] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 76 [detachedComment, 5] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 77 [detachedForeignComment, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 78 [detachedForeignComment, 4] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 79 [detachedXmlComment, 2] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 80 [docfrag, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 81 [foreignDocfrag, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 82 [xmlDocfrag, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 83 [doctype, 0] -FAIL Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 85 [doctype, 1] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 86 [foreignDoctype, 0] -PASS Range 47 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], point 87 [xmlDoctype, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 0 [paras[0].firstChild, -1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 1 [paras[0].firstChild, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 2 [paras[0].firstChild, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 3 [paras[0].firstChild, 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 4 [paras[0].firstChild, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 5 [paras[0].firstChild, 9] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 6 [paras[0].firstChild, 10] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 8 [paras[1].firstChild, -1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 9 [paras[1].firstChild, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 10 [paras[1].firstChild, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 11 [paras[1].firstChild, 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 12 [paras[1].firstChild, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 13 [paras[1].firstChild, 9] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 14 [paras[1].firstChild, 10] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 24 [document.documentElement, -1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 25 [document.documentElement, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 26 [document.documentElement, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 27 [document.documentElement, 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 28 [document.documentElement, 7] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 29 [document.head, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 30 [document.body, 3] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 33 [foreignDoc.head, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 34 [foreignDoc.body, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 35 [paras[0], 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 36 [paras[0], 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 37 [paras[0], 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 38 [paras[1], 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 39 [paras[1], 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 40 [paras[1], 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 41 [detachedPara1, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 42 [detachedPara1, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 43 [testDiv, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 44 [testDiv, 3] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 45 [document, -1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 46 [document, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 47 [document, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 48 [document, 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 49 [document, 3] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 50 [comment, -1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 51 [comment, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 52 [comment, 4] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 53 [comment, 96] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 54 [foreignDoc, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 55 [foreignDoc, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 56 [foreignComment, 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 57 [foreignTextNode, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 58 [foreignTextNode, 36] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 59 [xmlDoc, -1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 60 [xmlDoc, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 61 [xmlDoc, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 62 [xmlDoc, 5] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 63 [xmlComment, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 64 [xmlComment, 4] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 65 [processingInstruction, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 66 [processingInstruction, 5] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 67 [processingInstruction, 9] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 68 [detachedTextNode, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 69 [detachedTextNode, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 75 [detachedComment, 3] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 76 [detachedComment, 5] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 77 [detachedForeignComment, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 78 [detachedForeignComment, 4] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 79 [detachedXmlComment, 2] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 80 [docfrag, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 81 [foreignDocfrag, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 82 [xmlDocfrag, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 83 [doctype, 0] -FAIL Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 85 [doctype, 1] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 86 [foreignDoctype, 0] -PASS Range 48 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 87 [xmlDoctype, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 0 [paras[0].firstChild, -1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 1 [paras[0].firstChild, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 2 [paras[0].firstChild, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 3 [paras[0].firstChild, 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 4 [paras[0].firstChild, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 5 [paras[0].firstChild, 9] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 6 [paras[0].firstChild, 10] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 7 [paras[0].firstChild, 65535] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 8 [paras[1].firstChild, -1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 9 [paras[1].firstChild, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 10 [paras[1].firstChild, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 11 [paras[1].firstChild, 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 12 [paras[1].firstChild, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 13 [paras[1].firstChild, 9] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 14 [paras[1].firstChild, 10] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 15 [paras[1].firstChild, 65535] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 16 [detachedPara1.firstChild, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 17 [detachedPara1.firstChild, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 18 [detachedPara1.firstChild, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 19 [detachedPara1.firstChild, 9] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 20 [foreignPara1.firstChild, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 21 [foreignPara1.firstChild, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 22 [foreignPara1.firstChild, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 23 [foreignPara1.firstChild, 9] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 24 [document.documentElement, -1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 25 [document.documentElement, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 26 [document.documentElement, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 27 [document.documentElement, 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 28 [document.documentElement, 7] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 29 [document.head, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 30 [document.body, 3] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 31 [foreignDoc.documentElement, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 32 [foreignDoc.documentElement, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 33 [foreignDoc.head, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 34 [foreignDoc.body, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 35 [paras[0], 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 36 [paras[0], 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 37 [paras[0], 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 38 [paras[1], 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 39 [paras[1], 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 40 [paras[1], 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 41 [detachedPara1, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 42 [detachedPara1, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 43 [testDiv, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 44 [testDiv, 3] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 45 [document, -1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 46 [document, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 47 [document, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 48 [document, 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 49 [document, 3] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 50 [comment, -1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 51 [comment, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 52 [comment, 4] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 53 [comment, 96] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 54 [foreignDoc, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 55 [foreignDoc, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 56 [foreignComment, 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 57 [foreignTextNode, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 58 [foreignTextNode, 36] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 59 [xmlDoc, -1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 60 [xmlDoc, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 61 [xmlDoc, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 62 [xmlDoc, 5] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 63 [xmlComment, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 64 [xmlComment, 4] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 65 [processingInstruction, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 66 [processingInstruction, 5] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 67 [processingInstruction, 9] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 68 [detachedTextNode, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 69 [detachedTextNode, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 70 [detachedForeignTextNode, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 71 [detachedForeignTextNode, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 72 [detachedXmlTextNode, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 73 [detachedXmlTextNode, 8] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 74 [detachedProcessingInstruction, 12] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 75 [detachedComment, 3] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 76 [detachedComment, 5] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 77 [detachedForeignComment, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 78 [detachedForeignComment, 4] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 79 [detachedXmlComment, 2] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 80 [docfrag, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 81 [foreignDocfrag, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 82 [xmlDocfrag, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 83 [doctype, 0] -FAIL Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 85 [doctype, 1] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 86 [foreignDoctype, 0] -PASS Range 49 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], point 87 [xmlDoctype, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 0 [paras[0].firstChild, -1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 1 [paras[0].firstChild, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 2 [paras[0].firstChild, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 3 [paras[0].firstChild, 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 4 [paras[0].firstChild, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 5 [paras[0].firstChild, 9] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 6 [paras[0].firstChild, 10] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 7 [paras[0].firstChild, 65535] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 8 [paras[1].firstChild, -1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 9 [paras[1].firstChild, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 10 [paras[1].firstChild, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 11 [paras[1].firstChild, 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 12 [paras[1].firstChild, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 13 [paras[1].firstChild, 9] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 14 [paras[1].firstChild, 10] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 15 [paras[1].firstChild, 65535] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 16 [detachedPara1.firstChild, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 17 [detachedPara1.firstChild, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 18 [detachedPara1.firstChild, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 19 [detachedPara1.firstChild, 9] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 20 [foreignPara1.firstChild, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 21 [foreignPara1.firstChild, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 22 [foreignPara1.firstChild, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 23 [foreignPara1.firstChild, 9] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 24 [document.documentElement, -1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 25 [document.documentElement, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 26 [document.documentElement, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 27 [document.documentElement, 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 28 [document.documentElement, 7] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 29 [document.head, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 30 [document.body, 3] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 31 [foreignDoc.documentElement, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 32 [foreignDoc.documentElement, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 33 [foreignDoc.head, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 34 [foreignDoc.body, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 35 [paras[0], 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 36 [paras[0], 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 37 [paras[0], 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 38 [paras[1], 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 39 [paras[1], 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 40 [paras[1], 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 41 [detachedPara1, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 42 [detachedPara1, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 43 [testDiv, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 44 [testDiv, 3] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 45 [document, -1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 46 [document, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 47 [document, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 48 [document, 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 49 [document, 3] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 50 [comment, -1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 51 [comment, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 52 [comment, 4] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 53 [comment, 96] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 54 [foreignDoc, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 55 [foreignDoc, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 56 [foreignComment, 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 57 [foreignTextNode, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 58 [foreignTextNode, 36] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 59 [xmlDoc, -1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 60 [xmlDoc, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 61 [xmlDoc, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 62 [xmlDoc, 5] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 63 [xmlComment, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 64 [xmlComment, 4] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 65 [processingInstruction, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 66 [processingInstruction, 5] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 67 [processingInstruction, 9] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 68 [detachedTextNode, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 69 [detachedTextNode, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 70 [detachedForeignTextNode, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 71 [detachedForeignTextNode, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 72 [detachedXmlTextNode, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 73 [detachedXmlTextNode, 8] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 74 [detachedProcessingInstruction, 12] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 75 [detachedComment, 3] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 76 [detachedComment, 5] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 77 [detachedForeignComment, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 78 [detachedForeignComment, 4] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 79 [detachedXmlComment, 2] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 80 [docfrag, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 81 [foreignDocfrag, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 82 [xmlDocfrag, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 83 [doctype, 0] -FAIL Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 85 [doctype, 1] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 86 [foreignDoctype, 0] -PASS Range 50 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 87 [xmlDoctype, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 0 [paras[0].firstChild, -1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 1 [paras[0].firstChild, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 2 [paras[0].firstChild, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 3 [paras[0].firstChild, 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 4 [paras[0].firstChild, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 5 [paras[0].firstChild, 9] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 6 [paras[0].firstChild, 10] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 7 [paras[0].firstChild, 65535] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 8 [paras[1].firstChild, -1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 9 [paras[1].firstChild, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 10 [paras[1].firstChild, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 11 [paras[1].firstChild, 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 12 [paras[1].firstChild, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 13 [paras[1].firstChild, 9] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 14 [paras[1].firstChild, 10] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 15 [paras[1].firstChild, 65535] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 16 [detachedPara1.firstChild, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 17 [detachedPara1.firstChild, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 18 [detachedPara1.firstChild, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 19 [detachedPara1.firstChild, 9] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 20 [foreignPara1.firstChild, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 21 [foreignPara1.firstChild, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 22 [foreignPara1.firstChild, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 23 [foreignPara1.firstChild, 9] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 24 [document.documentElement, -1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 25 [document.documentElement, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 26 [document.documentElement, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 27 [document.documentElement, 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 28 [document.documentElement, 7] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 29 [document.head, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 30 [document.body, 3] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 31 [foreignDoc.documentElement, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 32 [foreignDoc.documentElement, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 33 [foreignDoc.head, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 34 [foreignDoc.body, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 35 [paras[0], 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 36 [paras[0], 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 37 [paras[0], 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 38 [paras[1], 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 39 [paras[1], 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 40 [paras[1], 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 41 [detachedPara1, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 42 [detachedPara1, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 43 [testDiv, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 44 [testDiv, 3] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 45 [document, -1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 46 [document, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 47 [document, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 48 [document, 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 49 [document, 3] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 50 [comment, -1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 51 [comment, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 52 [comment, 4] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 53 [comment, 96] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 54 [foreignDoc, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 55 [foreignDoc, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 56 [foreignComment, 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 57 [foreignTextNode, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 58 [foreignTextNode, 36] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 59 [xmlDoc, -1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 60 [xmlDoc, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 61 [xmlDoc, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 62 [xmlDoc, 5] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 63 [xmlComment, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 64 [xmlComment, 4] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 65 [processingInstruction, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 66 [processingInstruction, 5] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 67 [processingInstruction, 9] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 68 [detachedTextNode, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 69 [detachedTextNode, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 70 [detachedForeignTextNode, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 71 [detachedForeignTextNode, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 72 [detachedXmlTextNode, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 73 [detachedXmlTextNode, 8] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 74 [detachedProcessingInstruction, 12] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 75 [detachedComment, 3] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 76 [detachedComment, 5] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 77 [detachedForeignComment, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 78 [detachedForeignComment, 4] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 79 [detachedXmlComment, 2] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 80 [docfrag, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 81 [foreignDocfrag, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 82 [xmlDocfrag, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 83 [doctype, 0] -FAIL Range 51 [detachedComment, 3, detachedComment, 4], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 85 [doctype, 1] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 86 [foreignDoctype, 0] -PASS Range 51 [detachedComment, 3, detachedComment, 4], point 87 [xmlDoctype, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 0 [paras[0].firstChild, -1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 1 [paras[0].firstChild, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 2 [paras[0].firstChild, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 3 [paras[0].firstChild, 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 4 [paras[0].firstChild, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 5 [paras[0].firstChild, 9] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 6 [paras[0].firstChild, 10] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 7 [paras[0].firstChild, 65535] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 8 [paras[1].firstChild, -1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 9 [paras[1].firstChild, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 10 [paras[1].firstChild, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 11 [paras[1].firstChild, 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 12 [paras[1].firstChild, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 13 [paras[1].firstChild, 9] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 14 [paras[1].firstChild, 10] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 15 [paras[1].firstChild, 65535] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 16 [detachedPara1.firstChild, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 17 [detachedPara1.firstChild, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 18 [detachedPara1.firstChild, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 19 [detachedPara1.firstChild, 9] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 20 [foreignPara1.firstChild, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 21 [foreignPara1.firstChild, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 22 [foreignPara1.firstChild, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 23 [foreignPara1.firstChild, 9] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 24 [document.documentElement, -1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 25 [document.documentElement, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 26 [document.documentElement, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 27 [document.documentElement, 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 28 [document.documentElement, 7] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 29 [document.head, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 30 [document.body, 3] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 31 [foreignDoc.documentElement, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 32 [foreignDoc.documentElement, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 33 [foreignDoc.head, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 34 [foreignDoc.body, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 35 [paras[0], 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 36 [paras[0], 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 37 [paras[0], 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 38 [paras[1], 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 39 [paras[1], 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 40 [paras[1], 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 41 [detachedPara1, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 42 [detachedPara1, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 43 [testDiv, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 44 [testDiv, 3] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 45 [document, -1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 46 [document, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 47 [document, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 48 [document, 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 49 [document, 3] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 50 [comment, -1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 51 [comment, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 52 [comment, 4] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 53 [comment, 96] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 54 [foreignDoc, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 55 [foreignDoc, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 56 [foreignComment, 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 57 [foreignTextNode, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 58 [foreignTextNode, 36] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 59 [xmlDoc, -1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 60 [xmlDoc, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 61 [xmlDoc, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 62 [xmlDoc, 5] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 63 [xmlComment, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 64 [xmlComment, 4] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 65 [processingInstruction, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 66 [processingInstruction, 5] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 67 [processingInstruction, 9] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 68 [detachedTextNode, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 69 [detachedTextNode, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 70 [detachedForeignTextNode, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 71 [detachedForeignTextNode, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 72 [detachedXmlTextNode, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 73 [detachedXmlTextNode, 8] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 74 [detachedProcessingInstruction, 12] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 75 [detachedComment, 3] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 76 [detachedComment, 5] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 77 [detachedForeignComment, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 78 [detachedForeignComment, 4] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 79 [detachedXmlComment, 2] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 80 [docfrag, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 81 [foreignDocfrag, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 82 [xmlDocfrag, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 83 [doctype, 0] -FAIL Range 52 [detachedComment, 5, detachedComment, 5], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 85 [doctype, 1] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 86 [foreignDoctype, 0] -PASS Range 52 [detachedComment, 5, detachedComment, 5], point 87 [xmlDoctype, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 0 [paras[0].firstChild, -1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 1 [paras[0].firstChild, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 2 [paras[0].firstChild, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 3 [paras[0].firstChild, 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 4 [paras[0].firstChild, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 5 [paras[0].firstChild, 9] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 6 [paras[0].firstChild, 10] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 7 [paras[0].firstChild, 65535] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 8 [paras[1].firstChild, -1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 9 [paras[1].firstChild, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 10 [paras[1].firstChild, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 11 [paras[1].firstChild, 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 12 [paras[1].firstChild, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 13 [paras[1].firstChild, 9] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 14 [paras[1].firstChild, 10] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 15 [paras[1].firstChild, 65535] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 16 [detachedPara1.firstChild, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 17 [detachedPara1.firstChild, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 18 [detachedPara1.firstChild, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 19 [detachedPara1.firstChild, 9] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 20 [foreignPara1.firstChild, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 21 [foreignPara1.firstChild, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 22 [foreignPara1.firstChild, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 23 [foreignPara1.firstChild, 9] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 24 [document.documentElement, -1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 25 [document.documentElement, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 26 [document.documentElement, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 27 [document.documentElement, 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 28 [document.documentElement, 7] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 29 [document.head, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 30 [document.body, 3] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 31 [foreignDoc.documentElement, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 32 [foreignDoc.documentElement, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 33 [foreignDoc.head, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 34 [foreignDoc.body, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 35 [paras[0], 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 36 [paras[0], 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 37 [paras[0], 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 38 [paras[1], 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 39 [paras[1], 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 40 [paras[1], 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 41 [detachedPara1, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 42 [detachedPara1, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 43 [testDiv, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 44 [testDiv, 3] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 45 [document, -1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 46 [document, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 47 [document, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 48 [document, 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 49 [document, 3] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 50 [comment, -1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 51 [comment, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 52 [comment, 4] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 53 [comment, 96] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 54 [foreignDoc, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 55 [foreignDoc, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 56 [foreignComment, 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 57 [foreignTextNode, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 58 [foreignTextNode, 36] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 59 [xmlDoc, -1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 60 [xmlDoc, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 61 [xmlDoc, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 62 [xmlDoc, 5] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 63 [xmlComment, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 64 [xmlComment, 4] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 65 [processingInstruction, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 66 [processingInstruction, 5] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 67 [processingInstruction, 9] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 68 [detachedTextNode, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 69 [detachedTextNode, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 70 [detachedForeignTextNode, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 71 [detachedForeignTextNode, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 72 [detachedXmlTextNode, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 73 [detachedXmlTextNode, 8] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 74 [detachedProcessingInstruction, 12] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 75 [detachedComment, 3] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 76 [detachedComment, 5] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 77 [detachedForeignComment, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 78 [detachedForeignComment, 4] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 79 [detachedXmlComment, 2] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 80 [docfrag, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 81 [foreignDocfrag, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 82 [xmlDocfrag, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 83 [doctype, 0] -FAIL Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 85 [doctype, 1] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 86 [foreignDoctype, 0] -PASS Range 53 [detachedForeignComment, 0, detachedForeignComment, 1], point 87 [xmlDoctype, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 0 [paras[0].firstChild, -1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 1 [paras[0].firstChild, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 2 [paras[0].firstChild, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 3 [paras[0].firstChild, 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 4 [paras[0].firstChild, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 5 [paras[0].firstChild, 9] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 6 [paras[0].firstChild, 10] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 7 [paras[0].firstChild, 65535] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 8 [paras[1].firstChild, -1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 9 [paras[1].firstChild, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 10 [paras[1].firstChild, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 11 [paras[1].firstChild, 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 12 [paras[1].firstChild, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 13 [paras[1].firstChild, 9] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 14 [paras[1].firstChild, 10] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 15 [paras[1].firstChild, 65535] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 16 [detachedPara1.firstChild, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 17 [detachedPara1.firstChild, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 18 [detachedPara1.firstChild, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 19 [detachedPara1.firstChild, 9] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 20 [foreignPara1.firstChild, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 21 [foreignPara1.firstChild, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 22 [foreignPara1.firstChild, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 23 [foreignPara1.firstChild, 9] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 24 [document.documentElement, -1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 25 [document.documentElement, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 26 [document.documentElement, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 27 [document.documentElement, 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 28 [document.documentElement, 7] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 29 [document.head, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 30 [document.body, 3] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 31 [foreignDoc.documentElement, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 32 [foreignDoc.documentElement, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 33 [foreignDoc.head, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 34 [foreignDoc.body, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 35 [paras[0], 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 36 [paras[0], 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 37 [paras[0], 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 38 [paras[1], 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 39 [paras[1], 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 40 [paras[1], 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 41 [detachedPara1, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 42 [detachedPara1, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 43 [testDiv, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 44 [testDiv, 3] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 45 [document, -1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 46 [document, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 47 [document, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 48 [document, 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 49 [document, 3] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 50 [comment, -1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 51 [comment, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 52 [comment, 4] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 53 [comment, 96] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 54 [foreignDoc, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 55 [foreignDoc, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 56 [foreignComment, 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 57 [foreignTextNode, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 58 [foreignTextNode, 36] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 59 [xmlDoc, -1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 60 [xmlDoc, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 61 [xmlDoc, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 62 [xmlDoc, 5] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 63 [xmlComment, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 64 [xmlComment, 4] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 65 [processingInstruction, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 66 [processingInstruction, 5] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 67 [processingInstruction, 9] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 68 [detachedTextNode, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 69 [detachedTextNode, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 70 [detachedForeignTextNode, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 71 [detachedForeignTextNode, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 72 [detachedXmlTextNode, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 73 [detachedXmlTextNode, 8] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 74 [detachedProcessingInstruction, 12] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 75 [detachedComment, 3] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 76 [detachedComment, 5] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 77 [detachedForeignComment, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 78 [detachedForeignComment, 4] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 79 [detachedXmlComment, 2] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 80 [docfrag, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 81 [foreignDocfrag, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 82 [xmlDocfrag, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 83 [doctype, 0] -FAIL Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 85 [doctype, 1] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 86 [foreignDoctype, 0] -PASS Range 54 [detachedForeignComment, 4, detachedForeignComment, 4], point 87 [xmlDoctype, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 0 [paras[0].firstChild, -1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 1 [paras[0].firstChild, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 2 [paras[0].firstChild, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 3 [paras[0].firstChild, 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 4 [paras[0].firstChild, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 5 [paras[0].firstChild, 9] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 6 [paras[0].firstChild, 10] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 7 [paras[0].firstChild, 65535] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 8 [paras[1].firstChild, -1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 9 [paras[1].firstChild, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 10 [paras[1].firstChild, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 11 [paras[1].firstChild, 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 12 [paras[1].firstChild, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 13 [paras[1].firstChild, 9] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 14 [paras[1].firstChild, 10] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 15 [paras[1].firstChild, 65535] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 16 [detachedPara1.firstChild, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 17 [detachedPara1.firstChild, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 18 [detachedPara1.firstChild, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 19 [detachedPara1.firstChild, 9] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 20 [foreignPara1.firstChild, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 21 [foreignPara1.firstChild, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 22 [foreignPara1.firstChild, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 23 [foreignPara1.firstChild, 9] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 24 [document.documentElement, -1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 25 [document.documentElement, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 26 [document.documentElement, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 27 [document.documentElement, 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 28 [document.documentElement, 7] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 29 [document.head, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 30 [document.body, 3] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 31 [foreignDoc.documentElement, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 32 [foreignDoc.documentElement, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 33 [foreignDoc.head, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 34 [foreignDoc.body, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 35 [paras[0], 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 36 [paras[0], 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 37 [paras[0], 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 38 [paras[1], 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 39 [paras[1], 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 40 [paras[1], 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 41 [detachedPara1, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 42 [detachedPara1, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 43 [testDiv, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 44 [testDiv, 3] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 45 [document, -1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 46 [document, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 47 [document, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 48 [document, 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 49 [document, 3] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 50 [comment, -1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 51 [comment, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 52 [comment, 4] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 53 [comment, 96] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 54 [foreignDoc, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 55 [foreignDoc, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 56 [foreignComment, 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 57 [foreignTextNode, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 58 [foreignTextNode, 36] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 59 [xmlDoc, -1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 60 [xmlDoc, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 61 [xmlDoc, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 62 [xmlDoc, 5] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 63 [xmlComment, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 64 [xmlComment, 4] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 65 [processingInstruction, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 66 [processingInstruction, 5] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 67 [processingInstruction, 9] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 68 [detachedTextNode, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 69 [detachedTextNode, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 70 [detachedForeignTextNode, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 71 [detachedForeignTextNode, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 72 [detachedXmlTextNode, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 73 [detachedXmlTextNode, 8] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 74 [detachedProcessingInstruction, 12] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 75 [detachedComment, 3] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 76 [detachedComment, 5] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 77 [detachedForeignComment, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 78 [detachedForeignComment, 4] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 79 [detachedXmlComment, 2] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 80 [docfrag, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 81 [foreignDocfrag, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 82 [xmlDocfrag, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 83 [doctype, 0] -FAIL Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 85 [doctype, 1] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 86 [foreignDoctype, 0] -PASS Range 55 [detachedXmlComment, 2, detachedXmlComment, 6], point 87 [xmlDoctype, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 0 [paras[0].firstChild, -1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 1 [paras[0].firstChild, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 2 [paras[0].firstChild, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 3 [paras[0].firstChild, 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 4 [paras[0].firstChild, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 5 [paras[0].firstChild, 9] -PASS Range 56 [docfrag, 0, docfrag, 0], point 6 [paras[0].firstChild, 10] -PASS Range 56 [docfrag, 0, docfrag, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 56 [docfrag, 0, docfrag, 0], point 8 [paras[1].firstChild, -1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 9 [paras[1].firstChild, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 10 [paras[1].firstChild, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 11 [paras[1].firstChild, 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 12 [paras[1].firstChild, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 13 [paras[1].firstChild, 9] -PASS Range 56 [docfrag, 0, docfrag, 0], point 14 [paras[1].firstChild, 10] -PASS Range 56 [docfrag, 0, docfrag, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 56 [docfrag, 0, docfrag, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 56 [docfrag, 0, docfrag, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 56 [docfrag, 0, docfrag, 0], point 24 [document.documentElement, -1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 25 [document.documentElement, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 26 [document.documentElement, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 27 [document.documentElement, 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 28 [document.documentElement, 7] -PASS Range 56 [docfrag, 0, docfrag, 0], point 29 [document.head, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 30 [document.body, 3] -PASS Range 56 [docfrag, 0, docfrag, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 33 [foreignDoc.head, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 34 [foreignDoc.body, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 35 [paras[0], 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 36 [paras[0], 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 37 [paras[0], 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 38 [paras[1], 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 39 [paras[1], 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 40 [paras[1], 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 41 [detachedPara1, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 42 [detachedPara1, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 43 [testDiv, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 44 [testDiv, 3] -PASS Range 56 [docfrag, 0, docfrag, 0], point 45 [document, -1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 46 [document, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 47 [document, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 48 [document, 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 49 [document, 3] -PASS Range 56 [docfrag, 0, docfrag, 0], point 50 [comment, -1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 51 [comment, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 52 [comment, 4] -PASS Range 56 [docfrag, 0, docfrag, 0], point 53 [comment, 96] -PASS Range 56 [docfrag, 0, docfrag, 0], point 54 [foreignDoc, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 55 [foreignDoc, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 56 [foreignComment, 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 57 [foreignTextNode, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 58 [foreignTextNode, 36] -PASS Range 56 [docfrag, 0, docfrag, 0], point 59 [xmlDoc, -1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 60 [xmlDoc, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 61 [xmlDoc, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 62 [xmlDoc, 5] -PASS Range 56 [docfrag, 0, docfrag, 0], point 63 [xmlComment, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 64 [xmlComment, 4] -PASS Range 56 [docfrag, 0, docfrag, 0], point 65 [processingInstruction, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 66 [processingInstruction, 5] -PASS Range 56 [docfrag, 0, docfrag, 0], point 67 [processingInstruction, 9] -PASS Range 56 [docfrag, 0, docfrag, 0], point 68 [detachedTextNode, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 69 [detachedTextNode, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 56 [docfrag, 0, docfrag, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 56 [docfrag, 0, docfrag, 0], point 75 [detachedComment, 3] -PASS Range 56 [docfrag, 0, docfrag, 0], point 76 [detachedComment, 5] -PASS Range 56 [docfrag, 0, docfrag, 0], point 77 [detachedForeignComment, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 78 [detachedForeignComment, 4] -PASS Range 56 [docfrag, 0, docfrag, 0], point 79 [detachedXmlComment, 2] -PASS Range 56 [docfrag, 0, docfrag, 0], point 80 [docfrag, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 81 [foreignDocfrag, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 82 [xmlDocfrag, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 83 [doctype, 0] -FAIL Range 56 [docfrag, 0, docfrag, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 56 [docfrag, 0, docfrag, 0], point 85 [doctype, 1] -PASS Range 56 [docfrag, 0, docfrag, 0], point 86 [foreignDoctype, 0] -PASS Range 56 [docfrag, 0, docfrag, 0], point 87 [xmlDoctype, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 0 [paras[0].firstChild, -1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 1 [paras[0].firstChild, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 2 [paras[0].firstChild, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 3 [paras[0].firstChild, 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 4 [paras[0].firstChild, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 5 [paras[0].firstChild, 9] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 6 [paras[0].firstChild, 10] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 8 [paras[1].firstChild, -1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 9 [paras[1].firstChild, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 10 [paras[1].firstChild, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 11 [paras[1].firstChild, 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 12 [paras[1].firstChild, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 13 [paras[1].firstChild, 9] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 14 [paras[1].firstChild, 10] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 24 [document.documentElement, -1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 25 [document.documentElement, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 26 [document.documentElement, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 27 [document.documentElement, 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 28 [document.documentElement, 7] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 29 [document.head, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 30 [document.body, 3] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 33 [foreignDoc.head, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 34 [foreignDoc.body, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 35 [paras[0], 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 36 [paras[0], 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 37 [paras[0], 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 38 [paras[1], 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 39 [paras[1], 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 40 [paras[1], 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 41 [detachedPara1, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 42 [detachedPara1, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 43 [testDiv, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 44 [testDiv, 3] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 45 [document, -1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 46 [document, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 47 [document, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 48 [document, 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 49 [document, 3] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 50 [comment, -1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 51 [comment, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 52 [comment, 4] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 53 [comment, 96] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 54 [foreignDoc, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 55 [foreignDoc, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 56 [foreignComment, 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 57 [foreignTextNode, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 58 [foreignTextNode, 36] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 59 [xmlDoc, -1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 60 [xmlDoc, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 61 [xmlDoc, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 62 [xmlDoc, 5] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 63 [xmlComment, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 64 [xmlComment, 4] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 65 [processingInstruction, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 66 [processingInstruction, 5] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 67 [processingInstruction, 9] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 68 [detachedTextNode, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 69 [detachedTextNode, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 75 [detachedComment, 3] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 76 [detachedComment, 5] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 77 [detachedForeignComment, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 78 [detachedForeignComment, 4] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 79 [detachedXmlComment, 2] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 80 [docfrag, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 81 [foreignDocfrag, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 82 [xmlDocfrag, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 83 [doctype, 0] -FAIL Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 85 [doctype, 1] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 86 [foreignDoctype, 0] -PASS Range 57 [foreignDocfrag, 0, foreignDocfrag, 0], point 87 [xmlDoctype, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 0 [paras[0].firstChild, -1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 1 [paras[0].firstChild, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 2 [paras[0].firstChild, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 3 [paras[0].firstChild, 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 4 [paras[0].firstChild, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 5 [paras[0].firstChild, 9] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 6 [paras[0].firstChild, 10] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 7 [paras[0].firstChild, 65535] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 8 [paras[1].firstChild, -1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 9 [paras[1].firstChild, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 10 [paras[1].firstChild, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 11 [paras[1].firstChild, 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 12 [paras[1].firstChild, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 13 [paras[1].firstChild, 9] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 14 [paras[1].firstChild, 10] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 15 [paras[1].firstChild, 65535] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 16 [detachedPara1.firstChild, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 17 [detachedPara1.firstChild, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 18 [detachedPara1.firstChild, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 19 [detachedPara1.firstChild, 9] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 20 [foreignPara1.firstChild, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 21 [foreignPara1.firstChild, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 22 [foreignPara1.firstChild, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 23 [foreignPara1.firstChild, 9] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 24 [document.documentElement, -1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 25 [document.documentElement, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 26 [document.documentElement, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 27 [document.documentElement, 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 28 [document.documentElement, 7] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 29 [document.head, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 30 [document.body, 3] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 31 [foreignDoc.documentElement, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 32 [foreignDoc.documentElement, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 33 [foreignDoc.head, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 34 [foreignDoc.body, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 35 [paras[0], 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 36 [paras[0], 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 37 [paras[0], 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 38 [paras[1], 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 39 [paras[1], 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 40 [paras[1], 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 41 [detachedPara1, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 42 [detachedPara1, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 43 [testDiv, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 44 [testDiv, 3] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 45 [document, -1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 46 [document, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 47 [document, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 48 [document, 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 49 [document, 3] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 50 [comment, -1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 51 [comment, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 52 [comment, 4] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 53 [comment, 96] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 54 [foreignDoc, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 55 [foreignDoc, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 56 [foreignComment, 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 57 [foreignTextNode, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 58 [foreignTextNode, 36] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 59 [xmlDoc, -1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 60 [xmlDoc, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 61 [xmlDoc, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 62 [xmlDoc, 5] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 63 [xmlComment, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 64 [xmlComment, 4] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 65 [processingInstruction, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 66 [processingInstruction, 5] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 67 [processingInstruction, 9] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 68 [detachedTextNode, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 69 [detachedTextNode, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 70 [detachedForeignTextNode, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 71 [detachedForeignTextNode, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 72 [detachedXmlTextNode, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 73 [detachedXmlTextNode, 8] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 74 [detachedProcessingInstruction, 12] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 75 [detachedComment, 3] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 76 [detachedComment, 5] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 77 [detachedForeignComment, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 78 [detachedForeignComment, 4] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 79 [detachedXmlComment, 2] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 80 [docfrag, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 81 [foreignDocfrag, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 82 [xmlDocfrag, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 83 [doctype, 0] -FAIL Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 84 [doctype, -17] assert_throws: Must throw INVALID_NODE_TYPE_ERR when collapse()ing if the node is a DocumentType function "function () { - selection.collapse(point[0], point[1]); - }" threw object "IndexSizeError: Failed to execute 'collapse' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 85 [doctype, 1] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 86 [foreignDoctype, 0] -PASS Range 58 [xmlDocfrag, 0, xmlDocfrag, 0], point 87 [xmlDoctype, 0] -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt deleted file mode 100644 index 9f670cf..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-00-expected.txt +++ /dev/null
@@ -1,2074 +0,0 @@ -This is a testharness.js-based test. -Found 2024 tests; 2001 PASS, 23 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 0 [paras[0].firstChild, -1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 1 [paras[0].firstChild, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 2 [paras[0].firstChild, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 3 [paras[0].firstChild, 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 4 [paras[0].firstChild, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 5 [paras[0].firstChild, 9] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 6 [paras[0].firstChild, 10] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 8 [paras[1].firstChild, -1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 9 [paras[1].firstChild, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 10 [paras[1].firstChild, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 11 [paras[1].firstChild, 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 12 [paras[1].firstChild, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 13 [paras[1].firstChild, 9] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 14 [paras[1].firstChild, 10] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 24 [document.documentElement, -1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 25 [document.documentElement, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 26 [document.documentElement, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 27 [document.documentElement, 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 28 [document.documentElement, 7] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 29 [document.head, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 30 [document.body, 3] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 33 [foreignDoc.head, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 34 [foreignDoc.body, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 35 [paras[0], 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 36 [paras[0], 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 37 [paras[0], 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 38 [paras[1], 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 39 [paras[1], 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 40 [paras[1], 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 41 [detachedPara1, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 42 [detachedPara1, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 43 [testDiv, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 44 [testDiv, 3] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 45 [document, -1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 46 [document, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 47 [document, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 48 [document, 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 49 [document, 3] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 50 [comment, -1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 51 [comment, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 52 [comment, 4] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 53 [comment, 96] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 54 [foreignDoc, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 55 [foreignDoc, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 56 [foreignComment, 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 57 [foreignTextNode, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 58 [foreignTextNode, 36] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 59 [xmlDoc, -1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 60 [xmlDoc, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 61 [xmlDoc, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 62 [xmlDoc, 5] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 63 [xmlComment, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 64 [xmlComment, 4] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 65 [processingInstruction, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 66 [processingInstruction, 5] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 67 [processingInstruction, 9] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 68 [detachedTextNode, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 69 [detachedTextNode, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 75 [detachedComment, 3] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 76 [detachedComment, 5] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 77 [detachedForeignComment, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 78 [detachedForeignComment, 4] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 79 [detachedXmlComment, 2] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 80 [docfrag, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 81 [foreignDocfrag, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 82 [xmlDocfrag, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 83 [doctype, 0] -FAIL extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 85 [doctype, 1] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 86 [foreignDoctype, 0] -PASS extend() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 29 [document.head, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 29 [document.head, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 30 [document.body, 3] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 30 [document.body, 3] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 45 [document, -1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 45 [document, -1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 46 [document, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 46 [document, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 47 [document, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 47 [document, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 48 [document, 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 48 [document, 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 49 [document, 3] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 49 [document, 3] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 50 [comment, -1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 50 [comment, -1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 51 [comment, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 51 [comment, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 52 [comment, 4] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 52 [comment, 4] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 53 [comment, 96] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 53 [comment, 96] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 83 [doctype, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 85 [doctype, 1] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 85 [doctype, 1] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 29 [document.head, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 29 [document.head, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 30 [document.body, 3] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 30 [document.body, 3] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 35 [paras[0], 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 35 [paras[0], 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 36 [paras[0], 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 36 [paras[0], 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 37 [paras[0], 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 37 [paras[0], 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 38 [paras[1], 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 38 [paras[1], 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 39 [paras[1], 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 39 [paras[1], 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 40 [paras[1], 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 40 [paras[1], 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 43 [testDiv, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 43 [testDiv, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 44 [testDiv, 3] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 44 [testDiv, 3] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 45 [document, -1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 45 [document, -1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 46 [document, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 46 [document, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 47 [document, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 47 [document, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 48 [document, 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 48 [document, 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 49 [document, 3] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 49 [document, 3] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 50 [comment, -1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 50 [comment, -1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 51 [comment, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 51 [comment, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 52 [comment, 4] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 52 [comment, 4] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 53 [comment, 96] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 53 [comment, 96] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 56 [foreignComment, 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 56 [foreignComment, 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 63 [xmlComment, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 63 [xmlComment, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 64 [xmlComment, 4] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 64 [xmlComment, 4] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 75 [detachedComment, 3] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 75 [detachedComment, 3] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 76 [detachedComment, 5] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 76 [detachedComment, 5] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 80 [docfrag, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 80 [docfrag, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 83 [doctype, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 83 [doctype, 0] -FAIL extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 85 [doctype, 1] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 85 [doctype, 1] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 29 [document.head, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 29 [document.head, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 30 [document.body, 3] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 30 [document.body, 3] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 35 [paras[0], 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 35 [paras[0], 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 36 [paras[0], 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 36 [paras[0], 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 37 [paras[0], 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 37 [paras[0], 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 38 [paras[1], 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 38 [paras[1], 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 39 [paras[1], 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 39 [paras[1], 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 40 [paras[1], 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 40 [paras[1], 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 43 [testDiv, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 43 [testDiv, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 44 [testDiv, 3] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 44 [testDiv, 3] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 45 [document, -1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 45 [document, -1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 46 [document, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 46 [document, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 47 [document, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 47 [document, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 48 [document, 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 48 [document, 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 49 [document, 3] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 49 [document, 3] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 50 [comment, -1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 50 [comment, -1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 51 [comment, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 51 [comment, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 52 [comment, 4] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 52 [comment, 4] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 53 [comment, 96] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 53 [comment, 96] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 56 [foreignComment, 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 56 [foreignComment, 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 63 [xmlComment, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 63 [xmlComment, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 64 [xmlComment, 4] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 64 [xmlComment, 4] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 75 [detachedComment, 3] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 75 [detachedComment, 3] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 76 [detachedComment, 5] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 76 [detachedComment, 5] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 80 [docfrag, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 80 [docfrag, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 83 [doctype, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 83 [doctype, 0] -FAIL extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 85 [doctype, 1] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 85 [doctype, 1] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9] and point 87 [xmlDoctype, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 0 [paras[0].firstChild, -1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 1 [paras[0].firstChild, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 2 [paras[0].firstChild, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 3 [paras[0].firstChild, 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 4 [paras[0].firstChild, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 5 [paras[0].firstChild, 9] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 6 [paras[0].firstChild, 10] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 8 [paras[1].firstChild, -1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 9 [paras[1].firstChild, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 10 [paras[1].firstChild, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 11 [paras[1].firstChild, 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 12 [paras[1].firstChild, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 13 [paras[1].firstChild, 9] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 14 [paras[1].firstChild, 10] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 24 [document.documentElement, -1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 25 [document.documentElement, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 26 [document.documentElement, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 27 [document.documentElement, 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 28 [document.documentElement, 7] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 29 [document.head, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 30 [document.body, 3] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 33 [foreignDoc.head, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 34 [foreignDoc.body, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 35 [paras[0], 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 36 [paras[0], 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 37 [paras[0], 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 38 [paras[1], 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 39 [paras[1], 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 40 [paras[1], 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 41 [detachedPara1, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 42 [detachedPara1, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 43 [testDiv, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 44 [testDiv, 3] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 45 [document, -1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 46 [document, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 47 [document, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 48 [document, 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 49 [document, 3] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 50 [comment, -1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 51 [comment, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 52 [comment, 4] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 53 [comment, 96] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 54 [foreignDoc, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 55 [foreignDoc, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 56 [foreignComment, 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 57 [foreignTextNode, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 58 [foreignTextNode, 36] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 59 [xmlDoc, -1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 60 [xmlDoc, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 61 [xmlDoc, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 62 [xmlDoc, 5] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 63 [xmlComment, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 64 [xmlComment, 4] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 65 [processingInstruction, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 66 [processingInstruction, 5] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 67 [processingInstruction, 9] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 68 [detachedTextNode, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 69 [detachedTextNode, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 75 [detachedComment, 3] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 76 [detachedComment, 5] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 77 [detachedForeignComment, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 78 [detachedForeignComment, 4] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 79 [detachedXmlComment, 2] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 80 [docfrag, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 81 [foreignDocfrag, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 82 [xmlDocfrag, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 83 [doctype, 0] -FAIL extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 85 [doctype, 1] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 86 [foreignDoctype, 0] -PASS extend() with range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 29 [document.head, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 29 [document.head, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 30 [document.body, 3] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 30 [document.body, 3] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 45 [document, -1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 45 [document, -1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 46 [document, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 46 [document, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 47 [document, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 47 [document, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 48 [document, 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 48 [document, 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 49 [document, 3] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 49 [document, 3] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 50 [comment, -1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 50 [comment, -1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 51 [comment, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 51 [comment, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 52 [comment, 4] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 52 [comment, 4] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 53 [comment, 96] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 53 [comment, 96] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 83 [doctype, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 85 [doctype, 1] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 85 [doctype, 1] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 29 [document.head, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 29 [document.head, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 30 [document.body, 3] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 30 [document.body, 3] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 35 [paras[0], 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 35 [paras[0], 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 36 [paras[0], 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 36 [paras[0], 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 37 [paras[0], 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 37 [paras[0], 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 38 [paras[1], 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 38 [paras[1], 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 39 [paras[1], 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 39 [paras[1], 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 40 [paras[1], 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 40 [paras[1], 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 43 [testDiv, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 43 [testDiv, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 44 [testDiv, 3] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 44 [testDiv, 3] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 45 [document, -1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 45 [document, -1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 46 [document, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 46 [document, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 47 [document, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 47 [document, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 48 [document, 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 48 [document, 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 49 [document, 3] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 49 [document, 3] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 50 [comment, -1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 50 [comment, -1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 51 [comment, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 51 [comment, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 52 [comment, 4] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 52 [comment, 4] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 53 [comment, 96] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 53 [comment, 96] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 56 [foreignComment, 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 56 [foreignComment, 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 63 [xmlComment, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 63 [xmlComment, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 64 [xmlComment, 4] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 64 [xmlComment, 4] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 75 [detachedComment, 3] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 75 [detachedComment, 3] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 76 [detachedComment, 5] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 76 [detachedComment, 5] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 80 [docfrag, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 80 [docfrag, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 83 [doctype, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 83 [doctype, 0] -FAIL extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 85 [doctype, 1] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 85 [doctype, 1] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 29 [document.head, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 29 [document.head, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 30 [document.body, 3] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 30 [document.body, 3] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 35 [paras[0], 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 35 [paras[0], 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 36 [paras[0], 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 36 [paras[0], 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 37 [paras[0], 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 37 [paras[0], 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 38 [paras[1], 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 38 [paras[1], 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 39 [paras[1], 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 39 [paras[1], 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 40 [paras[1], 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 40 [paras[1], 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 43 [testDiv, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 43 [testDiv, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 44 [testDiv, 3] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 44 [testDiv, 3] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 45 [document, -1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 45 [document, -1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 46 [document, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 46 [document, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 47 [document, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 47 [document, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 48 [document, 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 48 [document, 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 49 [document, 3] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 49 [document, 3] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 50 [comment, -1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 50 [comment, -1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 51 [comment, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 51 [comment, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 52 [comment, 4] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 52 [comment, 4] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 53 [comment, 96] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 53 [comment, 96] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 56 [foreignComment, 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 56 [foreignComment, 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 63 [xmlComment, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 63 [xmlComment, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 64 [xmlComment, 4] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 64 [xmlComment, 4] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 75 [detachedComment, 3] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 75 [detachedComment, 3] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 76 [detachedComment, 5] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 76 [detachedComment, 5] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 80 [docfrag, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 80 [docfrag, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 83 [doctype, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 83 [doctype, 0] -FAIL extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 85 [doctype, 1] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 85 [doctype, 1] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 29 [document.head, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 29 [document.head, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 30 [document.body, 3] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 30 [document.body, 3] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 45 [document, -1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 45 [document, -1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 46 [document, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 46 [document, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 47 [document, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 47 [document, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 48 [document, 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 48 [document, 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 49 [document, 3] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 49 [document, 3] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 50 [comment, -1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 50 [comment, -1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 51 [comment, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 51 [comment, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 52 [comment, 4] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 52 [comment, 4] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 53 [comment, 96] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 53 [comment, 96] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 83 [doctype, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 85 [doctype, 1] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 85 [doctype, 1] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 15 [document.documentElement, 0, document.documentElement, 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 29 [document.head, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 29 [document.head, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 30 [document.body, 3] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 30 [document.body, 3] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 35 [paras[0], 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 35 [paras[0], 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 36 [paras[0], 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 36 [paras[0], 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 37 [paras[0], 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 37 [paras[0], 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 38 [paras[1], 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 38 [paras[1], 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 39 [paras[1], 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 39 [paras[1], 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 40 [paras[1], 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 40 [paras[1], 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 43 [testDiv, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 43 [testDiv, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 44 [testDiv, 3] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 44 [testDiv, 3] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 45 [document, -1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 45 [document, -1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 46 [document, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 46 [document, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 47 [document, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 47 [document, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 48 [document, 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 48 [document, 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 49 [document, 3] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 49 [document, 3] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 50 [comment, -1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 50 [comment, -1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 51 [comment, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 51 [comment, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 52 [comment, 4] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 52 [comment, 4] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 53 [comment, 96] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 53 [comment, 96] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 56 [foreignComment, 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 56 [foreignComment, 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 63 [xmlComment, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 63 [xmlComment, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 64 [xmlComment, 4] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 64 [xmlComment, 4] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 75 [detachedComment, 3] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 75 [detachedComment, 3] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 76 [detachedComment, 5] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 76 [detachedComment, 5] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 80 [docfrag, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 80 [docfrag, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 83 [doctype, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 83 [doctype, 0] -FAIL extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 85 [doctype, 1] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 85 [doctype, 1] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 16 [document.documentElement, 0, document.documentElement, 2] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 29 [document.head, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 29 [document.head, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 30 [document.body, 3] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 30 [document.body, 3] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 35 [paras[0], 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 35 [paras[0], 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 36 [paras[0], 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 36 [paras[0], 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 37 [paras[0], 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 37 [paras[0], 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 38 [paras[1], 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 38 [paras[1], 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 39 [paras[1], 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 39 [paras[1], 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 40 [paras[1], 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 40 [paras[1], 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 43 [testDiv, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 43 [testDiv, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 44 [testDiv, 3] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 44 [testDiv, 3] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 45 [document, -1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 45 [document, -1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 46 [document, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 46 [document, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 47 [document, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 47 [document, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 48 [document, 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 48 [document, 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 49 [document, 3] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 49 [document, 3] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 50 [comment, -1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 50 [comment, -1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 51 [comment, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 51 [comment, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 52 [comment, 4] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 52 [comment, 4] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 53 [comment, 96] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 53 [comment, 96] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 56 [foreignComment, 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 56 [foreignComment, 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 63 [xmlComment, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 63 [xmlComment, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 64 [xmlComment, 4] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 64 [xmlComment, 4] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 75 [detachedComment, 3] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 75 [detachedComment, 3] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 76 [detachedComment, 5] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 76 [detachedComment, 5] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 80 [docfrag, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 80 [docfrag, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 83 [doctype, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 83 [doctype, 0] -FAIL extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 85 [doctype, 1] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 85 [doctype, 1] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 17 [document.documentElement, 1, document.documentElement, 2] and point 87 [xmlDoctype, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 24 [document.documentElement, -1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 25 [document.documentElement, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 26 [document.documentElement, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 27 [document.documentElement, 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 28 [document.documentElement, 7] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 29 [document.head, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 30 [document.body, 3] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 33 [foreignDoc.head, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 34 [foreignDoc.body, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 35 [paras[0], 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 36 [paras[0], 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 37 [paras[0], 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 38 [paras[1], 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 39 [paras[1], 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 40 [paras[1], 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 41 [detachedPara1, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 42 [detachedPara1, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 43 [testDiv, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 44 [testDiv, 3] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 45 [document, -1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 46 [document, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 47 [document, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 48 [document, 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 49 [document, 3] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 50 [comment, -1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 51 [comment, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 52 [comment, 4] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 53 [comment, 96] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 54 [foreignDoc, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 55 [foreignDoc, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 56 [foreignComment, 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 57 [foreignTextNode, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 58 [foreignTextNode, 36] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 59 [xmlDoc, -1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 60 [xmlDoc, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 61 [xmlDoc, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 62 [xmlDoc, 5] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 63 [xmlComment, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 64 [xmlComment, 4] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 65 [processingInstruction, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 66 [processingInstruction, 5] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 67 [processingInstruction, 9] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 68 [detachedTextNode, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 69 [detachedTextNode, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 75 [detachedComment, 3] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 76 [detachedComment, 5] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 77 [detachedForeignComment, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 78 [detachedForeignComment, 4] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 79 [detachedXmlComment, 2] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 80 [docfrag, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 81 [foreignDocfrag, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 82 [xmlDocfrag, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 83 [doctype, 0] -FAIL extend() with range 18 [document.head, 1, document.head, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 85 [doctype, 1] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 86 [foreignDoctype, 0] -PASS extend() with range 18 [document.head, 1, document.head, 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 29 [document.head, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 29 [document.head, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 30 [document.body, 3] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 30 [document.body, 3] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 45 [document, -1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 45 [document, -1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 46 [document, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 46 [document, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 47 [document, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 47 [document, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 48 [document, 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 48 [document, 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 49 [document, 3] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 49 [document, 3] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 50 [comment, -1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 50 [comment, -1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 51 [comment, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 51 [comment, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 52 [comment, 4] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 52 [comment, 4] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 53 [comment, 96] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 53 [comment, 96] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 83 [doctype, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 19 [document.body, 0, document.body, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 19 [document.body, 0, document.body, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 85 [doctype, 1] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 85 [doctype, 1] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 19 [document.body, 0, document.body, 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 19 [document.body, 0, document.body, 1] and point 87 [xmlDoctype, 0] -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt deleted file mode 100644 index 800aadb..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-20-expected.txt +++ /dev/null
@@ -1,2434 +0,0 @@ -This is a testharness.js-based test. -Found 2376 tests; 2349 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 0 [paras[0].firstChild, -1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 1 [paras[0].firstChild, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 2 [paras[0].firstChild, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 3 [paras[0].firstChild, 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 4 [paras[0].firstChild, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 5 [paras[0].firstChild, 9] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 6 [paras[0].firstChild, 10] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 8 [paras[1].firstChild, -1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 9 [paras[1].firstChild, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 10 [paras[1].firstChild, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 11 [paras[1].firstChild, 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 12 [paras[1].firstChild, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 13 [paras[1].firstChild, 9] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 14 [paras[1].firstChild, 10] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 24 [document.documentElement, -1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 25 [document.documentElement, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 26 [document.documentElement, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 27 [document.documentElement, 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 28 [document.documentElement, 7] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 29 [document.head, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 30 [document.body, 3] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 33 [foreignDoc.head, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 34 [foreignDoc.body, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 35 [paras[0], 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 36 [paras[0], 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 37 [paras[0], 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 38 [paras[1], 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 39 [paras[1], 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 40 [paras[1], 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 41 [detachedPara1, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 42 [detachedPara1, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 43 [testDiv, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 44 [testDiv, 3] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 45 [document, -1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 46 [document, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 47 [document, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 48 [document, 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 49 [document, 3] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 50 [comment, -1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 51 [comment, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 52 [comment, 4] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 53 [comment, 96] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 54 [foreignDoc, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 55 [foreignDoc, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 56 [foreignComment, 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 57 [foreignTextNode, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 58 [foreignTextNode, 36] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 59 [xmlDoc, -1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 60 [xmlDoc, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 61 [xmlDoc, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 62 [xmlDoc, 5] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 63 [xmlComment, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 64 [xmlComment, 4] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 65 [processingInstruction, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 66 [processingInstruction, 5] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 67 [processingInstruction, 9] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 68 [detachedTextNode, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 69 [detachedTextNode, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 75 [detachedComment, 3] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 76 [detachedComment, 5] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 77 [detachedForeignComment, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 78 [detachedForeignComment, 4] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 79 [detachedXmlComment, 2] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 80 [docfrag, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 81 [foreignDocfrag, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 82 [xmlDocfrag, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 83 [doctype, 0] -FAIL extend() with range 23 [paras[0], 0, paras[0], 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 85 [doctype, 1] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 86 [foreignDoctype, 0] -PASS extend() with range 23 [paras[0], 0, paras[0], 0] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 29 [document.head, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 29 [document.head, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 30 [document.body, 3] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 30 [document.body, 3] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 45 [document, -1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 45 [document, -1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 46 [document, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 46 [document, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 47 [document, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 47 [document, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 48 [document, 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 48 [document, 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 49 [document, 3] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 49 [document, 3] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 50 [comment, -1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 50 [comment, -1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 51 [comment, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 51 [comment, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 52 [comment, 4] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 52 [comment, 4] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 53 [comment, 96] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 53 [comment, 96] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 83 [doctype, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 85 [doctype, 1] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 85 [doctype, 1] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 24 [paras[0], 0, paras[0], 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 24 [paras[0], 0, paras[0], 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 29 [document.head, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 29 [document.head, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 30 [document.body, 3] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 30 [document.body, 3] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 35 [paras[0], 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 35 [paras[0], 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 36 [paras[0], 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 36 [paras[0], 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 37 [paras[0], 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 37 [paras[0], 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 38 [paras[1], 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 38 [paras[1], 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 39 [paras[1], 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 39 [paras[1], 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 40 [paras[1], 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 40 [paras[1], 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 43 [testDiv, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 43 [testDiv, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 44 [testDiv, 3] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 44 [testDiv, 3] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 45 [document, -1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 45 [document, -1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 46 [document, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 46 [document, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 47 [document, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 47 [document, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 48 [document, 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 48 [document, 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 49 [document, 3] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 49 [document, 3] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 50 [comment, -1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 50 [comment, -1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 51 [comment, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 51 [comment, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 52 [comment, 4] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 52 [comment, 4] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 53 [comment, 96] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 53 [comment, 96] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 56 [foreignComment, 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 56 [foreignComment, 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 63 [xmlComment, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 63 [xmlComment, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 64 [xmlComment, 4] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 64 [xmlComment, 4] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 75 [detachedComment, 3] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 75 [detachedComment, 3] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 76 [detachedComment, 5] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 76 [detachedComment, 5] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 80 [docfrag, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 80 [docfrag, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 83 [doctype, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 83 [doctype, 0] -FAIL extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 85 [doctype, 1] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 85 [doctype, 1] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 29 [document.head, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 29 [document.head, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 30 [document.body, 3] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 30 [document.body, 3] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 35 [paras[0], 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 35 [paras[0], 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 36 [paras[0], 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 36 [paras[0], 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 37 [paras[0], 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 37 [paras[0], 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 38 [paras[1], 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 38 [paras[1], 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 39 [paras[1], 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 39 [paras[1], 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 40 [paras[1], 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 40 [paras[1], 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 43 [testDiv, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 43 [testDiv, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 44 [testDiv, 3] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 44 [testDiv, 3] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 45 [document, -1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 45 [document, -1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 46 [document, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 46 [document, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 47 [document, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 47 [document, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 48 [document, 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 48 [document, 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 49 [document, 3] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 49 [document, 3] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 50 [comment, -1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 50 [comment, -1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 51 [comment, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 51 [comment, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 52 [comment, 4] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 52 [comment, 4] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 53 [comment, 96] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 53 [comment, 96] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 56 [foreignComment, 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 56 [foreignComment, 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 63 [xmlComment, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 63 [xmlComment, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 64 [xmlComment, 4] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 64 [xmlComment, 4] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 75 [detachedComment, 3] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 75 [detachedComment, 3] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 76 [detachedComment, 5] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 76 [detachedComment, 5] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 80 [docfrag, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 80 [docfrag, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 83 [doctype, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 83 [doctype, 0] -FAIL extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 85 [doctype, 1] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 85 [doctype, 1] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 29 [document.head, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 29 [document.head, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 30 [document.body, 3] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 30 [document.body, 3] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 45 [document, -1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 45 [document, -1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 46 [document, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 46 [document, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 47 [document, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 47 [document, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 48 [document, 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 48 [document, 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 49 [document, 3] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 49 [document, 3] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 50 [comment, -1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 50 [comment, -1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 51 [comment, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 51 [comment, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 52 [comment, 4] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 52 [comment, 4] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 53 [comment, 96] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 53 [comment, 96] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 83 [doctype, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 85 [doctype, 1] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 85 [doctype, 1] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 29 [paras[0].firstChild, 3, paras[3], 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 29 [document.head, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 29 [document.head, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 30 [document.body, 3] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 30 [document.body, 3] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 35 [paras[0], 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 35 [paras[0], 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 36 [paras[0], 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 36 [paras[0], 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 37 [paras[0], 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 37 [paras[0], 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 38 [paras[1], 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 38 [paras[1], 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 39 [paras[1], 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 39 [paras[1], 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 40 [paras[1], 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 40 [paras[1], 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 43 [testDiv, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 43 [testDiv, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 44 [testDiv, 3] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 44 [testDiv, 3] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 45 [document, -1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 45 [document, -1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 46 [document, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 46 [document, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 47 [document, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 47 [document, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 48 [document, 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 48 [document, 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 49 [document, 3] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 49 [document, 3] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 50 [comment, -1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 50 [comment, -1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 51 [comment, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 51 [comment, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 52 [comment, 4] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 52 [comment, 4] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 53 [comment, 96] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 53 [comment, 96] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 56 [foreignComment, 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 56 [foreignComment, 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 63 [xmlComment, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 63 [xmlComment, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 64 [xmlComment, 4] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 64 [xmlComment, 4] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 75 [detachedComment, 3] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 75 [detachedComment, 3] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 76 [detachedComment, 5] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 76 [detachedComment, 5] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 80 [docfrag, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 80 [docfrag, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 83 [doctype, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 83 [doctype, 0] -FAIL extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 85 [doctype, 1] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 85 [doctype, 1] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 30 [paras[0], 0, paras[0].firstChild, 7] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 29 [document.head, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 29 [document.head, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 30 [document.body, 3] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 30 [document.body, 3] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 45 [document, -1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 45 [document, -1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 46 [document, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 46 [document, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 47 [document, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 47 [document, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 48 [document, 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 48 [document, 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 49 [document, 3] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 49 [document, 3] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 50 [comment, -1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 50 [comment, -1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 51 [comment, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 51 [comment, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 52 [comment, 4] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 52 [comment, 4] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 53 [comment, 96] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 53 [comment, 96] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 83 [doctype, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 85 [doctype, 1] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 85 [doctype, 1] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 31 [testDiv, 2, paras[4], 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 31 [testDiv, 2, paras[4], 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 29 [document.head, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 29 [document.head, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 30 [document.body, 3] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 30 [document.body, 3] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 35 [paras[0], 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 35 [paras[0], 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 36 [paras[0], 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 36 [paras[0], 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 37 [paras[0], 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 37 [paras[0], 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 38 [paras[1], 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 38 [paras[1], 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 39 [paras[1], 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 39 [paras[1], 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 40 [paras[1], 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 40 [paras[1], 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 43 [testDiv, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 43 [testDiv, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 44 [testDiv, 3] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 44 [testDiv, 3] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 45 [document, -1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 45 [document, -1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 46 [document, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 46 [document, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 47 [document, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 47 [document, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 48 [document, 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 48 [document, 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 49 [document, 3] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 49 [document, 3] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 50 [comment, -1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 50 [comment, -1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 51 [comment, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 51 [comment, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 52 [comment, 4] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 52 [comment, 4] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 53 [comment, 96] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 53 [comment, 96] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 56 [foreignComment, 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 56 [foreignComment, 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 63 [xmlComment, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 63 [xmlComment, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 64 [xmlComment, 4] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 64 [xmlComment, 4] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 75 [detachedComment, 3] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 75 [detachedComment, 3] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 76 [detachedComment, 5] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 76 [detachedComment, 5] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 80 [docfrag, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 80 [docfrag, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 83 [doctype, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 83 [doctype, 0] -FAIL extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 85 [doctype, 1] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 85 [doctype, 1] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 32 [testDiv, 1, paras[2].firstChild, 5] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 29 [document.head, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 29 [document.head, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 30 [document.body, 3] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 30 [document.body, 3] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 35 [paras[0], 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 35 [paras[0], 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 36 [paras[0], 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 36 [paras[0], 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 37 [paras[0], 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 37 [paras[0], 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 38 [paras[1], 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 38 [paras[1], 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 39 [paras[1], 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 39 [paras[1], 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 40 [paras[1], 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 40 [paras[1], 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 43 [testDiv, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 43 [testDiv, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 44 [testDiv, 3] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 44 [testDiv, 3] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 45 [document, -1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 45 [document, -1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 46 [document, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 46 [document, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 47 [document, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 47 [document, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 48 [document, 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 48 [document, 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 49 [document, 3] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 49 [document, 3] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 50 [comment, -1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 50 [comment, -1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 51 [comment, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 51 [comment, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 52 [comment, 4] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 52 [comment, 4] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 53 [comment, 96] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 53 [comment, 96] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 56 [foreignComment, 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 56 [foreignComment, 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 63 [xmlComment, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 63 [xmlComment, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 64 [xmlComment, 4] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 64 [xmlComment, 4] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 75 [detachedComment, 3] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 75 [detachedComment, 3] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 76 [detachedComment, 5] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 76 [detachedComment, 5] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 80 [docfrag, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 80 [docfrag, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 83 [doctype, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 83 [doctype, 0] -FAIL extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 85 [doctype, 1] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 85 [doctype, 1] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 33 [document.documentElement, 1, document.body, 0] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 33 [document.documentElement, 1, document.body, 0] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 29 [document.head, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 29 [document.head, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 30 [document.body, 3] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 30 [document.body, 3] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 35 [paras[0], 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 35 [paras[0], 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 36 [paras[0], 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 36 [paras[0], 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 37 [paras[0], 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 37 [paras[0], 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 38 [paras[1], 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 38 [paras[1], 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 39 [paras[1], 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 39 [paras[1], 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 40 [paras[1], 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 40 [paras[1], 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 43 [testDiv, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 43 [testDiv, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 44 [testDiv, 3] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 44 [testDiv, 3] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 45 [document, -1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 45 [document, -1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 46 [document, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 46 [document, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 47 [document, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 47 [document, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 48 [document, 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 48 [document, 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 49 [document, 3] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 49 [document, 3] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 50 [comment, -1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 50 [comment, -1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 51 [comment, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 51 [comment, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 52 [comment, 4] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 52 [comment, 4] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 53 [comment, 96] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 53 [comment, 96] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 56 [foreignComment, 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 56 [foreignComment, 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 63 [xmlComment, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 63 [xmlComment, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 64 [xmlComment, 4] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 64 [xmlComment, 4] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 75 [detachedComment, 3] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 75 [detachedComment, 3] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 76 [detachedComment, 5] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 76 [detachedComment, 5] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 80 [docfrag, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 80 [docfrag, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 83 [doctype, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 83 [doctype, 0] -FAIL extend() forwards with range 35 [document, 0, document, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 35 [document, 0, document, 1] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 35 [document, 0, document, 1] and point 85 [doctype, 1] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 85 [doctype, 1] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 35 [document, 0, document, 1] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 35 [document, 0, document, 1] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 29 [document.head, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 29 [document.head, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 30 [document.body, 3] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 30 [document.body, 3] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 35 [paras[0], 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 35 [paras[0], 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 36 [paras[0], 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 36 [paras[0], 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 37 [paras[0], 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 37 [paras[0], 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 38 [paras[1], 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 38 [paras[1], 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 39 [paras[1], 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 39 [paras[1], 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 40 [paras[1], 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 40 [paras[1], 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 43 [testDiv, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 43 [testDiv, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 44 [testDiv, 3] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 44 [testDiv, 3] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 45 [document, -1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 45 [document, -1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 46 [document, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 46 [document, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 47 [document, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 47 [document, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 48 [document, 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 48 [document, 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 49 [document, 3] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 49 [document, 3] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 50 [comment, -1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 50 [comment, -1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 51 [comment, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 51 [comment, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 52 [comment, 4] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 52 [comment, 4] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 53 [comment, 96] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 53 [comment, 96] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 56 [foreignComment, 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 56 [foreignComment, 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 63 [xmlComment, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 63 [xmlComment, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 64 [xmlComment, 4] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 64 [xmlComment, 4] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 75 [detachedComment, 3] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 75 [detachedComment, 3] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 76 [detachedComment, 5] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 76 [detachedComment, 5] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 80 [docfrag, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 80 [docfrag, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 83 [doctype, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 83 [doctype, 0] -FAIL extend() forwards with range 36 [document, 0, document, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 36 [document, 0, document, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 36 [document, 0, document, 2] and point 85 [doctype, 1] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 85 [doctype, 1] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 36 [document, 0, document, 2] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 36 [document, 0, document, 2] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 29 [document.head, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 29 [document.head, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 30 [document.body, 3] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 30 [document.body, 3] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 35 [paras[0], 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 35 [paras[0], 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 36 [paras[0], 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 36 [paras[0], 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 37 [paras[0], 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 37 [paras[0], 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 38 [paras[1], 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 38 [paras[1], 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 39 [paras[1], 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 39 [paras[1], 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 40 [paras[1], 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 40 [paras[1], 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 43 [testDiv, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 43 [testDiv, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 44 [testDiv, 3] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 44 [testDiv, 3] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 45 [document, -1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 45 [document, -1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 46 [document, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 46 [document, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 47 [document, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 47 [document, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 48 [document, 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 48 [document, 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 49 [document, 3] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 49 [document, 3] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 50 [comment, -1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 50 [comment, -1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 51 [comment, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 51 [comment, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 52 [comment, 4] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 52 [comment, 4] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 53 [comment, 96] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 53 [comment, 96] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 56 [foreignComment, 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 56 [foreignComment, 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 63 [xmlComment, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 63 [xmlComment, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 64 [xmlComment, 4] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 64 [xmlComment, 4] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 75 [detachedComment, 3] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 75 [detachedComment, 3] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 76 [detachedComment, 5] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 76 [detachedComment, 5] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 80 [docfrag, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 80 [docfrag, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 83 [doctype, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 83 [doctype, 0] -FAIL extend() forwards with range 37 [document, 1, document, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 37 [document, 1, document, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 37 [document, 1, document, 2] and point 85 [doctype, 1] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 85 [doctype, 1] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 37 [document, 1, document, 2] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 37 [document, 1, document, 2] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 29 [document.head, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 29 [document.head, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 30 [document.body, 3] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 30 [document.body, 3] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 35 [paras[0], 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 35 [paras[0], 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 36 [paras[0], 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 36 [paras[0], 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 37 [paras[0], 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 37 [paras[0], 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 38 [paras[1], 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 38 [paras[1], 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 39 [paras[1], 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 39 [paras[1], 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 40 [paras[1], 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 40 [paras[1], 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 43 [testDiv, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 43 [testDiv, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 44 [testDiv, 3] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 44 [testDiv, 3] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 45 [document, -1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 45 [document, -1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 46 [document, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 46 [document, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 47 [document, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 47 [document, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 48 [document, 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 48 [document, 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 49 [document, 3] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 49 [document, 3] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 50 [comment, -1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 50 [comment, -1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 51 [comment, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 51 [comment, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 52 [comment, 4] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 52 [comment, 4] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 53 [comment, 96] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 53 [comment, 96] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 56 [foreignComment, 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 56 [foreignComment, 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 63 [xmlComment, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 63 [xmlComment, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 64 [xmlComment, 4] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 64 [xmlComment, 4] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 75 [detachedComment, 3] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 75 [detachedComment, 3] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 76 [detachedComment, 5] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 76 [detachedComment, 5] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 80 [docfrag, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 80 [docfrag, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 83 [doctype, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 83 [doctype, 0] -FAIL extend() forwards with range 38 [testDiv, 0, comment, 5] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 38 [testDiv, 0, comment, 5] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 85 [doctype, 1] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 85 [doctype, 1] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 38 [testDiv, 0, comment, 5] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 38 [testDiv, 0, comment, 5] and point 87 [xmlDoctype, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 29 [document.head, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 29 [document.head, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 30 [document.body, 3] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 30 [document.body, 3] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 35 [paras[0], 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 35 [paras[0], 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 36 [paras[0], 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 36 [paras[0], 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 37 [paras[0], 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 37 [paras[0], 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 38 [paras[1], 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 38 [paras[1], 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 39 [paras[1], 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 39 [paras[1], 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 40 [paras[1], 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 40 [paras[1], 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 43 [testDiv, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 43 [testDiv, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 44 [testDiv, 3] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 44 [testDiv, 3] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 45 [document, -1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 45 [document, -1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 46 [document, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 46 [document, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 47 [document, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 47 [document, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 48 [document, 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 48 [document, 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 49 [document, 3] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 49 [document, 3] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 50 [comment, -1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 50 [comment, -1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 51 [comment, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 51 [comment, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 52 [comment, 4] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 52 [comment, 4] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 53 [comment, 96] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 53 [comment, 96] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 56 [foreignComment, 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 56 [foreignComment, 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 63 [xmlComment, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 63 [xmlComment, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 64 [xmlComment, 4] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 64 [xmlComment, 4] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 75 [detachedComment, 3] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 75 [detachedComment, 3] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 76 [detachedComment, 5] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 76 [detachedComment, 5] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 80 [docfrag, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 80 [docfrag, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 83 [doctype, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 83 [doctype, 0] -FAIL extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 85 [doctype, 1] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 85 [doctype, 1] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 39 [paras[2].firstChild, 4, comment, 2] and point 87 [xmlDoctype, 0] -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt deleted file mode 100644 index 7684a3d..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/selection/extend-40-expected.txt +++ /dev/null
@@ -1,184 +0,0 @@ -This is a testharness.js-based test. -Found 176 tests; 174 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 0 [paras[0].firstChild, -1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 1 [paras[0].firstChild, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 2 [paras[0].firstChild, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 3 [paras[0].firstChild, 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 4 [paras[0].firstChild, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 5 [paras[0].firstChild, 9] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 6 [paras[0].firstChild, 10] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 7 [paras[0].firstChild, 65535] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 8 [paras[1].firstChild, -1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 9 [paras[1].firstChild, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 10 [paras[1].firstChild, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 11 [paras[1].firstChild, 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 12 [paras[1].firstChild, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 13 [paras[1].firstChild, 9] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 14 [paras[1].firstChild, 10] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 15 [paras[1].firstChild, 65535] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 16 [detachedPara1.firstChild, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 17 [detachedPara1.firstChild, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 18 [detachedPara1.firstChild, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 19 [detachedPara1.firstChild, 9] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 20 [foreignPara1.firstChild, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 21 [foreignPara1.firstChild, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 22 [foreignPara1.firstChild, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 23 [foreignPara1.firstChild, 9] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 24 [document.documentElement, -1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 24 [document.documentElement, -1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 25 [document.documentElement, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 25 [document.documentElement, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 26 [document.documentElement, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 26 [document.documentElement, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 27 [document.documentElement, 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 27 [document.documentElement, 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 28 [document.documentElement, 7] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 28 [document.documentElement, 7] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 29 [document.head, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 29 [document.head, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 30 [document.body, 3] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 30 [document.body, 3] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 31 [foreignDoc.documentElement, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 32 [foreignDoc.documentElement, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 33 [foreignDoc.head, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 33 [foreignDoc.head, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 34 [foreignDoc.body, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 34 [foreignDoc.body, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 35 [paras[0], 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 35 [paras[0], 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 36 [paras[0], 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 36 [paras[0], 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 37 [paras[0], 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 37 [paras[0], 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 38 [paras[1], 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 38 [paras[1], 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 39 [paras[1], 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 39 [paras[1], 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 40 [paras[1], 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 40 [paras[1], 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 41 [detachedPara1, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 41 [detachedPara1, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 42 [detachedPara1, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 42 [detachedPara1, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 43 [testDiv, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 43 [testDiv, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 44 [testDiv, 3] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 44 [testDiv, 3] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 45 [document, -1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 45 [document, -1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 46 [document, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 46 [document, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 47 [document, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 47 [document, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 48 [document, 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 48 [document, 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 49 [document, 3] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 49 [document, 3] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 50 [comment, -1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 50 [comment, -1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 51 [comment, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 51 [comment, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 52 [comment, 4] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 52 [comment, 4] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 53 [comment, 96] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 53 [comment, 96] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 54 [foreignDoc, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 54 [foreignDoc, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 55 [foreignDoc, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 55 [foreignDoc, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 56 [foreignComment, 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 56 [foreignComment, 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 57 [foreignTextNode, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 57 [foreignTextNode, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 58 [foreignTextNode, 36] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 58 [foreignTextNode, 36] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 59 [xmlDoc, -1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 59 [xmlDoc, -1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 60 [xmlDoc, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 60 [xmlDoc, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 61 [xmlDoc, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 61 [xmlDoc, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 62 [xmlDoc, 5] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 62 [xmlDoc, 5] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 63 [xmlComment, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 63 [xmlComment, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 64 [xmlComment, 4] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 64 [xmlComment, 4] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 65 [processingInstruction, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 65 [processingInstruction, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 66 [processingInstruction, 5] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 66 [processingInstruction, 5] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 67 [processingInstruction, 9] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 67 [processingInstruction, 9] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 68 [detachedTextNode, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 68 [detachedTextNode, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 69 [detachedTextNode, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 69 [detachedTextNode, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 70 [detachedForeignTextNode, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 71 [detachedForeignTextNode, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 72 [detachedXmlTextNode, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 73 [detachedXmlTextNode, 8] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 74 [detachedProcessingInstruction, 12] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 75 [detachedComment, 3] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 75 [detachedComment, 3] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 76 [detachedComment, 5] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 76 [detachedComment, 5] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 77 [detachedForeignComment, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 77 [detachedForeignComment, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 78 [detachedForeignComment, 4] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 78 [detachedForeignComment, 4] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 79 [detachedXmlComment, 2] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 79 [detachedXmlComment, 2] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 80 [docfrag, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 80 [docfrag, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 81 [foreignDocfrag, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 81 [foreignDocfrag, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 82 [xmlDocfrag, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 82 [xmlDocfrag, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 83 [doctype, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 83 [doctype, 0] -FAIL extend() forwards with range 40 [paras[3], 1, comment, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -FAIL extend() backwards with range 40 [paras[3], 1, comment, 8] and point 84 [doctype, -17] assert_throws: extend() to a doctype must throw InvalidNodeTypeError function "function () { - selection.extend(node, offset); - }" threw object "IndexSizeError: Failed to execute 'extend' on 'Selection': -17 is not a valid offset." that is not a DOMException INVALID_NODE_TYPE_ERR: property "code" is equal to 1, expected 24 -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 85 [doctype, 1] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 85 [doctype, 1] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 86 [foreignDoctype, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 86 [foreignDoctype, 0] -PASS extend() forwards with range 40 [paras[3], 1, comment, 8] and point 87 [xmlDoctype, 0] -PASS extend() backwards with range 40 [paras[3], 1, comment, 8] and point 87 [xmlDoctype, 0] -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Selection/use-counters.html b/third_party/WebKit/LayoutTests/fast/dom/Selection/use-counters.html index 9682116..352726c 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Selection/use-counters.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Selection/use-counters.html
@@ -13,10 +13,6 @@ test(function() { var SelectionSetBaseAndExtentNull = 1084; // From UseCounter.h assert_false(internals.isUseCounted(document, SelectionSetBaseAndExtentNull)); - assert_throws('IndexSizeError', function() { - document.getSelection().setBaseAndExtent(null, -1, null, -1); - }); - assert_false(internals.isUseCounted(document, SelectionSetBaseAndExtentNull)); document.getSelection().setBaseAndExtent(null, 0, null, 0) assert_true(internals.isUseCounted(document, SelectionSetBaseAndExtentNull)); }, 'selection.setBaseAndExtent(null, 0, null, 0)');
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection-exceptions-expected.txt b/third_party/WebKit/LayoutTests/fast/text/selection-exceptions-expected.txt index 2b962cb..6ed111c 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection-exceptions-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/text/selection-exceptions-expected.txt
@@ -3,15 +3,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS getSelection().collapse(document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'collapse' on 'Selection': -1 is not a valid offset.. +PASS getSelection().collapse(document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'collapse' on 'Selection': There is no child at offset -1.. PASS getSelection().collapseToStart() threw exception InvalidStateError: Failed to execute 'collapseToStart' on 'Selection': there is no selection.. PASS getSelection().collapseToEnd() threw exception InvalidStateError: Failed to execute 'collapseToEnd' on 'Selection': there is no selection.. -PASS getSelection().setBaseAndExtent(document.documentElement, -1, document.documentElement, 0) threw exception IndexSizeError: Failed to execute 'setBaseAndExtent' on 'Selection': -1 is not a valid base offset.. -PASS getSelection().setBaseAndExtent(document.documentElement, 0, document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'setBaseAndExtent' on 'Selection': -1 is not a valid extent offset.. -PASS getSelection().collapse(document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'collapse' on 'Selection': -1 is not a valid offset.. +PASS getSelection().setBaseAndExtent(document.documentElement, -1, document.documentElement, 0) threw exception IndexSizeError: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset -1.. +PASS getSelection().setBaseAndExtent(document.documentElement, 0, document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'setBaseAndExtent' on 'Selection': There is no child at offset -1.. +PASS getSelection().collapse(document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'collapse' on 'Selection': There is no child at offset -1.. PASS getSelection().getRangeAt(-1) threw exception IndexSizeError: Failed to execute 'getRangeAt' on 'Selection': -1 is not a valid index.. PASS getSelection().extend(0, -1) threw exception TypeError: Failed to execute 'extend' on 'Selection': parameter 1 is not of type 'Node'.. -PASS getSelection().extend(document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'extend' on 'Selection': -1 is not a valid offset.. +PASS getSelection().extend(document.documentElement, -1) threw exception IndexSizeError: Failed to execute 'extend' on 'Selection': There is no child at offset -1.. PASS getSelection().extend(document.documentElement, 1000) threw exception IndexSizeError: Failed to execute 'extend' on 'Selection': There is no child at offset 1000.. PASS successfullyParsed is true
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection-exceptions.html b/third_party/WebKit/LayoutTests/fast/text/selection-exceptions.html index e00f3c9..d2bf0bf 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection-exceptions.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection-exceptions.html
@@ -7,22 +7,22 @@ <script> description("This tests that 'Selection' methods throw exceptions with reasonable messages."); - shouldThrow('getSelection().collapse(document.documentElement, -1)', '"IndexSizeError: Failed to execute \'collapse\' on \'Selection\': -1 is not a valid offset."'); + shouldThrow('getSelection().collapse(document.documentElement, -1)', '"IndexSizeError: Failed to execute \'collapse\' on \'Selection\': There is no child at offset -1."'); getSelection().empty(); shouldThrow('getSelection().collapseToStart()', '"InvalidStateError: Failed to execute \'collapseToStart\' on \'Selection\': there is no selection."'); shouldThrow('getSelection().collapseToEnd()', '"InvalidStateError: Failed to execute \'collapseToEnd\' on \'Selection\': there is no selection."'); - shouldThrow('getSelection().setBaseAndExtent(document.documentElement, -1, document.documentElement, 0)', '"IndexSizeError: Failed to execute \'setBaseAndExtent\' on \'Selection\': -1 is not a valid base offset."'); - shouldThrow('getSelection().setBaseAndExtent(document.documentElement, 0, document.documentElement, -1)', '"IndexSizeError: Failed to execute \'setBaseAndExtent\' on \'Selection\': -1 is not a valid extent offset."'); + shouldThrow('getSelection().setBaseAndExtent(document.documentElement, -1, document.documentElement, 0)', '"IndexSizeError: Failed to execute \'setBaseAndExtent\' on \'Selection\': There is no child at offset -1."'); + shouldThrow('getSelection().setBaseAndExtent(document.documentElement, 0, document.documentElement, -1)', '"IndexSizeError: Failed to execute \'setBaseAndExtent\' on \'Selection\': There is no child at offset -1."'); - shouldThrow('getSelection().collapse(document.documentElement, -1)', '"IndexSizeError: Failed to execute \'collapse\' on \'Selection\': -1 is not a valid offset."'); + shouldThrow('getSelection().collapse(document.documentElement, -1)', '"IndexSizeError: Failed to execute \'collapse\' on \'Selection\': There is no child at offset -1."'); shouldThrow('getSelection().getRangeAt(-1)', '"IndexSizeError: Failed to execute \'getRangeAt\' on \'Selection\': -1 is not a valid index."'); shouldThrow('getSelection().extend(0, -1)', '"TypeError: Failed to execute \'extend\' on \'Selection\': parameter 1 is not of type \'Node\'."'); getSelection().addRange(document.createRange()); - shouldThrow('getSelection().extend(document.documentElement, -1)', '"IndexSizeError: Failed to execute \'extend\' on \'Selection\': -1 is not a valid offset."'); + shouldThrow('getSelection().extend(document.documentElement, -1)', '"IndexSizeError: Failed to execute \'extend\' on \'Selection\': There is no child at offset -1."'); shouldThrow('getSelection().extend(document.documentElement, 1000)', '"IndexSizeError: Failed to execute \'extend\' on \'Selection\': There is no child at offset 1000."'); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/ftp-subresource-blocked.html b/third_party/WebKit/LayoutTests/http/tests/security/ftp-subresource-blocked.html new file mode 100644 index 0000000..f03deb1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/security/ftp-subresource-blocked.html
@@ -0,0 +1,15 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + async_test(t => { + var i = document.createElement('img'); + i.onload = t.unreached_func('The image should not load.'); + i.onerror = t.step_func_done(e => { + assert_equals(i.naturalWidth, 0); + assert_equals(i.naturalHeight, 0); + }); + + i.src = 'ftp://example.test/image.png'; + }, "'ftp:' subresource requests fail."); +</script>
diff --git a/third_party/WebKit/LayoutTests/security/block-test-expected.txt b/third_party/WebKit/LayoutTests/security/block-test-expected.txt index 846c463..e3acd12 100644 --- a/third_party/WebKit/LayoutTests/security/block-test-expected.txt +++ b/third_party/WebKit/LayoutTests/security/block-test-expected.txt
@@ -132,11 +132,8 @@ CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:4294967295/test.jpg CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:4294967296/test.jpg CONSOLE WARNING: Subresource requests using legacy protocols (like `ftp:`) are deprecated, and will be blocked in M59, around June 2017. Please deliver web-accessible resources over modern protocols like HTTPS. See https://www.chromestatus.com/feature/5709390967472128 for more details. -ftp://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL ftp://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> CONSOLE MESSAGE: line 32: PASS: error event fired for ftp://255.255.255.255/test.jpg -ftp://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL ftp://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> CONSOLE MESSAGE: line 32: PASS: error event fired for ftp://255.255.255.255:21/test.jpg -ftp://255.255.255.255:22/test.jpg - willSendRequest <NSURLRequest URL ftp://255.255.255.255:22/test.jpg, main document URL block-test.html, http method GET> CONSOLE MESSAGE: line 32: PASS: error event fired for ftp://255.255.255.255:22/test.jpg http://255.255.255.255:0/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:0/test.jpg, main document URL block-test.html, http method GET> CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:0/test.jpg
diff --git a/third_party/WebKit/Source/build/scripts/make_css_property_apis.py b/third_party/WebKit/Source/build/scripts/make_css_property_apis.py index ed317cd..5b5376b 100755 --- a/third_party/WebKit/Source/build/scripts/make_css_property_apis.py +++ b/third_party/WebKit/Source/build/scripts/make_css_property_apis.py
@@ -44,6 +44,7 @@ self._outputs = { 'CSSPropertyDescriptor.cpp': self.generate_property_descriptor_cpp, + 'CSSPropertyDescriptor.h': self.generate_property_descriptor_h, 'CSSPropertyAPI.h': self.generate_property_api, } @@ -93,6 +94,13 @@ 'ordered_api_method_names': self.ordered_api_method_names, } + @template_expander.use_jinja('CSSPropertyDescriptor.h.tmpl') + def generate_property_descriptor_h(self): + return { + 'ordered_api_method_names': self.ordered_api_method_names, + 'all_api_methods': self.all_api_methods, + } + @template_expander.use_jinja('CSSPropertyAPI.h.tmpl') def generate_property_api(self): return {
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyDescriptor.h b/third_party/WebKit/Source/build/scripts/templates/CSSPropertyDescriptor.h.tmpl similarity index 76% rename from third_party/WebKit/Source/core/css/properties/CSSPropertyDescriptor.h rename to third_party/WebKit/Source/build/scripts/templates/CSSPropertyDescriptor.h.tmpl index e44adfb1..6012ba2 100644 --- a/third_party/WebKit/Source/core/css/properties/CSSPropertyDescriptor.h +++ b/third_party/WebKit/Source/build/scripts/templates/CSSPropertyDescriptor.h.tmpl
@@ -12,9 +12,9 @@ // Stores function pointers matching those declared in CSSPropertyAPI. struct CSSPropertyDescriptor { - const CSSValue* (*parseSingleValue)(CSSParserTokenRange&, - const CSSParserContext*); - bool (*parseShorthand)(bool, CSSParserTokenRange&, const CSSParserContext*); + {% for api_method_name in ordered_api_method_names %} + {{all_api_methods[api_method_name].return_type}} (*{{api_method_name}}){{all_api_methods[api_method_name].parameters}}; + {% endfor %} // Returns the corresponding CSSPropertyDescriptor for a given CSSPropertyID. // Use this function to access the API for a property. Returns a descriptor
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn index 4345d43..d501553 100644 --- a/third_party/WebKit/Source/core/BUILD.gn +++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -417,12 +417,14 @@ script = "../build/scripts/make_css_property_apis.py" other_inputs = [ "../build/scripts/templates/CSSPropertyDescriptor.cpp.tmpl", + "../build/scripts/templates/CSSPropertyDescriptor.h.tmpl", "../build/scripts/templates/CSSPropertyAPIFiles.h.tmpl", "../build/scripts/templates/CSSPropertyAPI.h.tmpl", ] in_files = [ "css/properties/CSSPropertyAPIMethods.json5" ] outputs = [ "$blink_core_output_dir/css/properties/CSSPropertyDescriptor.cpp", + "$blink_core_output_dir/css/properties/CSSPropertyDescriptor.h", "$blink_core_output_dir/css/properties/CSSPropertyAPI.h", "$blink_core_output_dir/css/properties/CSSPropertyAPIColumnCount.h", "$blink_core_output_dir/css/properties/CSSPropertyAPIVerticalAlign.h",
diff --git a/third_party/WebKit/Source/core/css/BUILD.gn b/third_party/WebKit/Source/core/css/BUILD.gn index 6b2783ac..1302b64 100644 --- a/third_party/WebKit/Source/core/css/BUILD.gn +++ b/third_party/WebKit/Source/core/css/BUILD.gn
@@ -453,7 +453,6 @@ "properties/CSSPropertyAlignmentUtils.h", "properties/CSSPropertyColumnUtils.cpp", "properties/CSSPropertyColumnUtils.h", - "properties/CSSPropertyDescriptor.h", "properties/CSSPropertyLengthUtils.cpp", "properties/CSSPropertyLengthUtils.h", "properties/CSSPropertyMarginUtils.cpp",
diff --git a/third_party/WebKit/Source/core/dom/Document.idl b/third_party/WebKit/Source/core/dom/Document.idl index 87ca6f5..84e147b7 100644 --- a/third_party/WebKit/Source/core/dom/Document.idl +++ b/third_party/WebKit/Source/core/dom/Document.idl
@@ -40,7 +40,7 @@ readonly attribute DOMString URL; // FIXME: documentURI should not be nullable. [ImplementedAs=url] readonly attribute DOMString? documentURI; - readonly attribute DOMString origin; + [MeasureAs=DocumentOrigin] readonly attribute DOMString origin; [RuntimeEnabled=suborigins] readonly attribute DOMString suborigin; readonly attribute DOMString compatMode;
diff --git a/third_party/WebKit/Source/core/editing/BUILD.gn b/third_party/WebKit/Source/core/editing/BUILD.gn index ac3beb0f..a570fab3 100644 --- a/third_party/WebKit/Source/core/editing/BUILD.gn +++ b/third_party/WebKit/Source/core/editing/BUILD.gn
@@ -222,6 +222,7 @@ source_set("unit_tests") { testonly = true sources = [ + "ClipboardEventFlowTest.cpp", "CompositionUnderlineTest.cpp", "EditingCommandTest.cpp", "EditingStrategyTest.cpp",
diff --git a/third_party/WebKit/Source/core/editing/ClipboardEventFlowTest.cpp b/third_party/WebKit/Source/core/editing/ClipboardEventFlowTest.cpp new file mode 100644 index 0000000..c04a974 --- /dev/null +++ b/third_party/WebKit/Source/core/editing/ClipboardEventFlowTest.cpp
@@ -0,0 +1,149 @@ +// 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 "core/dom/Document.h" +#include "core/editing/EditingTestBase.h" +#include "core/editing/FrameSelection.h" +#include "core/editing/Position.h" +#include "core/editing/SelectionTemplate.h" +#include "core/events/EventListener.h" +#include "core/frame/LocalFrame.h" +#include "core/frame/Settings.h" +#include "core/html/HTMLBodyElement.h" +#include "core/html/HTMLButtonElement.h" +#include "core/html/HTMLDivElement.h" +#include "core/html/HTMLHtmlElement.h" +#include "core/layout/LayoutObject.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace blink { + +namespace { +class MockEventListener : public EventListener { + public: + MockEventListener() : EventListener(EventListener::CPPEventListenerType) {} + + bool operator==(const EventListener& other) const final { + return this == &other; + } + + MOCK_METHOD2(handleEvent, void(ExecutionContext*, Event*)); +}; +} // namespace + +class ClipboardEventFlowTest : public EditingTestBase { + private: + void makeDocumentEmpty() { + while (document().firstChild()) + document().removeChild(document().firstChild()); + } + + void setElementText(Element& element, const std::string& text) { + element.setInnerHTML(String::fromUTF8(text.c_str()), ASSERT_NO_EXCEPTION); + updateAllLifecyclePhases(); + } + + void setElementTextAndSelectIt(Element& element, + const std::string& text, + bool selectionEditable) { + setElementText(element, text); + + frame().selection().setSelection( + SelectionInDOMTree::Builder() + .collapse(Position(element.firstChild(), 0)) + .extend(Position(element.firstChild(), text.size())) + .build()); + + element.setAttribute(HTMLNames::contenteditableAttr, + selectionEditable ? "true" : "false"); + } + + protected: + void clipboardEventTargetDependsOnSelectionEditabilityTest( + const char* command, + bool selectionEditable) { + using testing::_; + + auto* html = HTMLHtmlElement::create(document()); + auto* body = HTMLBodyElement::create(document()); + auto* focusableElement = HTMLButtonElement::create(document()); + auto* elementWithSelection = HTMLDivElement::create(document()); + + auto* eventListenerInstalledOnFocusedElement = new MockEventListener; + auto* eventListenerInstalledOnElementWithSelection = new MockEventListener; + + focusableElement->addEventListener(command, + eventListenerInstalledOnFocusedElement); + elementWithSelection->addEventListener( + command, eventListenerInstalledOnElementWithSelection); + + makeDocumentEmpty(); + document().setDesignMode("on"); + + body->appendChild(focusableElement); + body->appendChild(elementWithSelection); + html->appendChild(body); + document().appendChild(html); + + focusableElement->focus(); + + setElementTextAndSelectIt(*elementWithSelection, "some dummy text", + selectionEditable); + + // allow |document.execCommand| to access clipboard + frame().settings()->setJavaScriptCanAccessClipboard(true); + + // test expectations + EXPECT_CALL(*eventListenerInstalledOnFocusedElement, handleEvent(_, _)) + .Times(selectionEditable ? 0 : 1); + + EXPECT_CALL(*eventListenerInstalledOnElementWithSelection, + handleEvent(_, _)) + .Times(selectionEditable ? 1 : 0); + + // execute command + NonThrowableExceptionState exceptionState; + document().execCommand(command, false, "", exceptionState); + } +}; + +TEST_F(ClipboardEventFlowTest, + copySetsClipboardEventTargetToActiveElementWhenSelectionIsNotEditable) { + clipboardEventTargetDependsOnSelectionEditabilityTest("copy", false); +} + +TEST_F( + ClipboardEventFlowTest, + copySetsClipboardEventTargetToElementWithSelectionWhenSelectionIsEditable) { + clipboardEventTargetDependsOnSelectionEditabilityTest("copy", true); +} + +TEST_F(ClipboardEventFlowTest, + cutSetsClipboardEventTargetToActiveElementWhenSelectionIsNotEditable) { + clipboardEventTargetDependsOnSelectionEditabilityTest("cut", false); +} + +TEST_F( + ClipboardEventFlowTest, + cutSetsClipboardEventTargetToElementWithSelectionWhenSelectionIsEditable) { + clipboardEventTargetDependsOnSelectionEditabilityTest("cut", true); +} + +TEST_F(ClipboardEventFlowTest, + pasteSetsClipboardEventTargetToActiveElementWhenSelectionIsNotEditable) { + // allow |document.execCommand| to execute 'paste' command + frame().settings()->setDOMPasteAllowed(true); + + clipboardEventTargetDependsOnSelectionEditabilityTest("paste", false); +} + +TEST_F( + ClipboardEventFlowTest, + pasteSetsClipboardEventTargetToElementWithSelectionWhenSelectionIsEditable) { + // allow |document.execCommand| to execute 'paste' + frame().settings()->setDOMPasteAllowed(true); + + clipboardEventTargetDependsOnSelectionEditabilityTest("paste", true); +} +} // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/DOMSelection.cpp b/third_party/WebKit/Source/core/editing/DOMSelection.cpp index e38f0d7..5d1af9d 100644 --- a/third_party/WebKit/Source/core/editing/DOMSelection.cpp +++ b/third_party/WebKit/Source/core/editing/DOMSelection.cpp
@@ -224,11 +224,6 @@ // 2. The method must throw an IndexSizeError exception if offset is longer // than node's length ([DOM4]) and abort these steps. - if (offset < 0) { - exceptionState.throwDOMException( - IndexSizeError, String::number(offset) + " is not a valid offset."); - return; - } Range::checkNodeWOffset(node, offset, exceptionState); if (exceptionState.hadException()) return; @@ -322,20 +317,6 @@ if (!isAvailable()) return; - if (baseOffset < 0) { - exceptionState.throwDOMException( - IndexSizeError, - String::number(baseOffset) + " is not a valid base offset."); - return; - } - - if (extentOffset < 0) { - exceptionState.throwDOMException( - IndexSizeError, - String::number(extentOffset) + " is not a valid extent offset."); - return; - } - // TODO(editing-dev): Behavior on where base or extent is null is still // under discussion: https://github.com/w3c/selection-api/issues/72 if (!baseNode) { @@ -471,11 +452,6 @@ return; } - if (offset < 0) { - exceptionState.throwDOMException( - IndexSizeError, String::number(offset) + " is not a valid offset."); - return; - } Range::checkNodeWOffset(node, offset, exceptionState); if (exceptionState.hadException()) return;
diff --git a/third_party/WebKit/Source/core/editing/Editor.cpp b/third_party/WebKit/Source/core/editing/Editor.cpp index e312d48..ff28ffad 100644 --- a/third_party/WebKit/Source/core/editing/Editor.cpp +++ b/third_party/WebKit/Source/core/editing/Editor.cpp
@@ -267,7 +267,10 @@ } bool Editor::canEditRichly() const { - return frame().selection().isContentRichlyEditable(); + return frame() + .selection() + .computeVisibleSelectionInDOMTreeDeprecated() + .isContentRichlyEditable(); } // WinIE uses onbeforecut and onbeforepaste to enables the cut and paste menu @@ -741,7 +744,9 @@ } Element* Editor::findEventTargetFrom(const VisibleSelection& selection) const { - Element* target = associatedElementOf(selection.start()); + Element* target = selection.hasEditableStyle() + ? associatedElementOf(selection.start()) + : frame().document()->activeElement(); if (!target) target = frame().document()->body(); @@ -1146,7 +1151,9 @@ ResourceFetcher* loader = frame().document()->fetcher(); ResourceCacheValidationSuppressor validationSuppressor(loader); - PasteMode pasteMode = frame().selection().isContentRichlyEditable() + PasteMode pasteMode = frame().selection() + .computeVisibleSelectionInDOMTreeDeprecated() + .isContentRichlyEditable() ? AllMimeTypes : PlainTextOnly;
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.h b/third_party/WebKit/Source/core/editing/FrameSelection.h index af41e3b..bcb452c 100644 --- a/third_party/WebKit/Source/core/editing/FrameSelection.h +++ b/third_party/WebKit/Source/core/editing/FrameSelection.h
@@ -89,8 +89,6 @@ DoNotSetFocus = 1 << 3, DoNotUpdateAppearance = 1 << 4, DoNotClearStrategy = 1 << 5, - // TODO(yosin): We should get rid of |DoNotAdjustInFlatTree|. - DoNotAdjustInFlatTree = 1 << 6, }; // Union of values in SetSelectionOption and EUserTriggered typedef unsigned SetSelectionOptions; @@ -115,10 +113,6 @@ bool isContentEditable() const { return computeVisibleSelectionInDOMTreeDeprecated().isContentEditable(); } - bool isContentRichlyEditable() const { - return computeVisibleSelectionInDOMTreeDeprecated() - .isContentRichlyEditable(); - } // An implementation of |WebFrame::moveCaretSelection()| void moveCaretSelection(const IntPoint&);
diff --git a/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp b/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp index 7587722..f82a155 100644 --- a/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp
@@ -1915,7 +1915,9 @@ // before accessing |FrameSelection::selection()|. frame.selection().updateIfNeeded(); return !frame.selection().isNone() && - frame.selection().isContentRichlyEditable() && + frame.selection() + .computeVisibleSelectionInDOMTreeDeprecated() + .isContentRichlyEditable() && frame.selection().rootEditableElement(); } @@ -1947,7 +1949,9 @@ // before accessing |FrameSelection::selection()|. frame.selection().updateIfNeeded(); return frame.selection().isRange() && - frame.selection().isContentRichlyEditable(); + frame.selection() + .computeVisibleSelectionInDOMTreeDeprecated() + .isContentRichlyEditable(); } static bool enabledRedo(LocalFrame& frame, Event*, EditorCommandSource) {
diff --git a/third_party/WebKit/Source/core/frame/Location.idl b/third_party/WebKit/Source/core/frame/Location.idl index 24b40ea..6f62693 100644 --- a/third_party/WebKit/Source/core/frame/Location.idl +++ b/third_party/WebKit/Source/core/frame/Location.idl
@@ -60,7 +60,7 @@ // using DOMString instead of USVString. [SetterCallWith=(CurrentWindow,EnteredWindow), CrossOrigin=Setter, RaisesException=Setter] attribute DOMString href; [NotEnumerable, ImplementedAs=href] DOMString toString(); - readonly attribute DOMString origin; + [MeasureAs=LocationOrigin] readonly attribute DOMString origin; [SetterCallWith=(CurrentWindow,EnteredWindow), RaisesException=Setter] attribute DOMString protocol; [SetterCallWith=(CurrentWindow,EnteredWindow), RaisesException=Setter] attribute DOMString host;
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h index 9f8b010b..f0e2f9e0 100644 --- a/third_party/WebKit/Source/core/frame/UseCounter.h +++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -1474,6 +1474,8 @@ DOMClobberedVariableAccessed = 1824, HTMLDocumentCreateProcessingInstruction = 1825, FetchResponseConstructionWithStream = 1826, + LocationOrigin = 1827, + DocumentOrigin = 1828, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/WebKit/Source/core/html/HTMLButtonElement.h b/third_party/WebKit/Source/core/html/HTMLButtonElement.h index 83576c4..eea1848e 100644 --- a/third_party/WebKit/Source/core/html/HTMLButtonElement.h +++ b/third_party/WebKit/Source/core/html/HTMLButtonElement.h
@@ -24,11 +24,12 @@ #ifndef HTMLButtonElement_h #define HTMLButtonElement_h +#include "core/CoreExport.h" #include "core/html/HTMLFormControlElement.h" namespace blink { -class HTMLButtonElement final : public HTMLFormControlElement { +class CORE_EXPORT HTMLButtonElement final : public HTMLFormControlElement { DEFINE_WRAPPERTYPEINFO(); public:
diff --git a/third_party/WebKit/Source/core/html/TextControlElement.cpp b/third_party/WebKit/Source/core/html/TextControlElement.cpp index 273579c..0eebaaf 100644 --- a/third_party/WebKit/Source/core/html/TextControlElement.cpp +++ b/third_party/WebKit/Source/core/html/TextControlElement.cpp
@@ -442,8 +442,8 @@ : endPosition) .setIsDirectional(direction != SelectionHasNoDirection) .build(), - FrameSelection::DoNotAdjustInFlatTree | FrameSelection::CloseTyping | - FrameSelection::ClearTypingStyle | FrameSelection::DoNotSetFocus); + FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | + FrameSelection::DoNotSetFocus); return true; }
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp index e301c9d..dc641a6 100644 --- a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp +++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
@@ -796,6 +796,11 @@ frame()->document()->getSecurityOrigin()->protocol())) { Deprecation::countDeprecation( frame()->document(), UseCounter::LegacyProtocolEmbeddedAsSubresource); + + // TODO(mkwst): Drop the runtime-enabled check in M59: + // https://www.chromestatus.com/feature/5709390967472128 + if (RuntimeEnabledFeatures::blockLegacySubresourcesEnabled()) + return ResourceRequestBlockedReason::Origin; } if (!url.user().isEmpty() || !url.pass().isEmpty()) { Deprecation::countDeprecation(
diff --git a/third_party/WebKit/Source/core/testing/Internals.cpp b/third_party/WebKit/Source/core/testing/Internals.cpp index dc9440c..c13b7b9 100644 --- a/third_party/WebKit/Source/core/testing/Internals.cpp +++ b/third_party/WebKit/Source/core/testing/Internals.cpp
@@ -913,6 +913,19 @@ return ClientRect::create(frame()->selection().absoluteCaretBounds()); } +String Internals::textAffinity() { + if (frame() + ->page() + ->focusController() + .focusedFrame() + ->selection() + .selectionInDOMTree() + .affinity() == TextAffinity::Upstream) { + return "Upstream"; + } + return "Downstream"; +} + ClientRect* Internals::boundingBox(Element* element) { DCHECK(element);
diff --git a/third_party/WebKit/Source/core/testing/Internals.h b/third_party/WebKit/Source/core/testing/Internals.h index e0d42cc..43d7c79 100644 --- a/third_party/WebKit/Source/core/testing/Internals.h +++ b/third_party/WebKit/Source/core/testing/Internals.h
@@ -422,6 +422,7 @@ Node* visibleSelectionFocusNode(); unsigned visibleSelectionFocusOffset(); ClientRect* selectionBounds(ExceptionState&); + String textAffinity(); bool loseSharedGraphicsContext3D();
diff --git a/third_party/WebKit/Source/core/testing/Internals.idl b/third_party/WebKit/Source/core/testing/Internals.idl index 44b8cd32..0dd93729 100644 --- a/third_party/WebKit/Source/core/testing/Internals.idl +++ b/third_party/WebKit/Source/core/testing/Internals.idl
@@ -277,6 +277,7 @@ readonly attribute Node? visibleSelectionFocusNode; readonly attribute unsigned long visibleSelectionFocusOffset; [RaisesException] ClientRect selectionBounds(); + readonly attribute DOMString textAffinity; boolean loseSharedGraphicsContext3D();
diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/Source/platform/BUILD.gn index a7bae8a..f93120e 100644 --- a/third_party/WebKit/Source/platform/BUILD.gn +++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -1761,6 +1761,7 @@ "network/HTTPParsersTest.cpp", "network/LinkHeaderTest.cpp", "network/NetworkUtilsTest.cpp", + "network/ParsedContentTypeTest.cpp", "network/ResourceRequestTest.cpp", "network/mime/MIMETypeRegistryTest.cpp", "scheduler/base/intrusive_heap_unittest.cc",
diff --git a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5 b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5 index 69a12661..c976938c 100644 --- a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5 +++ b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5
@@ -1019,5 +1019,9 @@ name: "RestrictCompleteURLCharacterSet", status: "experimental", }, + { + name: "BlockLegacySubresources", + status: "experimental", + } ], }
diff --git a/third_party/WebKit/Source/platform/network/ParsedContentTypeTest.cpp b/third_party/WebKit/Source/platform/network/ParsedContentTypeTest.cpp new file mode 100644 index 0000000..64ed0d1 --- /dev/null +++ b/third_party/WebKit/Source/platform/network/ParsedContentTypeTest.cpp
@@ -0,0 +1,93 @@ +// 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 "platform/network/ParsedContentType.h" + +#include "testing/gtest/include/gtest/gtest.h" + +namespace blink { + +TEST(ParsedContentTypeTest, MimeTypeWithoutCharset) { + ParsedContentType t("text/plain"); + + EXPECT_EQ("text/plain", t.mimeType()); + EXPECT_EQ(String(), t.charset()); +} + +TEST(ParsedContentTypeTest, MimeTypeWithCharSet) { + ParsedContentType t(" text/plain ; x=y;charset=utf-8 "); + + EXPECT_EQ("text/plain", t.mimeType()); + EXPECT_EQ("utf-8", t.charset()); +} + +TEST(ParsedContentTypeTest, MimeTypeWithQuotedCharSet) { + ParsedContentType t("text/plain; \"charset\"=\"x=y;y=z; ;;\""); + + EXPECT_EQ("text/plain", t.mimeType()); + EXPECT_EQ("x=y;y=z; ;;", t.charset()); +} + +// TODO(yhirano): Add tests for escaped quotation: it's currently +// mis-implemented. + +TEST(ParsedContentTypeTest, InvalidMimeTypeWithoutCharset) { + ParsedContentType t(" "); + + EXPECT_EQ(String(), t.mimeType()); + EXPECT_EQ(String(), t.charset()); +} + +TEST(ParsedContentTypeTest, InvalidMimeTypeWithCharset) { + ParsedContentType t("text/plain; charset;"); + + EXPECT_EQ("text/plain", t.mimeType()); + EXPECT_EQ(String(), t.charset()); +} + +TEST(ParsedContentTypeTest, Validity) { + EXPECT_TRUE(isValidContentType("text/plain")); + EXPECT_TRUE(isValidContentType("text/plain; charset=utf-8")); + EXPECT_TRUE(isValidContentType(" text/plain ")); + EXPECT_TRUE(isValidContentType(" text/plain;charset=utf-8 ")); + EXPECT_TRUE(isValidContentType("unknown/unknown")); + EXPECT_TRUE(isValidContentType("unknown/unknown; charset=unknown")); + EXPECT_TRUE(isValidContentType("x/y;\"z=\\\"q;t\"=\"ttx&r=z;;kd==\"")); + + EXPECT_FALSE(isValidContentType("text/plain\r")); + EXPECT_FALSE(isValidContentType("text/plain\n")); + EXPECT_FALSE(isValidContentType("")); + EXPECT_FALSE(isValidContentType(" ")); + EXPECT_FALSE(isValidContentType("text/plain;")); + EXPECT_FALSE(isValidContentType("text/plain; ")); + EXPECT_FALSE(isValidContentType("text/plain; charset")); + EXPECT_FALSE(isValidContentType("text/plain; charset;")); + EXPECT_FALSE(isValidContentType("x/y;\"xx")); + EXPECT_FALSE(isValidContentType("x/y;\"xx=y")); + + // TODO(yhirano): Add tests for non-tokens. They are currently accepted. +} + +TEST(ParsedContentTypeTest, ParameterName) { + String input = "x; y=z; y=u; t=r;s=x;\"Q\"=U;\"T\"=S;\"z u\"=\"q a\""; + + ParsedContentType t(input); + + EXPECT_EQ(6u, t.parameterCount()); + EXPECT_EQ(String(), t.parameterValueForName("a")); + EXPECT_EQ(String(), t.parameterValueForName("x")); + EXPECT_EQ("u", t.parameterValueForName("y")); + EXPECT_EQ("r", t.parameterValueForName("t")); + EXPECT_EQ("x", t.parameterValueForName("s")); + EXPECT_EQ("U", t.parameterValueForName("Q")); + EXPECT_EQ("S", t.parameterValueForName("T")); + EXPECT_EQ("q a", t.parameterValueForName("z u")); + + // TODO(yhirano): Case-sensitivity is mis-implemented. + // TODO(yhirano): Add tests for escaped quotations. + // TODO(yhirano): Leading spaces of a parameter value should be ignored. + // TODO(yhirano): Trailing spaces of a parameter value should be ignored. +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.cc b/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.cc index 312136a..7406dc4 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.cc
@@ -39,11 +39,16 @@ return task_queue_manager_->delegate()->NowTicks(); } -void RealTimeDomain::RequestWakeup(base::TimeTicks now, base::TimeDelta delay) { +void RealTimeDomain::RequestWakeupAt(base::TimeTicks now, + base::TimeTicks run_time) { // NOTE this is only called if the scheduled runtime is sooner than any // previously scheduled runtime, or there is no (outstanding) previously // scheduled runtime. - task_queue_manager_->MaybeScheduleDelayedWork(FROM_HERE, now, delay); + task_queue_manager_->MaybeScheduleDelayedWork(FROM_HERE, this, now, run_time); +} + +void RealTimeDomain::CancelWakeupAt(base::TimeTicks run_time) { + task_queue_manager_->CancelDelayedWork(this, run_time); } base::Optional<base::TimeDelta> RealTimeDomain::DelayTillNextTask(
diff --git a/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.h b/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.h index 6883599..1457204 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.h +++ b/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.h
@@ -29,7 +29,8 @@ protected: void OnRegisterWithTaskQueueManager( TaskQueueManager* task_queue_manager) override; - void RequestWakeup(base::TimeTicks now, base::TimeDelta delay) override; + void RequestWakeupAt(base::TimeTicks now, base::TimeTicks run_time) override; + void CancelWakeupAt(base::TimeTicks run_time) override; void AsValueIntoInternal( base::trace_event::TracedValue* state) const override;
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc index 762f079..fee7f31 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
@@ -276,11 +276,14 @@ main_thread_only().delayed_incoming_queue.push(std::move(pending_task)); // If |pending_task| is at the head of the queue, then make sure a wakeup - // is requested. - if (main_thread_only().delayed_incoming_queue.top().delayed_run_time == - delayed_run_time) { - main_thread_only().time_domain->ScheduleDelayedWork( - this, pending_task.delayed_run_time, now); + // is requested if the queue is enabled. Note we still want to schedule a + // wakeup even if blocked by a fence, because we'd break throttling logic + // otherwise. + base::TimeTicks next_delayed_task = + main_thread_only().delayed_incoming_queue.top().delayed_run_time; + if (next_delayed_task == delayed_run_time && IsQueueEnabled()) { + main_thread_only().time_domain->ScheduleDelayedWork(this, delayed_run_time, + now); } TraceQueueSize(false); @@ -404,7 +407,8 @@ } base::Optional<base::TimeTicks> TaskQueueImpl::GetNextScheduledWakeUp() { - if (main_thread_only().delayed_incoming_queue.empty()) + // Note we don't scheduled a wakeup for disabled queues. + if (main_thread_only().delayed_incoming_queue.empty() || !IsQueueEnabled()) return base::nullopt; return main_thread_only().delayed_incoming_queue.top().delayed_run_time; @@ -581,7 +585,7 @@ main_thread_only().time_domain = time_domain; time_domain->RegisterQueue(this); - if (!main_thread_only().delayed_incoming_queue.empty()) { + if (IsQueueEnabled() && !main_thread_only().delayed_incoming_queue.empty()) { time_domain->ScheduleDelayedWork( this, main_thread_only().delayed_incoming_queue.top().delayed_run_time, time_domain->Now()); @@ -799,10 +803,18 @@ return; if (enable) { + if (!main_thread_only().delayed_incoming_queue.empty()) { + main_thread_only().time_domain->ScheduleDelayedWork( + this, + main_thread_only().delayed_incoming_queue.top().delayed_run_time, + main_thread_only().time_domain->Now()); + } // Note the selector calls TaskQueueManager::OnTaskQueueEnabled which posts // a DoWork if needed. main_thread_only().task_queue_manager->selector_.EnableQueue(this); } else { + if (!main_thread_only().delayed_incoming_queue.empty()) + main_thread_only().time_domain->CancelDelayedWork(this); main_thread_only().task_queue_manager->selector_.DisableQueue(this); } } @@ -838,9 +850,12 @@ main_thread_only().time_domain->CancelDelayedWork(this); } else if (first_task_runtime != main_thread_only().delayed_incoming_queue.top().delayed_run_time) { - main_thread_only().time_domain->ScheduleDelayedWork( - this, main_thread_only().delayed_incoming_queue.top().delayed_run_time, - main_thread_only().time_domain->Now()); + if (IsQueueEnabled()) { + main_thread_only().time_domain->ScheduleDelayedWork( + this, + main_thread_only().delayed_incoming_queue.top().delayed_run_time, + main_thread_only().time_domain->Now()); + } } }
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc index e42fee1..49fd2f8 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
@@ -230,10 +230,13 @@ void TaskQueueManager::MaybeScheduleDelayedWork( const tracked_objects::Location& from_here, + TimeDomain* requesting_time_domain, base::TimeTicks now, - base::TimeDelta delay) { + base::TimeTicks run_time) { DCHECK(main_thread_checker_.CalledOnValidThread()); - DCHECK_GE(delay, base::TimeDelta()); + // Make sure we don't cancel another TimeDomain's wakeup. + DCHECK(!next_delayed_do_work_ || + next_delayed_do_work_.time_domain() == requesting_time_domain); { base::AutoLock lock(any_thread_lock_); @@ -247,22 +250,35 @@ } } - // De-duplicate DoWork posts. - base::TimeTicks run_time = now + delay; - if (next_scheduled_delayed_do_work_time_ <= run_time && - !next_scheduled_delayed_do_work_time_.is_null()) + // If there's a delayed DoWork scheduled to run sooner, we don't need to do + // anything because DoWork will post a delayed continuation as needed. + if (next_delayed_do_work_ && next_delayed_do_work_.run_time() <= run_time) return; + cancelable_delayed_do_work_closure_.Reset(delayed_do_work_closure_); + + base::TimeDelta delay = std::max(base::TimeDelta(), run_time - now); TRACE_EVENT1(disabled_by_default_tracing_category_, "TaskQueueManager::MaybeScheduleDelayedWork::PostDelayedTask", "delay_ms", delay.InMillisecondsF()); cancelable_delayed_do_work_closure_.Reset(delayed_do_work_closure_); - next_scheduled_delayed_do_work_time_ = run_time; + next_delayed_do_work_ = NextDelayedDoWork(run_time, requesting_time_domain); delegate_->PostDelayedTask( from_here, cancelable_delayed_do_work_closure_.callback(), delay); } +void TaskQueueManager::CancelDelayedWork(TimeDomain* requesting_time_domain, + base::TimeTicks run_time) { + DCHECK(main_thread_checker_.CalledOnValidThread()); + if (next_delayed_do_work_.run_time() != run_time) + return; + + DCHECK_EQ(next_delayed_do_work_.time_domain(), requesting_time_domain); + cancelable_delayed_do_work_closure_.Cancel(); + next_delayed_do_work_.Clear(); +} + void TaskQueueManager::DoWork(bool delayed) { DCHECK(main_thread_checker_.CalledOnValidThread()); TRACE_EVENT1(tracing_category_, "TaskQueueManager::DoWork", "delayed", @@ -274,10 +290,9 @@ queues_to_delete_.clear(); // This must be done before running any tasks because they could invoke a - // nested message loop and we risk having a stale - // |next_scheduled_delayed_do_work_time_|. + // nested message loop and we risk having a stale |next_delayed_do_work_|. if (delayed) - next_scheduled_delayed_do_work_time_ = base::TimeTicks(); + next_delayed_do_work_.Clear(); for (int i = 0; i < work_batch_size_; i++) { IncomingImmediateWorkMap queues_to_reload; @@ -339,7 +354,7 @@ { MoveableAutoLock lock(any_thread_lock_); - base::Optional<base::TimeDelta> next_delay = + base::Optional<NextTaskDelay> next_delay = ComputeDelayTillNextTaskLocked(&lazy_now); any_thread().do_work_running_count--; @@ -353,11 +368,10 @@ } void TaskQueueManager::PostDoWorkContinuationLocked( - base::Optional<base::TimeDelta> next_delay, + base::Optional<NextTaskDelay> next_delay, LazyNow* lazy_now, MoveableAutoLock&& lock) { DCHECK(main_thread_checker_.CalledOnValidThread()); - base::TimeDelta delay; { MoveableAutoLock auto_lock(std::move(lock)); @@ -365,8 +379,8 @@ // If there are no tasks left then we don't need to post a continuation. if (!next_delay) { // If there's a pending delayed DoWork, cancel it because it's not needed. - if (!next_scheduled_delayed_do_work_time_.is_null()) { - next_scheduled_delayed_do_work_time_ = base::TimeTicks(); + if (next_delayed_do_work_) { + next_delayed_do_work_.Clear(); cancelable_delayed_do_work_closure_.Cancel(); } return; @@ -376,42 +390,37 @@ if (any_thread().immediate_do_work_posted_count > 0) return; - delay = next_delay.value(); - - // This isn't supposed to happen, but in case it does convert to - // non-delayed. - if (delay < base::TimeDelta()) - delay = base::TimeDelta(); - - if (delay.is_zero()) { + if (next_delay->delay() <= base::TimeDelta()) { // If a delayed DoWork is pending then we don't need to post a // continuation because it should run immediately. - if (!next_scheduled_delayed_do_work_time_.is_null() && - next_scheduled_delayed_do_work_time_ <= lazy_now->Now()) { + if (next_delayed_do_work_ && + next_delayed_do_work_.run_time() <= lazy_now->Now()) { return; } any_thread().immediate_do_work_posted_count++; - } else { - base::TimeTicks run_time = lazy_now->Now() + delay; - if (next_scheduled_delayed_do_work_time_ == run_time) - return; - - next_scheduled_delayed_do_work_time_ = run_time; } } // We avoid holding |any_thread_lock_| while posting the task. - if (delay.is_zero()) { + if (next_delay->delay() <= base::TimeDelta()) { delegate_->PostTask(FROM_HERE, immediate_do_work_closure_); } else { + base::TimeTicks run_time = lazy_now->Now() + next_delay->delay(); + + if (next_delayed_do_work_.run_time() == run_time) + return; + + next_delayed_do_work_ = + NextDelayedDoWork(run_time, next_delay->time_domain()); cancelable_delayed_do_work_closure_.Reset(delayed_do_work_closure_); - delegate_->PostDelayedTask( - FROM_HERE, cancelable_delayed_do_work_closure_.callback(), delay); + delegate_->PostDelayedTask(FROM_HERE, + cancelable_delayed_do_work_closure_.callback(), + next_delay->delay()); } } -base::Optional<base::TimeDelta> +base::Optional<TaskQueueManager::NextTaskDelay> TaskQueueManager::ComputeDelayTillNextTaskLocked(LazyNow* lazy_now) { DCHECK(main_thread_checker_.CalledOnValidThread()); @@ -420,27 +429,32 @@ // check is equavalent to calling ReloadEmptyWorkQueues first. for (const auto& pair : any_thread().has_incoming_immediate_work) { if (pair.first->CouldTaskRun(pair.second)) - return base::TimeDelta(); + return NextTaskDelay(); } // If the selector has non-empty queues we trivially know there is immediate // work to be done. if (!selector_.EnabledWorkQueuesEmpty()) - return base::TimeDelta(); + return NextTaskDelay(); // Otherwise we need to find the shortest delay, if any. NB we don't need to // call WakeupReadyDelayedQueues because it's assumed DelayTillNextTask will // return base::TimeDelta>() if the delayed task is due to run now. - base::Optional<base::TimeDelta> next_continuation; + base::Optional<NextTaskDelay> delay_till_next_task; for (TimeDomain* time_domain : time_domains_) { - base::Optional<base::TimeDelta> continuation = + base::Optional<base::TimeDelta> delay = time_domain->DelayTillNextTask(lazy_now); - if (!continuation) + if (!delay) continue; - if (!next_continuation || next_continuation.value() > continuation.value()) - next_continuation = continuation; + + NextTaskDelay task_delay = (delay.value() == base::TimeDelta()) + ? NextTaskDelay() + : NextTaskDelay(delay.value(), time_domain); + + if (!delay_till_next_task || delay_till_next_task > task_delay) + delay_till_next_task = task_delay; } - return next_continuation; + return delay_till_next_task; } bool TaskQueueManager::SelectWorkQueueToService(
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.h b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.h index 21c4aedc..fa568cc6 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.h +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.h
@@ -74,8 +74,14 @@ // runner. These delayed tasks are de-duplicated. Must be called on the thread // this class was created on. void MaybeScheduleDelayedWork(const tracked_objects::Location& from_here, + TimeDomain* requesting_time_domain, base::TimeTicks now, - base::TimeDelta delay); + base::TimeTicks run_time); + + // Cancels a delayed task to process work at |run_time|, previously requested + // with MaybeScheduleDelayedWork. + void CancelDelayedWork(TimeDomain* requesting_time_domain, + base::TimeTicks run_time); // Set the number of tasks executed in a single invocation of the task queue // manager. Increasing the batch size can reduce the overhead of yielding @@ -149,11 +155,73 @@ // need them, you can turn them off. void SetRecordTaskDelayHistograms(bool record_task_delay_histograms); - private: + protected: friend class LazyNow; friend class internal::TaskQueueImpl; friend class TaskQueueManagerTest; + // Intermediate data structure, used to compute NextDelayedDoWork. + class NextTaskDelay { + public: + NextTaskDelay() : time_domain_(nullptr) {} + + using AllowAnyDelayForTesting = int; + + NextTaskDelay(base::TimeDelta delay, TimeDomain* time_domain) + : delay_(delay), time_domain_(time_domain) { + DCHECK_GT(delay, base::TimeDelta()); + DCHECK(time_domain); + } + + NextTaskDelay(base::TimeDelta delay, + TimeDomain* time_domain, + AllowAnyDelayForTesting) + : delay_(delay), time_domain_(time_domain) { + DCHECK(time_domain); + } + + base::TimeDelta delay() const { return delay_; } + TimeDomain* time_domain() const { return time_domain_; } + + bool operator>(const NextTaskDelay& other) const { + return delay_ > other.delay_; + } + + bool operator<(const NextTaskDelay& other) const { + return delay_ < other.delay_; + } + + private: + base::TimeDelta delay_; + TimeDomain* time_domain_; + }; + + private: + // Represents a scheduled delayed DoWork (if any). Only public for testing. + class NextDelayedDoWork { + public: + NextDelayedDoWork() : time_domain_(nullptr) {} + NextDelayedDoWork(base::TimeTicks run_time, TimeDomain* time_domain) + : run_time_(run_time), time_domain_(time_domain) { + DCHECK_NE(run_time, base::TimeTicks()); + DCHECK(time_domain); + } + + base::TimeTicks run_time() const { return run_time_; } + TimeDomain* time_domain() const { return time_domain_; } + + void Clear() { + run_time_ = base::TimeTicks(); + time_domain_ = nullptr; + } + + explicit operator bool() const { return !run_time_.is_null(); } + + private: + base::TimeTicks run_time_; + TimeDomain* time_domain_; + }; + class DeletionSentinel : public base::RefCounted<DeletionSentinel> { private: friend class base::RefCounted<DeletionSentinel>; @@ -178,7 +246,7 @@ void DoWork(bool delayed); // Post a DoWork continuation if |next_delay| is not empty. - void PostDoWorkContinuationLocked(base::Optional<base::TimeDelta> next_delay, + void PostDoWorkContinuationLocked(base::Optional<NextTaskDelay> next_delay, LazyNow* lazy_now, MoveableAutoLock&& lock); @@ -216,7 +284,7 @@ // Calls DelayTillNextTask on all time domains and returns the smallest delay // requested if any. - base::Optional<base::TimeDelta> ComputeDelayTillNextTaskLocked( + base::Optional<NextTaskDelay> ComputeDelayTillNextTaskLocked( LazyNow* lazy_now); void MaybeRecordTaskDelayHistograms( @@ -293,7 +361,7 @@ return any_thread_; } - base::TimeTicks next_scheduled_delayed_do_work_time_; + NextDelayedDoWork next_delayed_do_work_; bool record_task_delay_histograms_;
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_perftest.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_perftest.cc index a7f7454..a39f1b6 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_perftest.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_perftest.cc
@@ -42,12 +42,17 @@ return base::TimeDelta(); // Makes DoWork post an immediate continuation. } - void RequestWakeup(base::TimeTicks now, base::TimeDelta delay) override { + void RequestWakeupAt(base::TimeTicks now, base::TimeTicks run_time) override { // De-dupe DoWorks. if (NumberOfScheduledWakeups() == 1u) RequestDoWork(); } + void CancelWakeupAt(base::TimeTicks run_time) override { + // We didn't post a delayed task in RequestWakeupAt so there's no need to do + // anything here. + } + const char* GetName() const override { return "PerfTestTimeDomain"; } DISALLOW_COPY_AND_ASSIGN(PerfTestTimeDomain);
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc index fc290a3..238d8305 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
@@ -32,9 +32,11 @@ #include "platform/scheduler/base/work_queue_sets.h" #include "testing/gmock/include/gmock/gmock.h" +using testing::AnyNumber; using testing::Contains; using testing::ElementsAre; using testing::ElementsAreArray; +using testing::Mock; using testing::Not; using testing::_; using blink::scheduler::internal::EnqueueOrder; @@ -42,6 +44,21 @@ namespace blink { namespace scheduler { +class TaskQueueManagerForTest : public TaskQueueManager { + public: + TaskQueueManagerForTest( + scoped_refptr<TaskQueueManagerDelegate> delegate, + const char* tracing_category, + const char* disabled_by_default_tracing_category, + const char* disabled_by_default_verbose_tracing_category) + : TaskQueueManager(delegate, + tracing_category, + disabled_by_default_tracing_category, + disabled_by_default_verbose_tracing_category) {} + + using TaskQueueManager::NextTaskDelay; +}; + class MessageLoopTaskRunner : public TaskQueueManagerDelegateForTest { public: static scoped_refptr<MessageLoopTaskRunner> Create( @@ -85,7 +102,7 @@ test_task_runner_.get(), base::MakeUnique<TestTimeSource>(now_src_.get())); - manager_ = base::MakeUnique<TaskQueueManager>( + manager_ = base::MakeUnique<TaskQueueManagerForTest>( main_task_runner_, "test.scheduler", "test.scheduler", "test.scheduler.debug"); @@ -106,7 +123,7 @@ message_loop_.reset(new base::MessageLoop()); // A null clock triggers some assertions. now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); - manager_ = base::MakeUnique<TaskQueueManager>( + manager_ = base::MakeUnique<TaskQueueManagerForTest>( MessageLoopTaskRunner::Create( base::WrapUnique(new TestTimeSource(now_src_.get()))), "test.scheduler", "test.scheduler", "test.scheduler.debug"); @@ -120,12 +137,14 @@ manager_->WakeupReadyDelayedQueues(&lazy_now); } - base::Optional<base::TimeDelta> ComputeDelayTillNextTask(LazyNow* lazy_now) { + using NextTaskDelay = TaskQueueManagerForTest::NextTaskDelay; + + base::Optional<NextTaskDelay> ComputeDelayTillNextTask(LazyNow* lazy_now) { base::AutoLock lock(manager_->any_thread_lock_); return manager_->ComputeDelayTillNextTaskLocked(lazy_now); } - void PostDoWorkContinuation(base::Optional<base::TimeDelta> next_delay, + void PostDoWorkContinuation(base::Optional<NextTaskDelay> next_delay, LazyNow* lazy_now) { MoveableAutoLock lock(manager_->any_thread_lock_); return manager_->PostDoWorkContinuationLocked(next_delay, lazy_now, @@ -137,8 +156,8 @@ return manager_->any_thread().immediate_do_work_posted_count; } - base::TimeTicks next_scheduled_delayed_do_work_time() const { - return manager_->next_scheduled_delayed_do_work_time_; + base::TimeTicks next_delayed_do_work_time() const { + return manager_->next_delayed_do_work_.run_time(); } EnqueueOrder GetNextSequenceNumber() const { @@ -175,7 +194,7 @@ std::unique_ptr<base::SimpleTestTickClock> now_src_; scoped_refptr<TaskQueueManagerDelegateForTest> main_task_runner_; scoped_refptr<cc::OrderedSimpleTaskRunner> test_task_runner_; - std::unique_ptr<TaskQueueManager> manager_; + std::unique_ptr<TaskQueueManagerForTest> manager_; std::vector<scoped_refptr<internal::TaskQueueImpl>> runners_; TestTaskTimeObserver test_task_time_observer_; }; @@ -204,7 +223,7 @@ TestCountUsesTimeSource* test_count_uses_time_source = new TestCountUsesTimeSource(); - manager_ = base::MakeUnique<TaskQueueManager>( + manager_ = base::MakeUnique<TaskQueueManagerForTest>( MessageLoopTaskRunner::Create( base::WrapUnique(test_count_uses_time_source)), "test.scheduler", "test.scheduler", "test.scheduler.debug"); @@ -237,7 +256,7 @@ TestCountUsesTimeSource* test_count_uses_time_source = new TestCountUsesTimeSource(); - manager_ = base::MakeUnique<TaskQueueManager>( + manager_ = base::MakeUnique<TaskQueueManagerForTest>( MessageLoopTaskRunner::Create( base::WrapUnique(test_count_uses_time_source)), "test.scheduler", "test.scheduler", "test.scheduler.debug"); @@ -382,16 +401,11 @@ EXPECT_TRUE(runners_[0]->HasPendingImmediateWork()); // Move the task into the |delayed_work_queue|. - EXPECT_TRUE(runners_[0]->delayed_work_queue()->Empty()); - std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = - runners_[0]->CreateQueueEnabledVoter(); - voter->SetQueueEnabled(false); - test_task_runner_->RunUntilIdle(); + WakeupReadyDelayedQueues(LazyNow(now_src_.get())); EXPECT_FALSE(runners_[0]->delayed_work_queue()->Empty()); EXPECT_TRUE(runners_[0]->HasPendingImmediateWork()); // Run the task, making the queue empty. - voter->SetQueueEnabled(true); test_task_runner_->RunUntilIdle(); EXPECT_FALSE(runners_[0]->HasPendingImmediateWork()); } @@ -1676,6 +1690,137 @@ } namespace { +class MockTimeDomainObserver : public TimeDomain::Observer { + public: + ~MockTimeDomainObserver() override {} + + MOCK_METHOD1(OnTimeDomainHasImmediateWork, void(TaskQueue*)); + MOCK_METHOD1(OnTimeDomainHasDelayedWork, void(TaskQueue*)); +}; +} // namespace + +TEST_F(TaskQueueManagerTest, TimeDomainObserver_ImmediateTask) { + Initialize(1u); + + MockTimeDomainObserver observer; + std::unique_ptr<VirtualTimeDomain> domain( + new VirtualTimeDomain(&observer, manager_->delegate()->NowTicks())); + manager_->RegisterTimeDomain(domain.get()); + runners_[0]->SetTimeDomain(domain.get()); + + // We should get a notification when a task is posted on an empty queue. + EXPECT_CALL(observer, OnTimeDomainHasImmediateWork(runners_[0].get())); + runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); + Mock::VerifyAndClearExpectations(&observer); + + // But not subsequently. + EXPECT_CALL(observer, OnTimeDomainHasImmediateWork(_)).Times(0); + runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); + Mock::VerifyAndClearExpectations(&observer); + + // Unless the immediate work queue is emptied. + runners_[0]->ReloadImmediateWorkQueueIfEmpty(); + EXPECT_CALL(observer, OnTimeDomainHasImmediateWork(runners_[0].get())); + runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); + + // Tidy up. + runners_[0]->UnregisterTaskQueue(); + manager_->UnregisterTimeDomain(domain.get()); +} + +TEST_F(TaskQueueManagerTest, TimeDomainObserver_DelayedTask) { + Initialize(1u); + + MockTimeDomainObserver observer; + std::unique_ptr<VirtualTimeDomain> domain( + new VirtualTimeDomain(&observer, manager_->delegate()->NowTicks())); + manager_->RegisterTimeDomain(domain.get()); + runners_[0]->SetTimeDomain(domain.get()); + + // We should get a notification when a delayed task is posted on an empty + // queue. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get())); + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromSeconds(10)); + Mock::VerifyAndClearExpectations(&observer); + + // We should not get a notification for a longer delay. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0); + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromSeconds(100)); + Mock::VerifyAndClearExpectations(&observer); + + // We should get a notification for a shorter delay. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get())); + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromSeconds(1)); + Mock::VerifyAndClearExpectations(&observer); + + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = + runners_[0]->CreateQueueEnabledVoter(); + voter->SetQueueEnabled(false); + + // When a queue has been enabled, we may get a notification if the + // TimeDomain's next scheduled wakeup has changed. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get())); + voter->SetQueueEnabled(true); + + // Tidy up. + runners_[0]->UnregisterTaskQueue(); + manager_->UnregisterTimeDomain(domain.get()); +} + +TEST_F(TaskQueueManagerTest, TimeDomainObserver_DelayedTaskMultipleQueues) { + Initialize(2u); + + MockTimeDomainObserver observer; + std::unique_ptr<VirtualTimeDomain> domain( + new VirtualTimeDomain(&observer, manager_->delegate()->NowTicks())); + manager_->RegisterTimeDomain(domain.get()); + runners_[0]->SetTimeDomain(domain.get()); + runners_[1]->SetTimeDomain(domain.get()); + + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get())).Times(1); + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[1].get())).Times(1); + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromSeconds(1)); + runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromSeconds(10)); + testing::Mock::VerifyAndClearExpectations(&observer); + + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter0 = + runners_[0]->CreateQueueEnabledVoter(); + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter1 = + runners_[1]->CreateQueueEnabledVoter(); + + // Disabling a queue should not trigger a notification. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0); + voter0->SetQueueEnabled(false); + Mock::VerifyAndClearExpectations(&observer); + + // Re-enabling it should should also trigger a notification. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get())); + voter0->SetQueueEnabled(true); + Mock::VerifyAndClearExpectations(&observer); + + // Disabling a queue should not trigger a notification. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0); + voter1->SetQueueEnabled(false); + Mock::VerifyAndClearExpectations(&observer); + + // Re-enabling it should should trigger a notification. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[1].get())); + voter1->SetQueueEnabled(true); + Mock::VerifyAndClearExpectations(&observer); + + // Tidy up. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(AnyNumber()); + runners_[0]->UnregisterTaskQueue(); + runners_[1]->UnregisterTaskQueue(); + manager_->UnregisterTimeDomain(domain.get()); +} + +namespace { void ChromiumRunloopInspectionTask( scoped_refptr<cc::OrderedSimpleTaskRunner> test_task_runner) { EXPECT_EQ(1u, test_task_runner->NumPendingTasks()); @@ -2321,10 +2466,6 @@ TEST_F(TaskQueueManagerTest, ComputeDelayTillNextTask) { Initialize(2u); - std::unique_ptr<RealTimeDomain> domain2(new RealTimeDomain("test")); - manager_->RegisterTimeDomain(domain2.get()); - runners_[1]->SetTimeDomain(domain2.get()); - LazyNow lazy_now(now_src_.get()); EXPECT_FALSE(static_cast<bool>(ComputeDelayTillNextTask(&lazy_now))); @@ -2332,27 +2473,23 @@ base::TimeDelta::FromSeconds(10)); EXPECT_EQ(base::TimeDelta::FromSeconds(10), - ComputeDelayTillNextTask(&lazy_now).value()); + ComputeDelayTillNextTask(&lazy_now)->delay()); runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), base::TimeDelta::FromSeconds(15)); EXPECT_EQ(base::TimeDelta::FromSeconds(10), - ComputeDelayTillNextTask(&lazy_now).value()); + ComputeDelayTillNextTask(&lazy_now)->delay()); runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), base::TimeDelta::FromSeconds(5)); EXPECT_EQ(base::TimeDelta::FromSeconds(5), - ComputeDelayTillNextTask(&lazy_now).value()); + ComputeDelayTillNextTask(&lazy_now)->delay()); runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); - EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now).value()); - - // Tidy up. - runners_[1]->UnregisterTaskQueue(); - manager_->UnregisterTimeDomain(domain2.get()); + EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now)->delay()); } TEST_F(TaskQueueManagerTest, ComputeDelayTillNextTask_Disabled) { @@ -2385,7 +2522,7 @@ runners_[0]->InsertFence(TaskQueue::InsertFencePosition::NOW); LazyNow lazy_now(now_src_.get()); - EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now).value()); + EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now)->delay()); } TEST_F(TaskQueueManagerTest, ComputeDelayTillNextTask_DelayedTaskReady) { @@ -2397,44 +2534,63 @@ now_src_->Advance(base::TimeDelta::FromSeconds(10)); LazyNow lazy_now(now_src_.get()); - EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now).value()); + EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now)->delay()); } TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_NoMoreWork) { Initialize(1u); LazyNow lazy_now(now_src_.get()); - PostDoWorkContinuation(base::Optional<base::TimeDelta>(), &lazy_now); + PostDoWorkContinuation(base::Optional<NextTaskDelay>(), &lazy_now); EXPECT_EQ(0u, test_task_runner_->NumPendingTasks()); EXPECT_EQ(0, immediate_do_work_posted_count()); - EXPECT_TRUE(next_scheduled_delayed_do_work_time().is_null()); + EXPECT_TRUE(next_delayed_do_work_time().is_null()); } TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_ImmediateWork) { Initialize(1u); LazyNow lazy_now(now_src_.get()); - PostDoWorkContinuation(base::TimeDelta(), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(), &lazy_now); EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); EXPECT_EQ(1, immediate_do_work_posted_count()); - EXPECT_TRUE(next_scheduled_delayed_do_work_time().is_null()); + EXPECT_TRUE(next_delayed_do_work_time().is_null()); +} + +TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWorkInThePast) { + Initialize(1u); + + LazyNow lazy_now(now_src_.get()); + // Note this isn't supposed to happen in practice. + PostDoWorkContinuation( + NextTaskDelay(base::TimeDelta::FromSeconds(-1), + runners_[0]->GetTimeDomain(), + NextTaskDelay::AllowAnyDelayForTesting()), + &lazy_now); + + EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); + EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); + EXPECT_EQ(1, immediate_do_work_posted_count()); + EXPECT_TRUE(next_delayed_do_work_time().is_null()); } TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWork) { Initialize(1u); LazyNow lazy_now(now_src_.get()); - PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(base::TimeDelta::FromSeconds(1), + runners_[0]->GetTimeDomain()), + &lazy_now); EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); EXPECT_EQ(base::TimeDelta::FromSeconds(1), test_task_runner_->DelayToNextTaskTime()); EXPECT_EQ(0, immediate_do_work_posted_count()); EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(1), - next_scheduled_delayed_do_work_time()); + next_delayed_do_work_time()); } TEST_F(TaskQueueManagerTest, @@ -2447,29 +2603,35 @@ EXPECT_EQ(1, immediate_do_work_posted_count()); LazyNow lazy_now(now_src_.get()); - PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(base::TimeDelta::FromSeconds(1), + runners_[0]->GetTimeDomain()), + &lazy_now); // Test that a delayed task didn't get posted. EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); EXPECT_EQ(1, immediate_do_work_posted_count()); - EXPECT_TRUE(next_scheduled_delayed_do_work_time().is_null()); + EXPECT_TRUE(next_delayed_do_work_time().is_null()); } TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWorkTimeChanges) { Initialize(1u); LazyNow lazy_now(now_src_.get()); - PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(base::TimeDelta::FromSeconds(1), + runners_[0]->GetTimeDomain()), + &lazy_now); EXPECT_TRUE(test_task_runner_->HasPendingTasks()); EXPECT_EQ(0, immediate_do_work_posted_count()); EXPECT_EQ(base::TimeDelta::FromSeconds(1), test_task_runner_->DelayToNextTaskTime()); EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(1), - next_scheduled_delayed_do_work_time()); + next_delayed_do_work_time()); - PostDoWorkContinuation(base::TimeDelta::FromSeconds(10), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(base::TimeDelta::FromSeconds(10), + runners_[0]->GetTimeDomain()), + &lazy_now); // This should have resulted in the previous task getting canceled and a new // one getting posted. @@ -2480,7 +2642,7 @@ test_task_runner_->DelayToNextTaskTime()); EXPECT_EQ(0, immediate_do_work_posted_count()); EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(10), - next_scheduled_delayed_do_work_time()); + next_delayed_do_work_time()); } TEST_F(TaskQueueManagerTest, @@ -2488,18 +2650,20 @@ Initialize(1u); LazyNow lazy_now(now_src_.get()); - PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(base::TimeDelta::FromSeconds(1), + runners_[0]->GetTimeDomain()), + &lazy_now); now_src_->Advance(base::TimeDelta::FromSeconds(1)); lazy_now = LazyNow(now_src_.get()); - PostDoWorkContinuation(base::TimeDelta(), &lazy_now); + PostDoWorkContinuation(NextTaskDelay(), &lazy_now); // Because the delayed DoWork was pending we don't expect an immediate DoWork // to get posted. EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); EXPECT_EQ(0, immediate_do_work_posted_count()); - EXPECT_EQ(lazy_now.Now(), next_scheduled_delayed_do_work_time()); + EXPECT_EQ(lazy_now.Now(), next_delayed_do_work_time()); } namespace { @@ -2600,5 +2764,122 @@ EXPECT_TRUE(runners_[0]->CouldTaskRun(enqueue_order)); } +TEST_F(TaskQueueManagerTest, DelayedDoWorkNotPostedForDisabledQueue) { + Initialize(1u); + + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromMilliseconds(1)); + ASSERT_TRUE(test_task_runner_->HasPendingTasks()); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(1), + test_task_runner_->DelayToNextTaskTime()); + + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = + runners_[0]->CreateQueueEnabledVoter(); + voter->SetQueueEnabled(false); + + EXPECT_TRUE(test_task_runner_->HasPendingTasks()); + test_task_runner_->RemoveCancelledTasks(); + EXPECT_FALSE(test_task_runner_->HasPendingTasks()); + + voter->SetQueueEnabled(true); + ASSERT_TRUE(test_task_runner_->HasPendingTasks()); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(1), + test_task_runner_->DelayToNextTaskTime()); +} + +TEST_F(TaskQueueManagerTest, DisablingQueuesChangesDelayTillNextDoWork) { + Initialize(3u); + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromMilliseconds(1)); + runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromMilliseconds(10)); + runners_[2]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromMilliseconds(100)); + + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter0 = + runners_[0]->CreateQueueEnabledVoter(); + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter1 = + runners_[1]->CreateQueueEnabledVoter(); + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter2 = + runners_[2]->CreateQueueEnabledVoter(); + + ASSERT_TRUE(test_task_runner_->HasPendingTasks()); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(1), + test_task_runner_->DelayToNextTaskTime()); + + voter0->SetQueueEnabled(false); + test_task_runner_->RemoveCancelledTasks(); + ASSERT_TRUE(test_task_runner_->HasPendingTasks()); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(10), + test_task_runner_->DelayToNextTaskTime()); + + voter1->SetQueueEnabled(false); + test_task_runner_->RemoveCancelledTasks(); + ASSERT_TRUE(test_task_runner_->HasPendingTasks()); + EXPECT_EQ(base::TimeDelta::FromMilliseconds(100), + test_task_runner_->DelayToNextTaskTime()); + + voter2->SetQueueEnabled(false); + test_task_runner_->RemoveCancelledTasks(); + EXPECT_FALSE(test_task_runner_->HasPendingTasks()); +} + +TEST_F(TaskQueueManagerTest, GetNextScheduledWakeUp) { + Initialize(1u); + + EXPECT_EQ(base::nullopt, runners_[0]->GetNextScheduledWakeUp()); + + base::TimeTicks start_time = manager_->delegate()->NowTicks(); + base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(10); + base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(2); + + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), delay1); + EXPECT_EQ(start_time + delay1, runners_[0]->GetNextScheduledWakeUp()); + + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), delay2); + EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp()); + + // We don't have wakeups scheduled for disabled queues. + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = + runners_[0]->CreateQueueEnabledVoter(); + voter->SetQueueEnabled(false); + EXPECT_EQ(base::nullopt, runners_[0]->GetNextScheduledWakeUp()); + + voter->SetQueueEnabled(true); + EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp()); + + // Immediate tasks shouldn't make any difference. + runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); + EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp()); + + // Neither should fences. + runners_[0]->InsertFence(TaskQueue::InsertFencePosition::BEGINNING_OF_TIME); + EXPECT_EQ(start_time + delay2, runners_[0]->GetNextScheduledWakeUp()); +} + +TEST_F(TaskQueueManagerTest, SetTimeDomainForDisabledQueue) { + Initialize(1u); + + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), + base::TimeDelta::FromMilliseconds(1)); + + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = + runners_[0]->CreateQueueEnabledVoter(); + voter->SetQueueEnabled(false); + + MockTimeDomainObserver observer; + // We should not get a notification for a disabled queue. + EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0); + + std::unique_ptr<VirtualTimeDomain> domain( + new VirtualTimeDomain(&observer, manager_->delegate()->NowTicks())); + manager_->RegisterTimeDomain(domain.get()); + runners_[0]->SetTimeDomain(domain.get()); + + // Tidy up. + runners_[0]->UnregisterTaskQueue(); + manager_->UnregisterTimeDomain(domain.get()); +} + } // namespace scheduler } // namespace blink
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector_unittest.cc index 2e12e70..cbc6e9d 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector_unittest.cc
@@ -408,6 +408,8 @@ MockObserver mock_observer; selector.SetTaskQueueSelectorObserver(&mock_observer); + EXPECT_CALL(mock_observer, OnTaskQueueEnabled(_)).Times(1); + scoped_refptr<TaskQueueImpl> task_queue(NewTaskQueueWithBlockReporting()); selector.AddQueue(task_queue.get()); std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = @@ -467,6 +469,8 @@ EXPECT_FALSE(selector.SelectWorkQueueToService(&chosen_work_queue)); testing::Mock::VerifyAndClearExpectations(&mock_observer); + EXPECT_CALL(mock_observer, OnTaskQueueEnabled(_)).Times(2); + voter.reset(); selector.EnableQueue(task_queue.get());
diff --git a/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc b/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc index 919543e9..9f8c909 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc
@@ -36,6 +36,7 @@ base::TimeTicks now) { DCHECK(main_thread_checker_.CalledOnValidThread()); DCHECK_EQ(queue->GetTimeDomain(), this); + DCHECK(queue->IsQueueEnabled()); // We only want to store a single wakeup per queue, so we need to remove any // previously registered wake up for |queue|. if (queue->heap_handle().IsValid()) { @@ -52,10 +53,8 @@ queue->set_scheduled_time_domain_wakeup(delayed_run_time); // If |queue| is the first wakeup then request the wakeup. - if (delayed_wakeup_queue_.min().queue == queue) { - base::TimeDelta delay = std::max(base::TimeDelta(), delayed_run_time - now); - RequestWakeup(now, delay); - } + if (delayed_wakeup_queue_.min().queue == queue) + RequestWakeupAt(now, delayed_run_time); if (observer_) observer_->OnTimeDomainHasDelayedWork(queue); @@ -75,9 +74,18 @@ return; DCHECK_NE(queue->scheduled_time_domain_wakeup(), base::TimeTicks()); + DCHECK(!delayed_wakeup_queue_.empty()); + base::TimeTicks prev_first_wakeup = delayed_wakeup_queue_.min().time; // O(log n) delayed_wakeup_queue_.erase(queue->heap_handle()); + + if (delayed_wakeup_queue_.empty()) { + CancelWakeupAt(prev_first_wakeup); + } else if (prev_first_wakeup != delayed_wakeup_queue_.min().time) { + CancelWakeupAt(prev_first_wakeup); + RequestWakeupAt(Now(), delayed_wakeup_queue_.min().time); + } } void TimeDomain::WakeupReadyDelayedQueues(LazyNow* lazy_now) {
diff --git a/third_party/WebKit/Source/platform/scheduler/base/time_domain.h b/third_party/WebKit/Source/platform/scheduler/base/time_domain.h index 09e3f70a..c2b828a8b 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/time_domain.h +++ b/third_party/WebKit/Source/platform/scheduler/base/time_domain.h
@@ -111,12 +111,18 @@ virtual void OnRegisterWithTaskQueueManager( TaskQueueManager* task_queue_manager) = 0; - // The implementaion will secedule task processing to run with |delay| with - // respect to the TimeDomain's time source. Always called on the main thread. + // The implementation will schedule task processing to run at time |run_time| + // within the TimeDomain's time line. Only called from the main thread. // NOTE this is only called by ScheduleDelayedWork if the scheduled runtime // is sooner than any previously sheduled work or if there is no other // scheduled work. - virtual void RequestWakeup(base::TimeTicks now, base::TimeDelta delay) = 0; + virtual void RequestWakeupAt(base::TimeTicks now, + base::TimeTicks run_time) = 0; + + // The implementation will cancel a wake up previously requested by + // RequestWakeupAt. It's expected this will be a NOP for most virtual time + // domains. + virtual void CancelWakeupAt(base::TimeTicks run_time) = 0; // For implementation specific tracing. virtual void AsValueIntoInternal(
diff --git a/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc index f8eaf85..c8b6acb 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc
@@ -53,7 +53,10 @@ void OnRegisterWithTaskQueueManager( TaskQueueManager* task_queue_manager) override {} - MOCK_METHOD2(RequestWakeup, void(base::TimeTicks now, base::TimeDelta delay)); + MOCK_METHOD2(RequestWakeupAt, + void(base::TimeTicks now, base::TimeTicks run_time)); + + MOCK_METHOD1(CancelWakeupAt, void(base::TimeTicks run_time)); void SetNow(base::TimeTicks now) { now_ = now; } @@ -89,7 +92,7 @@ TEST_F(TimeDomainTest, ScheduleDelayedWork) { base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10); base::TimeTicks delayed_runtime = time_domain_->Now() + delay; - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay)); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, delayed_runtime)); base::TimeTicks now = time_domain_->Now(); time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay, now); @@ -100,6 +103,9 @@ TaskQueue* next_task_queue; EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); EXPECT_EQ(task_queue_.get(), next_task_queue); + Mock::VerifyAndClearExpectations(time_domain_.get()); + + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(_)).Times(AnyNumber()); } TEST_F(TimeDomainTest, ScheduleDelayedWorkSupersedesPreviousWakeup) { @@ -107,7 +113,7 @@ base::TimeDelta delay2 = base::TimeDelta::FromMilliseconds(100); base::TimeTicks delayed_runtime1 = time_domain_->Now() + delay1; base::TimeTicks delayed_runtime2 = time_domain_->Now() + delay2; - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1)); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, delayed_runtime1)); base::TimeTicks now = time_domain_->Now(); time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime1, now); @@ -119,14 +125,17 @@ // Now scheduler a later wakeup, which should replace the previously requested // one. - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay2)); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, delayed_runtime2)); time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime2, now); EXPECT_TRUE(time_domain_->NextScheduledRunTime(&next_scheduled_runtime)); EXPECT_EQ(delayed_runtime2, next_scheduled_runtime); + Mock::VerifyAndClearExpectations(time_domain_.get()); + + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(_)).Times(AnyNumber()); } -TEST_F(TimeDomainTest, RequestWakeup_OnlyCalledForEarlierTasks) { +TEST_F(TimeDomainTest, RequestWakeupAt_OnlyCalledForEarlierTasks) { scoped_refptr<internal::TaskQueueImpl> task_queue2 = make_scoped_refptr( new internal::TaskQueueImpl(nullptr, time_domain_.get(), TaskQueue::Spec(TaskQueue::QueueType::TEST), @@ -147,23 +156,27 @@ base::TimeDelta delay3 = base::TimeDelta::FromMilliseconds(30); base::TimeDelta delay4 = base::TimeDelta::FromMilliseconds(1); - // RequestWakeup should always be called if there are no other wakeups. - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay1)); + // RequestWakeupAt should always be called if there are no other wakeups. base::TimeTicks now = time_domain_->Now(); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, now + delay1)); time_domain_->ScheduleDelayedWork(task_queue_.get(), now + delay1, now); Mock::VerifyAndClearExpectations(time_domain_.get()); - // RequestWakeup should not be called when scheduling later tasks. - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(0); + // RequestWakeupAt should not be called when scheduling later tasks. + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, _)).Times(0); time_domain_->ScheduleDelayedWork(task_queue2.get(), now + delay2, now); time_domain_->ScheduleDelayedWork(task_queue3.get(), now + delay3, now); - // RequestWakeup should be called when scheduling earlier tasks. + // RequestWakeupAt should be called when scheduling earlier tasks. Mock::VerifyAndClearExpectations(time_domain_.get()); - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay4)); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, now + delay4)); time_domain_->ScheduleDelayedWork(task_queue4.get(), now + delay4, now); + Mock::VerifyAndClearExpectations(time_domain_.get()); + + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, _)); + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(_)).Times(2); task_queue2->UnregisterTaskQueue(); task_queue3->UnregisterTaskQueue(); task_queue4->UnregisterTaskQueue(); @@ -175,31 +188,40 @@ TaskQueue::Spec(TaskQueue::QueueType::TEST), "test.category", "test.category")); - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)).Times(1); base::TimeTicks now = time_domain_->Now(); - time_domain_->ScheduleDelayedWork( - task_queue_.get(), now + base::TimeDelta::FromMilliseconds(10), now); - time_domain_->ScheduleDelayedWork( - task_queue2_.get(), now + base::TimeDelta::FromMilliseconds(100), now); + base::TimeTicks wakeup1 = now + base::TimeDelta::FromMilliseconds(10); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, wakeup1)).Times(1); + time_domain_->ScheduleDelayedWork(task_queue_.get(), wakeup1, now); + base::TimeTicks wakeup2 = now + base::TimeDelta::FromMilliseconds(100); + time_domain_->ScheduleDelayedWork(task_queue2_.get(), wakeup2, now); TaskQueue* next_task_queue; EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); EXPECT_EQ(task_queue_.get(), next_task_queue); + testing::Mock::VerifyAndClearExpectations(time_domain_.get()); + + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(wakeup1)).Times(1); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, wakeup2)).Times(1); + time_domain_->UnregisterQueue(task_queue_.get()); task_queue_ = scoped_refptr<internal::TaskQueueImpl>(); EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); EXPECT_EQ(task_queue2_.get(), next_task_queue); + testing::Mock::VerifyAndClearExpectations(time_domain_.get()); + + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(wakeup2)).Times(1); + time_domain_->UnregisterQueue(task_queue2_.get()); EXPECT_FALSE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); } TEST_F(TimeDomainTest, WakeupReadyDelayedQueues) { base::TimeDelta delay = base::TimeDelta::FromMilliseconds(50); - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, delay)); base::TimeTicks now = time_domain_->Now(); base::TimeTicks delayed_runtime = now + delay; + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, delayed_runtime)); time_domain_->ScheduleDelayedWork(task_queue_.get(), delayed_runtime, now); base::TimeTicks next_run_time; @@ -219,17 +241,62 @@ TEST_F(TimeDomainTest, CancelDelayedWork) { base::TimeTicks now = time_domain_->Now(); - time_domain_->ScheduleDelayedWork( - task_queue_.get(), now + base::TimeDelta::FromMilliseconds(20), now); + base::TimeTicks run_time = now + base::TimeDelta::FromMilliseconds(20); + + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, run_time)); + time_domain_->ScheduleDelayedWork(task_queue_.get(), run_time, now); TaskQueue* next_task_queue; EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); EXPECT_EQ(task_queue_.get(), next_task_queue); + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(run_time)); time_domain_->CancelDelayedWork(task_queue_.get()); EXPECT_FALSE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); } +TEST_F(TimeDomainTest, CancelDelayedWork_TwoQueues) { + scoped_refptr<internal::TaskQueueImpl> task_queue2 = make_scoped_refptr( + new internal::TaskQueueImpl(nullptr, time_domain_.get(), + TaskQueue::Spec(TaskQueue::QueueType::TEST), + "test.category", "test.category")); + + base::TimeTicks now = time_domain_->Now(); + base::TimeTicks run_time1 = now + base::TimeDelta::FromMilliseconds(20); + base::TimeTicks run_time2 = now + base::TimeDelta::FromMilliseconds(40); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, run_time1)); + time_domain_->ScheduleDelayedWork(task_queue_.get(), run_time1, now); + Mock::VerifyAndClearExpectations(time_domain_.get()); + + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, _)).Times(0); + time_domain_->ScheduleDelayedWork(task_queue2.get(), run_time2, now); + Mock::VerifyAndClearExpectations(time_domain_.get()); + + TaskQueue* next_task_queue; + EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); + EXPECT_EQ(task_queue_.get(), next_task_queue); + + base::TimeTicks next_run_time; + ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time)); + EXPECT_EQ(run_time1, next_run_time); + + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(run_time1)); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, run_time2)); + time_domain_->CancelDelayedWork(task_queue_.get()); + EXPECT_TRUE(time_domain_->NextScheduledTaskQueue(&next_task_queue)); + EXPECT_EQ(task_queue2.get(), next_task_queue); + + ASSERT_TRUE(time_domain_->NextScheduledRunTime(&next_run_time)); + EXPECT_EQ(run_time2, next_run_time); + + Mock::VerifyAndClearExpectations(time_domain_.get()); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, _)).Times(AnyNumber()); + EXPECT_CALL(*time_domain_.get(), CancelWakeupAt(_)).Times(AnyNumber()); + + // Tidy up. + task_queue2->UnregisterTaskQueue(); +} + namespace { class MockObserver : public TimeDomain::Observer { public: @@ -257,7 +324,7 @@ TEST_F(TimeDomainWithObserverTest, OnTimeDomainHasDelayedWork) { EXPECT_CALL(*observer_, OnTimeDomainHasDelayedWork(task_queue_.get())); - EXPECT_CALL(*time_domain_.get(), RequestWakeup(_, _)); + EXPECT_CALL(*time_domain_.get(), RequestWakeupAt(_, _)); base::TimeTicks now = time_domain_->Now(); time_domain_->ScheduleDelayedWork( task_queue_.get(), now + base::TimeDelta::FromMilliseconds(10), now);
diff --git a/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.cc b/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.cc index a90b3be2..56c7d37 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.cc +++ b/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.cc
@@ -34,13 +34,17 @@ return now_; } -void VirtualTimeDomain::RequestWakeup(base::TimeTicks now, - base::TimeDelta delay) { +void VirtualTimeDomain::RequestWakeupAt(base::TimeTicks now, + base::TimeTicks run_time) { // We don't need to do anything here because the caller of AdvanceTo is // responsible for calling TaskQueueManager::MaybeScheduleImmediateWork if // needed. } +void VirtualTimeDomain::CancelWakeupAt(base::TimeTicks run_time) { + // We ignore this because RequestWakeupAt is a NOP. +} + base::Optional<base::TimeDelta> VirtualTimeDomain::DelayTillNextTask( LazyNow* lazy_now) { return base::nullopt;
diff --git a/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.h b/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.h index a841226..a1503f0 100644 --- a/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.h +++ b/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.h
@@ -32,7 +32,8 @@ protected: void OnRegisterWithTaskQueueManager( TaskQueueManager* task_queue_manager) override; - void RequestWakeup(base::TimeTicks now, base::TimeDelta delay) override; + void RequestWakeupAt(base::TimeTicks now, base::TimeTicks run_time) override; + void CancelWakeupAt(base::TimeTicks run_time) override; void AsValueIntoInternal( base::trace_event::TracedValue* state) const override;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.cc b/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.cc index 04dd639..57a44ed 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.cc
@@ -24,14 +24,18 @@ return base::TimeDelta(); // Makes DoWork post an immediate continuation. } -void AutoAdvancingVirtualTimeDomain::RequestWakeup(base::TimeTicks now, - base::TimeDelta delay) { +void AutoAdvancingVirtualTimeDomain::RequestWakeupAt(base::TimeTicks now, + base::TimeTicks run_time) { // Avoid posting pointless DoWorks. I.e. if the time domain has more then one // scheduled wake up then we don't need to do anything. if (can_advance_virtual_time_ && NumberOfScheduledWakeups() == 1u) RequestDoWork(); } +void AutoAdvancingVirtualTimeDomain::CancelWakeupAt(base::TimeTicks run_time) { + // We ignore this because RequestWakeupAt doesn't post a delayed task. +} + void AutoAdvancingVirtualTimeDomain::SetCanAdvanceVirtualTime( bool can_advance_virtual_time) { can_advance_virtual_time_ = can_advance_virtual_time;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.h b/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.h index 0ca186d..9cdd5d8 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.h
@@ -28,7 +28,8 @@ // TimeDomain implementation: base::Optional<base::TimeDelta> DelayTillNextTask(LazyNow* lazy_now) override; - void RequestWakeup(base::TimeTicks now, base::TimeDelta delay) override; + void RequestWakeupAt(base::TimeTicks now, base::TimeTicks run_time) override; + void CancelWakeupAt(base::TimeTicks run_time) override; const char* GetName() const override; // Controls whether or not virtual time is allowed to advance, when the
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc index d5fdb53..79cef1c 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc
@@ -979,5 +979,41 @@ base::TimeDelta::FromMilliseconds(300))); } +TEST_F(TaskQueueThrottlerTest, DisabledQueueThenEnabledQueue) { + std::vector<base::TimeTicks> run_times; + + scoped_refptr<TaskQueue> second_queue = + scheduler_->NewTimerTaskRunner(TaskQueue::QueueType::TEST); + + task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); + task_queue_throttler_->IncreaseThrottleRefCount(second_queue.get()); + + timer_queue_->PostDelayedTask(FROM_HERE, + base::Bind(&TestTask, &run_times, clock_.get()), + base::TimeDelta::FromMilliseconds(100)); + second_queue->PostDelayedTask(FROM_HERE, + base::Bind(&TestTask, &run_times, clock_.get()), + base::TimeDelta::FromMilliseconds(200)); + + std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = + timer_queue_->CreateQueueEnabledVoter(); + voter->SetQueueEnabled(false); + + clock_->Advance(base::TimeDelta::FromMilliseconds(250)); + + mock_task_runner_->RunUntilIdle(); + + EXPECT_THAT(run_times, ElementsAre(base::TimeTicks() + + base::TimeDelta::FromMilliseconds(1000))); + + voter->SetQueueEnabled(true); + mock_task_runner_->RunUntilIdle(); + + EXPECT_THAT( + run_times, + ElementsAre(base::TimeTicks() + base::TimeDelta::FromMilliseconds(1000), + base::TimeTicks() + base::TimeDelta::FromMilliseconds(2000))); +} + } // namespace scheduler } // namespace blink
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.cc b/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.cc index a859d09..348d034 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.cc
@@ -17,12 +17,16 @@ return "ThrottledTimeDomain"; } -void ThrottledTimeDomain::RequestWakeup(base::TimeTicks now, - base::TimeDelta delay) { +void ThrottledTimeDomain::RequestWakeupAt(base::TimeTicks now, + base::TimeTicks run_time) { // We assume the owner (i.e. TaskQueueThrottler) will manage wakeups on our // behalf. } +void ThrottledTimeDomain::CancelWakeupAt(base::TimeTicks run_time) { + // We ignore this because RequestWakeupAt is a NOP. +} + base::Optional<base::TimeDelta> ThrottledTimeDomain::DelayTillNextTask( LazyNow* lazy_now) { base::TimeTicks next_run_time;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.h b/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.h index c9d73fa..4faaf5b 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.h
@@ -21,7 +21,8 @@ // TimeDomain implementation: const char* GetName() const override; - void RequestWakeup(base::TimeTicks now, base::TimeDelta delay) override; + void RequestWakeupAt(base::TimeTicks now, base::TimeTicks run_time) override; + void CancelWakeupAt(base::TimeTicks run_time) override; base::Optional<base::TimeDelta> DelayTillNextTask(LazyNow* lazy_now) override; using TimeDomain::WakeupReadyDelayedQueues;
diff --git a/third_party/WebKit/public/platform/scheduler/base/task_queue.h b/third_party/WebKit/public/platform/scheduler/base/task_queue.h index 07335fb0..c57d237 100644 --- a/third_party/WebKit/public/platform/scheduler/base/task_queue.h +++ b/third_party/WebKit/public/platform/scheduler/base/task_queue.h
@@ -150,8 +150,9 @@ // NOTE: this must be called on the thread this TaskQueue was created by. virtual bool HasPendingImmediateWork() const = 0; - // Returns requested run time of next delayed task, which is not ready - // to run. If there are no such tasks, returns base::nullopt. + // Returns requested run time of next scheduled wakeup for a delayed task + // which is not ready to run. If there are no such tasks or the queue is + // disabled (by a QueueEnabledVoter) it returns base::nullopt. // NOTE: this must be called on the thread this TaskQueue was created by. virtual base::Optional<base::TimeTicks> GetNextScheduledWakeUp() = 0;
diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py index 5986c95..38cfb11 100755 --- a/tools/gn/bootstrap/bootstrap.py +++ b/tools/gn/bootstrap/bootstrap.py
@@ -154,6 +154,13 @@ os.remove(temp_path) +def write_build_date_header(root_gen_dir): + check_call([ + os.path.join(SRC_ROOT, 'build', 'write_build_date_header.py'), + os.path.join(root_gen_dir, 'base/generated_build_date.h'), + 'default', + ]) + def build_gn_with_ninja_manually(tempdir, options): root_gen_dir = os.path.join(tempdir, 'gen') mkdir_p(root_gen_dir) @@ -167,6 +174,8 @@ 'ENABLE_MEMORY_TASK_PROFILER': 'false' }) + write_build_date_header(root_gen_dir) + if is_mac: # //base/build_time.cc needs base/generated_build_date.h, # and this file is only included for Mac builds. @@ -374,6 +383,7 @@ 'base/at_exit.cc', 'base/base_paths.cc', 'base/base_switches.cc', + 'base/build_time.cc', 'base/callback_internal.cc', 'base/command_line.cc', 'base/debug/activity_tracker.cc', @@ -382,6 +392,7 @@ 'base/debug/stack_trace.cc', 'base/debug/task_annotator.cc', 'base/environment.cc', + 'base/feature_list.cc', 'base/files/file.cc', 'base/files/file_descriptor_watcher_posix.cc', 'base/files/file_enumerator.cc', @@ -413,6 +424,8 @@ 'base/message_loop/message_pump.cc', 'base/message_loop/message_pump_default.cc', 'base/metrics/bucket_ranges.cc', + 'base/metrics/field_trial.cc', + 'base/metrics/field_trial_param_associator.cc', 'base/metrics/histogram.cc', 'base/metrics/histogram_base.cc', 'base/metrics/histogram_samples.cc', @@ -428,12 +441,14 @@ 'base/pending_task.cc', 'base/pickle.cc', 'base/process/kill.cc', + 'base/process/memory.cc', 'base/process/process_handle.cc', 'base/process/process_iterator.cc', 'base/process/process_metrics.cc', 'base/profiler/scoped_profile.cc', 'base/profiler/scoped_tracker.cc', 'base/profiler/tracked_time.cc', + 'base/rand_util.cc', 'base/run_loop.cc', 'base/sequence_token.cc', 'base/sequence_checker_impl.cc', @@ -534,11 +549,13 @@ 'base/files/memory_mapped_file_posix.cc', 'base/message_loop/message_pump_libevent.cc', 'base/posix/file_descriptor_shuffle.cc', + 'base/posix/global_descriptors.cc', 'base/posix/safe_strerror.cc', 'base/process/kill_posix.cc', 'base/process/process_handle_posix.cc', 'base/process/process_metrics_posix.cc', 'base/process/process_posix.cc', + 'base/rand_util_posix.cc', 'base/strings/string16.cc', 'base/synchronization/condition_variable_posix.cc', 'base/synchronization/lock_impl_posix.cc', @@ -590,6 +607,7 @@ 'base/memory/shared_memory_posix.cc', 'base/nix/xdg_util.cc', 'base/process/internal_linux.cc', + 'base/process/memory_linux.cc', 'base/process/process_handle_linux.cc', 'base/process/process_iterator_linux.cc', 'base/process/process_linux.cc',
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index f7fd8937..242b9f62 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -91447,6 +91447,9 @@ <int value="1823" label="RtcpMuxPolicyNegotiate"/> <int value="1824" label="DOMClobberedVariableAccessed"/> <int value="1825" label="HTMLDocumentCreateProcessingInstruction"/> + <int value="1826" label="FetchResponseConstructionWithStream"/> + <int value="1827" label="LocationOrigin"/> + <int value="1828" label="DocumentOrigin"/> </enum> <enum name="FetchRequestMode" type="int">
diff --git a/ui/base/ime/dummy_text_input_client.cc b/ui/base/ime/dummy_text_input_client.cc index 60ae481..91c3b3b 100644 --- a/ui/base/ime/dummy_text_input_client.cc +++ b/ui/base/ime/dummy_text_input_client.cc
@@ -9,35 +9,28 @@ namespace ui { DummyTextInputClient::DummyTextInputClient() - : text_input_type_(TEXT_INPUT_TYPE_NONE), - insert_char_count_(0), - insert_text_count_(0), - set_composition_count_(0) {} + : text_input_type_(TEXT_INPUT_TYPE_NONE), insert_char_count_(0) {} DummyTextInputClient::DummyTextInputClient(TextInputType text_input_type) - : text_input_type_(text_input_type), - insert_char_count_(0), - insert_text_count_(0), - set_composition_count_(0) {} + : text_input_type_(text_input_type), insert_char_count_(0) {} DummyTextInputClient::~DummyTextInputClient() { } void DummyTextInputClient::SetCompositionText( const CompositionText& composition) { - ++set_composition_count_; - last_composition_.CopyFrom(composition); + composition_history_.push_back(composition); } void DummyTextInputClient::ConfirmCompositionText() { } void DummyTextInputClient::ClearCompositionText() { + SetCompositionText(CompositionText()); } void DummyTextInputClient::InsertText(const base::string16& text) { - ++insert_text_count_; - last_insert_text_ = text; + insert_text_history_.push_back(text); } void DummyTextInputClient::InsertChar(const KeyEvent& event) {
diff --git a/ui/base/ime/dummy_text_input_client.h b/ui/base/ime/dummy_text_input_client.h index 41c65e4..6b78aab3 100644 --- a/ui/base/ime/dummy_text_input_client.h +++ b/ui/base/ime/dummy_text_input_client.h
@@ -52,10 +52,12 @@ int insert_char_count() const { return insert_char_count_; } base::char16 last_insert_char() const { return last_insert_char_; } - int insert_text_count() const { return insert_text_count_; } - base::string16 last_insert_text() const { return last_insert_text_; } - int set_composition_count() const { return set_composition_count_; } - const CompositionText& last_composition() const { return last_composition_; } + const std::vector<base::string16>& insert_text_history() const { + return insert_text_history_; + } + const std::vector<CompositionText>& composition_history() const { + return composition_history_; + } TextInputType text_input_type_; @@ -63,11 +65,9 @@ private: int insert_char_count_; - int insert_text_count_; - int set_composition_count_; base::char16 last_insert_char_; - base::string16 last_insert_text_; - CompositionText last_composition_; + std::vector<base::string16> insert_text_history_; + std::vector<CompositionText> composition_history_; }; } // namespace ui
diff --git a/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js b/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js index 368e189..902d0b3 100644 --- a/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js +++ b/ui/file_manager/file_manager/foreground/js/thumbnail_loader.js
@@ -178,8 +178,7 @@ * @param {ThumbnailLoader.FillMode} fillMode Fill mode. * @param {ThumbnailLoader.OptimizationMode=} opt_optimizationMode Optimization * for downloading thumbnails. By default optimizations are disabled. - * @param {function(Image, Object)=} opt_onSuccess Success callback, - * accepts the image and the transform. + * @param {function(Image)=} opt_onSuccess Success callback, accepts the image. * @param {function()=} opt_onError Error callback. * @param {function()=} opt_onGeneric Callback for generic image used. * @param {number=} opt_autoFillThreshold Auto fill threshold. @@ -209,7 +208,7 @@ this.attachImage(assert(box), fillMode, opt_autoFillThreshold, opt_boxWidth, opt_boxHeight); if (opt_onSuccess) - opt_onSuccess(this.image_, this.transform_); + opt_onSuccess(this.image_); }.bind(this); this.image_.onerror = function() { if (opt_onError) @@ -242,7 +241,8 @@ maxHeight: ThumbnailLoader.THUMBNAIL_MAX_HEIGHT, cache: true, priority: this.priority_, - timestamp: modificationTime + timestamp: modificationTime, + orientation: this.transform_ }, function() {}, function() { @@ -264,8 +264,7 @@ * metadata, this fetches it from it. Otherwise, this tries to load it from * thumbnail loader. * Compared with ThumbnailLoader.load, this method does not provide a - * functionality to fit image to a box. This method is responsible for rotating - * and flipping a thumbnail. + * functionality to fit image to a box. * * @param {ThumbnailLoader.FillMode} fillMode Only FIT and OVER_FILL is * supported. This takes effect only when external thumbnail source is used. @@ -290,7 +289,8 @@ maxHeight: ThumbnailLoader.THUMBNAIL_MAX_HEIGHT, cache: true, priority: this.priority_, - timestamp: modificationTime + timestamp: modificationTime, + orientation: this.transform_ }; if (fillMode === ThumbnailLoader.FillMode.OVER_FILL) { @@ -314,89 +314,10 @@ reject(result); }, options); - }.bind(this)).then(function(result) { - if (!this.transform_) - return result; - else - return this.applyTransformToDataUrl_( - this.transform_, result.data, result.width, result.height); }.bind(this)); }; /** - * Renders an Image to canvas applying an image transformation. - * @param {Image} image Original image. Can be an unattached one to an elment. - * @param {number} width width of the original image - * @param {number} height height of the original image - * @param {{scaleX:number, scaleY:number, rotate90: number}} transform - * Transform. - * @param {!Object} canvas - */ -ThumbnailLoader.prototype.renderImageToCanvasWithTransform_ = function( - image, width, height, transform, canvas) { - var scaleX = transform.scaleX; - var scaleY = transform.scaleY; - var rotate90 = transform.rotate90; - - assert(scaleX === 1 || scaleX === -1); - assert(scaleY === 1 || scaleY === -1); - assert(rotate90 === 0 || rotate90 === 1); - - var context = canvas.getContext('2d'); - - canvas.width = rotate90 === 1 ? height : width; - canvas.height = rotate90 === 1 ? width : height; - - // Scale transformation should be applied before rotate transformation. - // i.e. When matrices for scale and rotate are A and B, transformation matrix - // should be BA. - - // Rotate 90 degree at center. - if (rotate90 === 1) { - context.translate(height, 0); - context.rotate(Math.PI / 2); - } - - // Flip X and Y. - context.translate(scaleX === -1 ? width : 0, scaleY === -1 ? height : 0); - context.scale(scaleX, scaleY); - context.drawImage(image, 0, 0); -}; - -/** - * Applies transform to data url. - * - * @param {{scaleX:number, scaleY:number, rotate90: number}} transform - * Transform. - * @param {string} dataUrl Data url. - * @param {number} width Width. - * @param {number} height Height. - * @return {!Promise<{data:string, width:number, height:number}>} A promise - * which is resolved with dataUrl and its width and height. - * @private - */ -ThumbnailLoader.prototype.applyTransformToDataUrl_ = function( - transform, dataUrl, width, height) { - var image = new Image(); - - return new Promise(function(resolve, reject) { - // Decode image for transformation. - image.onload = resolve; - image.onerror = reject; - image.src = dataUrl; - }).then(function() { - var canvas = document.createElement('canvas'); - this.renderImageToCanvasWithTransform_( - image, width, height, this.transform_, canvas); - return { - data: canvas.toDataURL('image/png'), - width: canvas.width, - height: canvas.height - }; - }.bind(this)); -} - -/** * Cancels loading the current image. */ ThumbnailLoader.prototype.cancel = function() { @@ -416,25 +337,17 @@ }; /** - * @return {boolean} True if the image is rotated 90 degrees left or right. - * @private - */ -ThumbnailLoader.prototype.isRotated_ = function() { - return this.transform_ && (this.transform_.rotate90 % 2 === 1); -}; - -/** - * @return {number} Image width (corrected for rotation). + * @return {number} Image width. */ ThumbnailLoader.prototype.getWidth = function() { - return this.isRotated_() ? this.image_.height : this.image_.width; + return this.image_.width; }; /** - * @return {number} Image height (corrected for rotation). + * @return {number} Image height. */ ThumbnailLoader.prototype.getHeight = function() { - return this.isRotated_() ? this.image_.width : this.image_.height; + return this.image_.height; }; /** @@ -460,26 +373,17 @@ this.metadata_.filesystem && this.metadata_.filesystem.modificationTime && this.metadata_.filesystem.modificationTime.getTime(); - var loaderOptions = { - maxWidth: ThumbnailLoader.THUMBNAIL_MAX_WIDTH, - maxHeight: ThumbnailLoader.THUMBNAIL_MAX_HEIGHT, - cache: true, - priority: this.priority_, - timestamp: modificationTime - }; - if (this.transform_) { - loaderOptions.orientation = this.transform_; - } - // Comsume the transform parameter to avoid duplicated transformation in - // getImage(). - // TODO(yamaguchi): remove this line when we move the image transformation - // logic out of this class. - this.transform_ = undefined; - this.taskId_ = ImageLoaderClient.loadToImage( this.thumbnailUrl_, this.image_, - loaderOptions, + { + maxWidth: ThumbnailLoader.THUMBNAIL_MAX_WIDTH, + maxHeight: ThumbnailLoader.THUMBNAIL_MAX_HEIGHT, + cache: true, + priority: this.priority_, + timestamp: modificationTime, + orientation: this.transform_ + }, function() {}, function() { this.image_.onerror(new Event('load-error')); @@ -528,14 +432,13 @@ } this.renderMedia_(); - util.applyTransform(box, this.transform_); var attachableMedia = this.loaderType_ === ThumbnailLoader.LoaderType.CANVAS ? this.canvas_ : this.image_; var autoFillThreshold = opt_autoFillThreshold || ThumbnailLoader.AUTO_FILL_THRESHOLD_DEFAULT_VALUE; ThumbnailLoader.centerImage_(box, attachableMedia, fillMode, - this.isRotated_(), autoFillThreshold, opt_boxWidth, opt_boxHeight); + autoFillThreshold, opt_boxWidth, opt_boxHeight); if (attachableMedia.parentNode !== box) { box.textContent = ''; @@ -553,17 +456,8 @@ */ ThumbnailLoader.prototype.getImage = function() { this.renderMedia_(); - if (this.loaderType_ === ThumbnailLoader.LoaderType.IMAGE) - // TODO(yamaguchi): Fix image orientation in case of detached image loaded - // in IMAGE mode. Either apply transformation here or return - // this.transform_ as well. - return this.image_; - if (this.transform_) { - this.renderImageToCanvasWithTransform_( - this.image_, this.image_.width, this.image_.height, - this.transform_, this.canvas_); - } - return this.canvas_; + return (this.loaderType_ === ThumbnailLoader.LoaderType.IMAGE) ? + this.image_ : this.canvas_; }; /** @@ -576,7 +470,6 @@ * @param {Element} box Containing element. * @param {Image|HTMLCanvasElement} img Element containing an image. * @param {ThumbnailLoader.FillMode} fillMode Fill mode. - * @param {boolean} rotate True if the image should be rotated 90 degrees. * @param {number} autoFillThreshold Threshold value which is used for fill mode * auto. * @param {number=} opt_boxWidth Container box's width. If not specified, the @@ -586,7 +479,7 @@ * @private */ ThumbnailLoader.centerImage_ = function( - box, img, fillMode, rotate, autoFillThreshold, opt_boxWidth, + box, img, fillMode, autoFillThreshold, opt_boxWidth, opt_boxHeight) { var imageWidth = img.width; var imageHeight = img.height; @@ -621,8 +514,8 @@ if (boxWidth && boxHeight) { // When we know the box size we can position the image correctly even // in a non-square box. - var fitScaleX = (rotate ? boxHeight : boxWidth) / imageWidth; - var fitScaleY = (rotate ? boxWidth : boxHeight) / imageHeight; + var fitScaleX = boxWidth / imageWidth; + var fitScaleY = boxHeight / imageHeight; var scale = fill ? Math.max(fitScaleX, fitScaleY) :
diff --git a/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js b/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js index e0c7f88..807fc8a 100644 --- a/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js +++ b/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
@@ -101,13 +101,15 @@ }), callback); } -function testLoadAsDataUrlFromExifThumbnailRotate(callback) { +function testLoadAsDataUrlFromExifThumbnailPropagatesTransform(callback) { ImageLoaderClient.getInstance = function() { return { load: function(url, callback, opt_option) { - // Assert that data url is passed. + // Assert that data url and transform info is passed. assertTrue(/^data:/i.test(url)); - callback({status: 'success', data: url, width: 64, height: 32}); + assertEquals(1, opt_option.orientation.rotate90); + callback({status: 'success', data: generateSampleImageDataUrl(32, 64), + width: 32, height: 64}); } }; }; @@ -131,8 +133,6 @@ .then(function(result) { assertEquals(32, result.width); assertEquals(64, result.height); - // For test image, transformed image should become equal to the - // following generated sample image. assertEquals(generateSampleImageDataUrl(32, 64), result.data); }), callback); }