From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- dom/base/test/345339_iframe.html | 27 + dom/base/test/Ahem.ttf | Bin 0 -> 12480 bytes dom/base/test/accesscontrol.resource | 7 + dom/base/test/accesscontrol.resource^headers^ | 5 + dom/base/test/audio.ogg | Bin 0 -> 14293 bytes dom/base/test/audioEndedDuringPlaying.webm | Bin 0 -> 53840 bytes dom/base/test/badContentType.eventsource | 5 + dom/base/test/badContentType.eventsource^headers^ | 1 + dom/base/test/badHTTPResponseCode.eventsource | 5 + .../test/badHTTPResponseCode.eventsource^headers^ | 2 + dom/base/test/badMessageEvent.eventsource | 4 + dom/base/test/badMessageEvent.eventsource^headers^ | 1 + dom/base/test/badMessageEvent2.eventsource | 5 + .../test/badMessageEvent2.eventsource^headers^ | 1 + dom/base/test/browser.ini | 28 + dom/base/test/browser_bug1011748.js | 31 + dom/base/test/browser_bug1058164.js | 109 + dom/base/test/browser_bug1307747.js | 32 + dom/base/test/browser_bug593387.js | 70 + dom/base/test/browser_bug902350.js | 66 + .../browser_messagemanager_loadprocessscript.js | 114 + .../browser_messagemanager_targetframeloader.js | 31 + dom/base/test/browser_messagemanager_unload.js | 102 + dom/base/test/browser_pagehide_on_tab_close.js | 17 + dom/base/test/browser_state_notifications.js | 189 + dom/base/test/browser_use_counters.js | 305 ++ dom/base/test/bug282547.sjs | 9 + dom/base/test/bug298064-subframe.html | 24 + dom/base/test/bug313646.txt | 1 + dom/base/test/bug382113_object.html | 6 + dom/base/test/bug403852_fileOpener.js | 17 + dom/base/test/bug419132.html | 22 + dom/base/test/bug426308-redirect.sjs | 4 + dom/base/test/bug435425.sjs | 24 + dom/base/test/bug435425_redirect.sjs | 6 + dom/base/test/bug444322.js | 0 dom/base/test/bug444322.txt | 0 dom/base/test/bug444546.sjs | 20 + dom/base/test/bug455629-helper.svg | 6 + dom/base/test/bug457746.sjs | 11 + dom/base/test/bug461735-post-redirect.js | 3 + dom/base/test/bug461735-redirect1.sjs | 4 + dom/base/test/bug461735-redirect2.sjs | 4 + dom/base/test/bug466080.sjs | 17 + dom/base/test/bug466409-empty.css | 0 dom/base/test/bug466409-page.html | 12 + dom/base/test/bug475156.sjs | 27 + dom/base/test/bug482935.sjs | 12 + dom/base/test/bug540854.sjs | 19 + dom/base/test/bug578096LoadChromeScript.js | 16 + dom/base/test/bug638112-response.txt | Bin 0 -> 247 bytes dom/base/test/bug638112.sjs | 26 + dom/base/test/bug696301-script-1.js | 3 + dom/base/test/bug696301-script-1.js^headers^ | 1 + dom/base/test/bug696301-script-2.js | 3 + dom/base/test/bug704320.sjs | 299 ++ dom/base/test/bug704320_counter.sjs | 94 + dom/base/test/bug819051.sjs | 7 + dom/base/test/chrome.ini | 27 + dom/base/test/chrome/blockNoPlugins.xml | 7 + dom/base/test/chrome/blockPluginHard.xml | 11 + dom/base/test/chrome/bug418986-1.js | 73 + dom/base/test/chrome/bug421622-referer.sjs | 8 + dom/base/test/chrome/bug884693.sjs | 8 + dom/base/test/chrome/chrome.ini | 76 + dom/base/test/chrome/cpows_child.js | 382 ++ dom/base/test/chrome/cpows_parent.xul | 493 +++ dom/base/test/chrome/file_bug1139964.xul | 62 + dom/base/test/chrome/file_bug1209621.xul | 79 + dom/base/test/chrome/file_bug549682.xul | 226 ++ dom/base/test/chrome/file_bug616841.xul | 63 + dom/base/test/chrome/file_bug816340.xul | 70 + dom/base/test/chrome/file_bug990812-1.xul | 64 + dom/base/test/chrome/file_bug990812-2.xul | 59 + dom/base/test/chrome/file_bug990812-3.xul | 71 + dom/base/test/chrome/file_bug990812-4.xul | 68 + dom/base/test/chrome/file_bug990812-5.xul | 77 + dom/base/test/chrome/file_bug990812.xul | 58 + dom/base/test/chrome/fileconstructor_file.png | Bin 0 -> 95 bytes dom/base/test/chrome/frame_bug814638.xul | 15 + .../test/chrome/frame_registerElement_content.html | 5 + dom/base/test/chrome/host_bug814638.xul | 9 + dom/base/test/chrome/nochrome_bug765993.html | 3 + dom/base/test/chrome/nochrome_bug765993.js | 4 + .../test/chrome/nochrome_bug765993.js^headers^ | 1 + dom/base/test/chrome/registerElement_ep.js | 8 + dom/base/test/chrome/test_bug1063837.xul | 37 + .../test_bug1098074_throw_from_ReceiveMessage.xul | 50 + dom/base/test/chrome/test_bug1139964.xul | 33 + dom/base/test/chrome/test_bug120684.xul | 80 + dom/base/test/chrome/test_bug1209621.xul | 34 + dom/base/test/chrome/test_bug1339722.html | 67 + dom/base/test/chrome/test_bug206691.xul | 33 + dom/base/test/chrome/test_bug289714.xul | 33 + dom/base/test/chrome/test_bug339494.xul | 64 + dom/base/test/chrome/test_bug357450.xul | 56 + dom/base/test/chrome/test_bug380418.html | 37 + dom/base/test/chrome/test_bug380418.html^headers^ | 4 + dom/base/test/chrome/test_bug383430.html | 38 + dom/base/test/chrome/test_bug418986-1.xul | 26 + dom/base/test/chrome/test_bug421622.xul | 35 + dom/base/test/chrome/test_bug429785.xul | 61 + dom/base/test/chrome/test_bug430050.xul | 50 + dom/base/test/chrome/test_bug467123.xul | 35 + dom/base/test/chrome/test_bug549682.xul | 33 + dom/base/test/chrome/test_bug571390.xul | 42 + dom/base/test/chrome/test_bug616841.xul | 31 + dom/base/test/chrome/test_bug635835.xul | 37 + dom/base/test/chrome/test_bug682305.html | 175 + dom/base/test/chrome/test_bug683852.xul | 69 + dom/base/test/chrome/test_bug752226-3.xul | 28 + dom/base/test/chrome/test_bug752226-4.xul | 28 + dom/base/test/chrome/test_bug765993.html | 61 + dom/base/test/chrome/test_bug780199.xul | 51 + dom/base/test/chrome/test_bug780529.xul | 40 + dom/base/test/chrome/test_bug800386.xul | 68 + dom/base/test/chrome/test_bug814638.xul | 64 + dom/base/test/chrome/test_bug816340.xul | 31 + dom/base/test/chrome/test_bug884693.xul | 67 + dom/base/test/chrome/test_bug914381.html | 48 + dom/base/test/chrome/test_bug990812.xul | 43 + dom/base/test/chrome/test_cpows.xul | 33 + dom/base/test/chrome/test_domparsing.xul | 144 + dom/base/test/chrome/test_fileconstructor.xul | 72 + .../test/chrome/test_fileconstructor_tempfile.xul | 93 + dom/base/test/chrome/test_groupedSHistory.xul | 32 + .../test/chrome/test_nsITextInputProcessor.xul | 30 + .../chrome/test_range_getClientRectsAndTexts.html | 60 + .../test/chrome/test_registerElement_content.xul | 55 + dom/base/test/chrome/test_registerElement_ep.xul | 44 + dom/base/test/chrome/test_swapFrameLoaders.xul | 25 + dom/base/test/chrome/test_title.xul | 30 + dom/base/test/chrome/test_windowroot.xul | 19 + dom/base/test/chrome/title_window.xul | 198 + dom/base/test/chrome/window_groupedSHistory.xul | 343 ++ .../test/chrome/window_nsITextInputProcessor.xul | 4027 ++++++++++++++++++++ dom/base/test/chrome/window_swapFrameLoaders.xul | 258 ++ dom/base/test/copypaste.js | 412 ++ dom/base/test/create_file_objects.js | 10 + dom/base/test/delayedServerEvents.sjs | 42 + dom/base/test/empty.html | 0 dom/base/test/eventsource.resource | 22 + dom/base/test/eventsource.resource^headers^ | 3 + dom/base/test/eventsource_redirect.resource | 2 + .../test/eventsource_redirect.resource^headers^ | 3 + dom/base/test/eventsource_redirect_to.resource | 4 + .../test/eventsource_redirect_to.resource^headers^ | 3 + dom/base/test/fake_plugin.tst | 1 + dom/base/test/file_audioLoop.html | 2 + dom/base/test/file_base_xbl.xml | 9 + dom/base/test/file_blobURL_expiring.html | 4 + dom/base/test/file_bug1008126_worker.js | 176 + dom/base/test/file_bug1011748_OK.sjs | 4 + dom/base/test/file_bug1011748_redirect.sjs | 5 + dom/base/test/file_bug1091883_frame.html | 13 + dom/base/test/file_bug1091883_subframe.html | 6 + dom/base/test/file_bug1091883_target.html | 13 + dom/base/test/file_bug1198095.js | 26 + dom/base/test/file_bug1250148.sjs | 60 + dom/base/test/file_bug1263696_frame_fail.html | 12 + dom/base/test/file_bug1263696_frame_pass.html | 13 + dom/base/test/file_bug1268962.sjs | 90 + dom/base/test/file_bug1274806.html | 33 + dom/base/test/file_bug28293.sjs | 5 + dom/base/test/file_bug326337.xml | 1 + dom/base/test/file_bug326337_inner.html | 40 + dom/base/test/file_bug326337_outer.html | 15 + dom/base/test/file_bug357450.js | 64 + dom/base/test/file_bug416317.xhtml | 1476 +++++++ dom/base/test/file_bug426646-1.html | 36 + dom/base/test/file_bug426646-2.html | 64 + dom/base/test/file_bug428847-1.xhtml | 4 + dom/base/test/file_bug428847-2.xhtml | 4 + dom/base/test/file_bug498897.css | 1 + dom/base/test/file_bug498897.html | 23 + dom/base/test/file_bug498897.html^headers^ | 1 + dom/base/test/file_bug503473-frame.sjs | 23 + dom/base/test/file_bug503481.sjs | 43 + dom/base/test/file_bug503481b_inner.html | 62 + dom/base/test/file_bug541937.html | 7 + dom/base/test/file_bug541937.xhtml | 12 + dom/base/test/file_bug557892.html | 25 + dom/base/test/file_bug562137.txt | 1 + dom/base/test/file_bug590812-ref.xhtml | 3 + dom/base/test/file_bug590812.xml | 1 + dom/base/test/file_bug590870.html | 16 + dom/base/test/file_bug601803a.html | 22 + dom/base/test/file_bug601803b.html | 11 + dom/base/test/file_bug604660-1.xml | 3 + dom/base/test/file_bug604660-2.xsl | 19 + dom/base/test/file_bug604660-3.js | 1 + dom/base/test/file_bug604660-4.js | 1 + dom/base/test/file_bug604660-5.xml | 2 + dom/base/test/file_bug604660-6.xsl | 9 + dom/base/test/file_bug622088.sjs | 6 + dom/base/test/file_bug622088_inner.html | 38 + dom/base/test/file_bug675121.sjs | 15 + dom/base/test/file_bug687859-16.js | Bin 0 -> 64 bytes dom/base/test/file_bug687859-16.js^headers^ | 1 + dom/base/test/file_bug687859-bom.js | 1 + dom/base/test/file_bug687859-bom.js^headers^ | 1 + dom/base/test/file_bug687859-charset.js | 1 + dom/base/test/file_bug687859-http.js | 1 + dom/base/test/file_bug687859-http.js^headers^ | 1 + dom/base/test/file_bug687859-inherit.js | 1 + dom/base/test/file_bug692434.xml | 1 + dom/base/test/file_bug704320_preload_common.js | 34 + dom/base/test/file_bug704320_preload_noreuse.html | 33 + dom/base/test/file_bug704320_preload_reuse.html | 31 + dom/base/test/file_bug704320_redirect.html | 10 + dom/base/test/file_bug707142_baseline.json | 1 + dom/base/test/file_bug707142_bom.json | 1 + dom/base/test/file_bug707142_utf-16.json | Bin 0 -> 32 bytes dom/base/test/file_bug708620-2.html | 4 + dom/base/test/file_bug708620.html | 7 + dom/base/test/file_bug769117.html | 16 + dom/base/test/file_bug782342.txt | 1 + dom/base/test/file_bug787778.sjs | 8 + dom/base/test/file_bug804395.jar | Bin 0 -> 164 bytes dom/base/test/file_bug869432.eventsource | 4 + dom/base/test/file_bug869432.eventsource^headers^ | 3 + dom/base/test/file_bug902350.html | 19 + dom/base/test/file_bug902350_frame.html | 14 + dom/base/test/file_bug907892.html | 12 + dom/base/test/file_bug945152.jar | Bin 0 -> 92275 bytes dom/base/test/file_bug945152_worker.js | 103 + dom/base/test/file_change_policy_redirect.html | 10 + dom/base/test/file_empty.html | 1 + dom/base/test/file_explicit_user_agent.sjs | 8 + dom/base/test/file_general_document.html | 10 + dom/base/test/file_htmlserializer_1.html | 44 + dom/base/test/file_htmlserializer_1_bodyonly.html | 43 + dom/base/test/file_htmlserializer_1_format.html | 57 + dom/base/test/file_htmlserializer_1_linebreak.html | 47 + dom/base/test/file_htmlserializer_1_links.html | 47 + .../test/file_htmlserializer_1_nested_body.html | 47 + dom/base/test/file_htmlserializer_1_no_body.html | 5 + dom/base/test/file_htmlserializer_1_noflag.html | 47 + .../test/file_htmlserializer_1_noformatpre.html | 51 + dom/base/test/file_htmlserializer_1_raw.html | 45 + .../test/file_htmlserializer_1_sibling_body.html | 47 + ...le_htmlserializer_1_sibling_body_only_body.html | 43 + dom/base/test/file_htmlserializer_1_wrap.html | 52 + dom/base/test/file_htmlserializer_2.html | 22 + dom/base/test/file_htmlserializer_2_basic.html | 24 + dom/base/test/file_htmlserializer_2_enthtml.html | 47 + dom/base/test/file_htmlserializer_2_entw3c.html | 47 + dom/base/test/file_htmlserializer_2_latin1.html | 34 + dom/base/test/file_htmlserializer_ipv6.html | 5 + dom/base/test/file_htmlserializer_ipv6_out.html | 6 + dom/base/test/file_lock_orientation.html | 14 + dom/base/test/file_messagemanager_unload.html | 6 + dom/base/test/file_mozfiledataurl_audio.ogg | Bin 0 -> 135861 bytes dom/base/test/file_mozfiledataurl_doc.html | 6 + dom/base/test/file_mozfiledataurl_img.jpg | Bin 0 -> 2711 bytes dom/base/test/file_mozfiledataurl_inner.html | 76 + dom/base/test/file_mozfiledataurl_text.txt | 1 + .../test/file_navigator_resolve_identity_xrays.xul | 30 + dom/base/test/file_nonascii_blob_url.html | 24 + dom/base/test/file_pluginAudio.html | 21 + dom/base/test/file_pluginAudioNonAutoStart.html | 25 + dom/base/test/file_receiveMessage.html | 13 + dom/base/test/file_record_orientation.html | 16 + dom/base/test/file_restrictedEventSource.sjs | 48 + dom/base/test/file_setname.html | 8 + dom/base/test/file_simplecontentpolicy.js | 73 + dom/base/test/file_timer_flood.html | 19 + dom/base/test/file_use_counter_outer.html | 17 + .../test/file_use_counter_svg_currentScale.svg | 17 + .../test/file_use_counter_svg_fill_pattern.svg | 15 + .../file_use_counter_svg_fill_pattern_data.svg | 15 + ...ile_use_counter_svg_fill_pattern_definition.svg | 14 + .../file_use_counter_svg_fill_pattern_internal.svg | 23 + .../test/file_use_counter_svg_getElementById.svg | 22 + dom/base/test/file_webaudioLoop.html | 44 + dom/base/test/file_webaudioLoop2.html | 15 + dom/base/test/file_websocket_basic_wsh.py | 29 + dom/base/test/file_websocket_hello_wsh.py | 10 + dom/base/test/file_websocket_http_resource.txt | 1 + ...le_websocket_permessage_deflate_disabled_wsh.py | 17 + ...file_websocket_permessage_deflate_params_wsh.py | 23 + ...le_websocket_permessage_deflate_rejected_wsh.py | 23 + .../test/file_websocket_permessage_deflate_wsh.py | 22 + dom/base/test/file_websocket_wsh.py | 159 + dom/base/test/file_x-frame-options_main.html | 44 + dom/base/test/file_x-frame-options_page.sjs | 60 + dom/base/test/file_xhtmlserializer_1.xhtml | 60 + .../test/file_xhtmlserializer_1_bodyonly.xhtml | 56 + dom/base/test/file_xhtmlserializer_1_format.xhtml | 71 + .../test/file_xhtmlserializer_1_linebreak.xhtml | 65 + dom/base/test/file_xhtmlserializer_1_links.xhtml | 65 + .../test/file_xhtmlserializer_1_nested_body.xhtml | 65 + dom/base/test/file_xhtmlserializer_1_no_body.xhtml | 10 + dom/base/test/file_xhtmlserializer_1_noflag.xhtml | 65 + .../test/file_xhtmlserializer_1_noformatpre.xhtml | 69 + dom/base/test/file_xhtmlserializer_1_raw.xhtml | 60 + .../test/file_xhtmlserializer_1_sibling_body.xhtml | 65 + ..._xhtmlserializer_1_sibling_body_only_body.xhtml | 56 + dom/base/test/file_xhtmlserializer_1_wrap.xhtml | 70 + dom/base/test/file_xhtmlserializer_2.xhtml | 30 + dom/base/test/file_xhtmlserializer_2_basic.xhtml | 31 + dom/base/test/file_xhtmlserializer_2_enthtml.xhtml | 55 + dom/base/test/file_xhtmlserializer_2_entw3c.xhtml | 55 + dom/base/test/file_xhtmlserializer_2_latin1.xhtml | 41 + dom/base/test/file_youtube_flash_embed.html | 65 + dom/base/test/fileapi_chromeScript.js | 29 + dom/base/test/fileutils.js | 254 ++ dom/base/test/forRemoval.resource | 24 + dom/base/test/forRemoval.resource^headers^ | 3 + dom/base/test/formReset.html | 15 + dom/base/test/gtest/TestNativeXMLHttpRequest.cpp | 58 + dom/base/test/gtest/TestParserDialogOptions.cpp | 138 + dom/base/test/gtest/TestPlainTextSerializer.cpp | 231 ++ dom/base/test/gtest/moz.build | 19 + dom/base/test/iframe_bug962251.html | 26 + dom/base/test/iframe_bug976673.html | 25 + dom/base/test/iframe_main_bug1022229.html | 40 + dom/base/test/iframe_postMessage_solidus.html | 15 + dom/base/test/iframe_postMessages.html | 10 + dom/base/test/iframe_sandbox_bug1022229.html | 13 + dom/base/test/iframe_webSocket_sandbox.html | 65 + dom/base/test/img_referrer_testserver.sjs | 298 ++ dom/base/test/intersectionobserver_iframe.html | 23 + dom/base/test/intersectionobserver_window.html | 34 + dom/base/test/invalid_accesscontrol.resource | 7 + .../test/invalid_accesscontrol.resource^headers^ | 4 + dom/base/test/jsmodules/chrome.ini | 51 + .../test/jsmodules/iframe_extractIntroType.html | 14 + dom/base/test/jsmodules/mochitest.ini | 5 + dom/base/test/jsmodules/module_badImport.js | 1 + dom/base/test/jsmodules/module_badSyntax.js | 3 + dom/base/test/jsmodules/module_cyclic1.js | 7 + dom/base/test/jsmodules/module_cyclic2.js | 7 + dom/base/test/jsmodules/module_cyclic3.js | 7 + dom/base/test/jsmodules/module_extractIntroType.js | 5 + dom/base/test/jsmodules/module_large1.js | 78 + dom/base/test/jsmodules/module_large2.js | 78 + dom/base/test/jsmodules/module_large3.js | 78 + dom/base/test/jsmodules/module_missingImport.js | 1 + dom/base/test/jsmodules/module_multiImports.js | 4 + .../test/jsmodules/module_multiLargeImports.js | 4 + dom/base/test/jsmodules/module_setRan.js | 2 + dom/base/test/jsmodules/module_simple1.js | 1 + dom/base/test/jsmodules/module_simple2.js | 1 + dom/base/test/jsmodules/module_simple3.js | 1 + dom/base/test/jsmodules/module_simpleExport.js | 1 + dom/base/test/jsmodules/module_simpleImport.js | 2 + dom/base/test/jsmodules/module_testSyntax.js | 3 + dom/base/test/jsmodules/moz.build | 13 + dom/base/test/jsmodules/script_simple2.js | 1 + .../test/jsmodules/test_asyncInlineModules.html | 36 + dom/base/test/jsmodules/test_cyclicImport.html | 18 + dom/base/test/jsmodules/test_importIntroType.html | 22 + dom/base/test/jsmodules/test_importNotFound.html | 27 + .../test/jsmodules/test_importResolveFailed.html | 21 + .../jsmodules/test_importedModuleMemoization.html | 30 + .../test/jsmodules/test_linkErrorInCommon1.html | 32 + .../test/jsmodules/test_linkErrorInCommon2.html | 32 + dom/base/test/jsmodules/test_moduleNotFound.html | 24 + .../test/jsmodules/test_moduleParsedAsModule.html | 23 + .../test/jsmodules/test_moduleScriptsNotRun.html | 19 + dom/base/test/jsmodules/test_moduleScriptsRun.html | 19 + .../test/jsmodules/test_multiAsyncImports.html | 30 + .../test/jsmodules/test_multiModuleImports.html | 28 + .../jsmodules/test_multiModuleLargeImports.html | 28 + .../test/jsmodules/test_multiTopLevelImports.html | 30 + .../jsmodules/test_multiTopLevelLargeImports.html | 30 + .../test/jsmodules/test_scriptInsertedModule.html | 20 + .../test/jsmodules/test_scriptModuleOrder.html | 30 + .../jsmodules/test_scriptNotParsedAsModule.html | 23 + dom/base/test/jsmodules/test_simpleImport.html | 16 + dom/base/test/jsmodules/test_syntaxError.html | 23 + dom/base/test/jsmodules/test_syntaxErrorAsync.html | 23 + .../test/jsmodules/test_syntaxErrorInline.html | 27 + .../jsmodules/test_syntaxErrorInlineAsync.html | 27 + .../test/jsmodules/test_topLevelIntroType.html | 21 + .../jsmodules/test_toplevelModuleMemoization.html | 30 + .../jsmodules/test_typeAttrCaseInsensitive.html | 19 + dom/base/test/mochitest.ini | 820 ++++ dom/base/test/moz.build | 37 + dom/base/test/mozbrowser_api_utils.js | 72 + dom/base/test/mutationobserver_dialog.html | 62 + dom/base/test/noaudio.webm | Bin 0 -> 105755 bytes dom/base/test/orientationcommon.js | 21 + dom/base/test/referrerHelper.js | 286 ++ dom/base/test/referrer_change_server.sjs | 139 + dom/base/test/referrer_helper.js | 102 + dom/base/test/referrer_testserver.sjs | 391 ++ dom/base/test/reftest/mixed-bmp-png.ico | Bin 0 -> 17542 bytes dom/base/test/reftest/reftest-stylo.list | 2 + dom/base/test/reftest/reftest.list | 1 + dom/base/test/reftest/test_bug920877-ref.html | 20 + dom/base/test/reftest/test_bug920877.html | 38 + dom/base/test/script-1_bug597345.sjs | 16 + dom/base/test/script-2_bug597345.js | 1 + dom/base/test/script_bug1238440.js | 31 + dom/base/test/script_bug602838.sjs | 37 + dom/base/test/script_postmessages_fileList.js | 25 + dom/base/test/send_gzip_content.sjs | 48 + dom/base/test/somedatas.resource | 16 + dom/base/test/somedatas.resource^headers^ | 3 + dom/base/test/test_EventSource_redirects.html | 53 + dom/base/test/test_Image_constructor.html | 32 + .../test/test_NodeIterator_basics_filters.xhtml | 178 + dom/base/test/test_NodeIterator_mutations_1.xhtml | 204 + dom/base/test/test_NodeIterator_mutations_2.html | 112 + dom/base/test/test_NodeIterator_mutations_3.html | 160 + dom/base/test/test_anchor_area_referrer.html | 125 + .../test/test_anchor_area_referrer_changing.html | 66 + .../test/test_anchor_area_referrer_invalid.html | 74 + dom/base/test/test_anchor_area_referrer_rel.html | 50 + dom/base/test/test_anonymousContent_api.html | 56 + .../test_anonymousContent_append_after_reflow.html | 40 + dom/base/test/test_anonymousContent_canvas.html | 57 + dom/base/test/test_anonymousContent_insert.html | 45 + .../test_anonymousContent_manipulate_content.html | 74 + dom/base/test/test_anonymousContent_style_csp.html | 28 + .../test_anonymousContent_style_csp.html^headers^ | 1 + dom/base/test/test_anonymousContent_xul_window.xul | 30 + dom/base/test/test_applet_alternate_content.html | 42 + dom/base/test/test_appname_override.html | 26 + dom/base/test/test_async_setTimeout_stack.html | 60 + ...test_async_setTimeout_stack_across_globals.html | 60 + dom/base/test/test_audioNotification.html | 71 + .../test_audioNotificationSilent_audioFile.html | 73 + .../test_audioNotificationSilent_webAudio.html | 103 + .../test_audioNotificationStopOnNavigation.html | 71 + dom/base/test/test_audioNotificationStream.html | 71 + .../test/test_audioNotificationWithEarlyPlay.html | 73 + dom/base/test/test_audioWindowUtils.html | 107 + dom/base/test/test_base.xhtml | 55 + dom/base/test/test_blobURL_expiring.html | 47 + dom/base/test/test_blob_fragment_and_query.html | 59 + dom/base/test/test_blobconstructor.html | 246 ++ dom/base/test/test_bug1008126.html | 62 + dom/base/test/test_bug1016960.html | 30 + dom/base/test/test_bug1022229.html | 47 + dom/base/test/test_bug1025933.html | 37 + dom/base/test/test_bug1037687.html | 63 + dom/base/test/test_bug1043106.html | 44 + dom/base/test/test_bug1057176.html | 32 + dom/base/test/test_bug1060938.html | 44 + dom/base/test/test_bug1064481.html | 24 + dom/base/test/test_bug1070015.html | 53 + dom/base/test/test_bug1075702.html | 77 + dom/base/test/test_bug1081686.html | 71 + dom/base/test/test_bug1091883.html | 89 + dom/base/test/test_bug1101364.html | 73 + dom/base/test/test_bug1118689.html | 57 + dom/base/test/test_bug1126851.html | 44 + dom/base/test/test_bug116083.html | 103 + dom/base/test/test_bug1163743.html | 44 + dom/base/test/test_bug1165501.html | 51 + dom/base/test/test_bug1187157.html | 23 + dom/base/test/test_bug1198095.html | 71 + dom/base/test/test_bug1238440.html | 88 + dom/base/test/test_bug1250148.html | 52 + dom/base/test/test_bug1259588.html | 13 + dom/base/test/test_bug1263696.html | 53 + dom/base/test/test_bug1268962.html | 105 + dom/base/test/test_bug1274806.html | 31 + dom/base/test/test_bug1281963.html | 68 + dom/base/test/test_bug1295852.html | 23 + dom/base/test/test_bug1307730.html | 44 + dom/base/test/test_bug1308069.html | 87 + dom/base/test/test_bug1314032.html | 38 + dom/base/test/test_bug166235.html | 160 + dom/base/test/test_bug199959.html | 39 + dom/base/test/test_bug218236.html | 139 + dom/base/test/test_bug218277.html | 28 + dom/base/test/test_bug238409.html | 45 + dom/base/test/test_bug254337.html | 42 + dom/base/test/test_bug270145.xhtml | 53 + dom/base/test/test_bug276037-1.html | 105 + dom/base/test/test_bug276037-2.xhtml | 106 + dom/base/test/test_bug282547.html | 104 + dom/base/test/test_bug28293.html | 86 + dom/base/test/test_bug28293.xhtml | 87 + dom/base/test/test_bug298064.html | 32 + dom/base/test/test_bug300992.html | 45 + dom/base/test/test_bug311681.xml | 103 + dom/base/test/test_bug313646.html | 62 + dom/base/test/test_bug320799.html | 69 + dom/base/test/test_bug322317.html | 33 + dom/base/test/test_bug326337.html | 35 + dom/base/test/test_bug330925.xhtml | 74 + dom/base/test/test_bug331959.html | 151 + dom/base/test/test_bug333064.html | 59 + dom/base/test/test_bug333198.html | 84 + dom/base/test/test_bug333673.html | 30 + dom/base/test/test_bug337631.html | 99 + dom/base/test/test_bug338541.xhtml | 49 + dom/base/test/test_bug338583.html | 666 ++++ dom/base/test/test_bug338679.html | 78 + dom/base/test/test_bug339494.html | 61 + dom/base/test/test_bug339494.xhtml | 60 + dom/base/test/test_bug340571.html | 28 + dom/base/test/test_bug343596.html | 51 + dom/base/test/test_bug345339.html | 85 + dom/base/test/test_bug346485.html | 77 + dom/base/test/test_bug352728.html | 139 + dom/base/test/test_bug352728.xhtml | 187 + dom/base/test/test_bug353334.html | 67 + dom/base/test/test_bug355026.html | 29 + dom/base/test/test_bug357450.html | 41 + dom/base/test/test_bug357450.xhtml | 40 + dom/base/test/test_bug357450_svg.xhtml | 47 + dom/base/test/test_bug357509.html | 36 + dom/base/test/test_bug358660.html | 37 + dom/base/test/test_bug362391.xhtml | 75 + dom/base/test/test_bug364092.xhtml | 46 + dom/base/test/test_bug364413.xhtml | 48 + dom/base/test/test_bug366944.html | 49 + dom/base/test/test_bug366946.html | 79 + dom/base/test/test_bug367164.html | 47 + dom/base/test/test_bug368972.html | 120 + dom/base/test/test_bug371576-2.html | 32 + dom/base/test/test_bug371576-3.html | 29 + dom/base/test/test_bug371576-4.html | 21 + dom/base/test/test_bug371576-5.html | 36 + dom/base/test/test_bug372086.html | 96 + dom/base/test/test_bug372964-2.html | 58 + dom/base/test/test_bug372964.html | 144 + dom/base/test/test_bug373181.xhtml | 17 + dom/base/test/test_bug375314.html | 187 + dom/base/test/test_bug378969.html | 47 + dom/base/test/test_bug380418.html | 34 + dom/base/test/test_bug380418.html^headers^ | 4 + dom/base/test/test_bug382113.html | 35 + dom/base/test/test_bug382871.html | 46 + dom/base/test/test_bug384003.xhtml | 84 + dom/base/test/test_bug390219.html | 38 + dom/base/test/test_bug390735.html | 28 + dom/base/test/test_bug392318.html | 44 + dom/base/test/test_bug392511.html | 53 + dom/base/test/test_bug393968.html | 36 + dom/base/test/test_bug395915.html | 43 + dom/base/test/test_bug397234.html | 37 + dom/base/test/test_bug398243.html | 56 + dom/base/test/test_bug401662.html | 48 + dom/base/test/test_bug402150.html | 24 + dom/base/test/test_bug402150.html^headers^ | 1 + dom/base/test/test_bug403841.html | 29 + dom/base/test/test_bug403852.html | 65 + dom/base/test/test_bug403868.xml | 85 + dom/base/test/test_bug405182.html | 47 + dom/base/test/test_bug409380.html | 378 ++ dom/base/test/test_bug410229.html | 108 + dom/base/test/test_bug413974.html | 35 + dom/base/test/test_bug414190.html | 85 + dom/base/test/test_bug415860.html | 240 ++ dom/base/test/test_bug416317-1.html | 32 + dom/base/test/test_bug416317-2.html | 32 + dom/base/test/test_bug416383.html | 43 + dom/base/test/test_bug417255.html | 60 + dom/base/test/test_bug417384.html | 52 + dom/base/test/test_bug418214.html | 101 + dom/base/test/test_bug418986-1.html | 24 + dom/base/test/test_bug419132.html | 48 + dom/base/test/test_bug419527.xhtml | 74 + dom/base/test/test_bug420609.xhtml | 34 + dom/base/test/test_bug420700.html | 35 + dom/base/test/test_bug421602.html | 53 + dom/base/test/test_bug422403-1.html | 204 + dom/base/test/test_bug422403-2.xhtml | 296 ++ dom/base/test/test_bug422537.html | 55 + dom/base/test/test_bug424212.html | 35 + dom/base/test/test_bug424359-1.html | 213 ++ dom/base/test/test_bug424359-2.html | 320 ++ dom/base/test/test_bug426308.html | 42 + dom/base/test/test_bug426646.html | 41 + dom/base/test/test_bug428847.html | 33 + dom/base/test/test_bug429157.html | 54 + dom/base/test/test_bug431082.html | 51 + dom/base/test/test_bug431701.html | 120 + dom/base/test/test_bug431833.html | 51 + dom/base/test/test_bug433533.html | 300 ++ dom/base/test/test_bug433662.html | 31 + dom/base/test/test_bug435425.html | 432 +++ dom/base/test/test_bug444030.xhtml | 50 + dom/base/test/test_bug444322.html | 2588 +++++++++++++ dom/base/test/test_bug444546.html | 160 + dom/base/test/test_bug444722.html | 65 + dom/base/test/test_bug448993.html | 46 + dom/base/test/test_bug450160.html | 142 + dom/base/test/test_bug451376.html | 86 + dom/base/test/test_bug453521.html | 36 + dom/base/test/test_bug453736.html | 58 + dom/base/test/test_bug454325.html | 147 + dom/base/test/test_bug454326.html | 135 + dom/base/test/test_bug455472.html | 41 + dom/base/test/test_bug455629.html | 63 + dom/base/test/test_bug456262.html | 39 + dom/base/test/test_bug457746.html | 38 + dom/base/test/test_bug459424.html | 31 + dom/base/test/test_bug461555.html | 46 + dom/base/test/test_bug461735.html | 50 + dom/base/test/test_bug465767.html | 42 + dom/base/test/test_bug466080.html | 125 + dom/base/test/test_bug466409.html | 39 + dom/base/test/test_bug466751.xhtml | 40 + dom/base/test/test_bug469020.html | 128 + dom/base/test/test_bug469304.html | 187 + dom/base/test/test_bug473162-1.html | 30 + dom/base/test/test_bug473162-2.html | 33 + dom/base/test/test_bug475156.html | 299 ++ dom/base/test/test_bug482935.html | 68 + dom/base/test/test_bug484396.html | 48 + dom/base/test/test_bug493881.html | 31 + dom/base/test/test_bug493881.js | 72 + dom/base/test/test_bug498240.html | 254 ++ dom/base/test/test_bug498433.html | 104 + dom/base/test/test_bug498897.html | 95 + dom/base/test/test_bug499656.html | 57 + dom/base/test/test_bug499656.xhtml | 57 + dom/base/test/test_bug500937.html | 54 + dom/base/test/test_bug503473.html | 37 + dom/base/test/test_bug503481.html | 69 + dom/base/test/test_bug503481b.html | 22 + dom/base/test/test_bug505783.html | 33 + dom/base/test/test_bug51034.html | 42 + dom/base/test/test_bug513194.html | 28 + dom/base/test/test_bug5141.html | 30 + dom/base/test/test_bug514487.html | 49 + dom/base/test/test_bug515401.html | 141 + dom/base/test/test_bug518104.html | 37 + dom/base/test/test_bug527896.html | 61 + dom/base/test/test_bug540854.html | 47 + dom/base/test/test_bug541937.html | 119 + dom/base/test/test_bug544642.html | 44 + dom/base/test/test_bug545644.html | 42 + dom/base/test/test_bug545644.xhtml | 49 + dom/base/test/test_bug548463.html | 83 + dom/base/test/test_bug553896.xhtml | 69 + dom/base/test/test_bug557892.html | 34 + dom/base/test/test_bug558726.html | 40 + dom/base/test/test_bug559526.html | 93 + dom/base/test/test_bug560780.html | 99 + dom/base/test/test_bug562137.html | 32 + dom/base/test/test_bug562169-1.html | 44 + dom/base/test/test_bug562169-2.html | 29 + dom/base/test/test_bug562652.html | 54 + dom/base/test/test_bug564047.html | 31 + dom/base/test/test_bug564863.xhtml | 359 ++ dom/base/test/test_bug567350.html | 24 + dom/base/test/test_bug574596.html | 83 + dom/base/test/test_bug578096.html | 49 + dom/base/test/test_bug585978.html | 38 + dom/base/test/test_bug587931.html | 102 + dom/base/test/test_bug588990.html | 336 ++ dom/base/test/test_bug590812.html | 36 + dom/base/test/test_bug590870.html | 37 + dom/base/test/test_bug592366.html | 59 + dom/base/test/test_bug592829.html | 39 + dom/base/test/test_bug597345.html | 27 + dom/base/test/test_bug599295.html | 47 + dom/base/test/test_bug599588.html | 39 + dom/base/test/test_bug601803.html | 35 + dom/base/test/test_bug602838.html | 68 + dom/base/test/test_bug604592.html | 37 + dom/base/test/test_bug604660.html | 77 + dom/base/test/test_bug605982.html | 34 + dom/base/test/test_bug606729.html | 52 + dom/base/test/test_bug614058.html | 29 + dom/base/test/test_bug614583.html | 261 ++ dom/base/test/test_bug622088.html | 96 + dom/base/test/test_bug622117.html | 43 + dom/base/test/test_bug622246.html | 43 + dom/base/test/test_bug625722.html | 39 + dom/base/test/test_bug626262.html | 54 + dom/base/test/test_bug628938.html | 239 ++ dom/base/test/test_bug631615.html | 39 + dom/base/test/test_bug638112.html | 46 + dom/base/test/test_bug647518.html | 45 + dom/base/test/test_bug650001.html | 31 + dom/base/test/test_bug650776.html | 105 + dom/base/test/test_bug650784.html | 37 + dom/base/test/test_bug656283.html | 59 + dom/base/test/test_bug664916.html | 39 + dom/base/test/test_bug666604.html | 142 + dom/base/test/test_bug675121.html | 45 + dom/base/test/test_bug675166.html | 57 + dom/base/test/test_bug682463.html | 156 + dom/base/test/test_bug682554.html | 30 + dom/base/test/test_bug682592.html | 178 + dom/base/test/test_bug684671.html | 45 + dom/base/test/test_bug685798.html | 45 + dom/base/test/test_bug686449.xhtml | 79 + dom/base/test/test_bug687859.html | 33 + dom/base/test/test_bug690056.html | 54 + dom/base/test/test_bug692434.html | 44 + dom/base/test/test_bug693615.html | 41 + dom/base/test/test_bug693875.html | 34 + dom/base/test/test_bug694754.xhtml | 70 + dom/base/test/test_bug696301-1.html | 78 + dom/base/test/test_bug696301-2.html | 80 + dom/base/test/test_bug698381.html | 56 + dom/base/test/test_bug698384.html | 62 + dom/base/test/test_bug704063.html | 56 + dom/base/test/test_bug704320.html | 74 + dom/base/test/test_bug704320_policyset.html | 104 + dom/base/test/test_bug704320_policyset2.html | 45 + dom/base/test/test_bug704320_preload.html | 145 + dom/base/test/test_bug707142.html | 51 + dom/base/test/test_bug708620.html | 41 + dom/base/test/test_bug711047.html | 16 + dom/base/test/test_bug711180.html | 25 + dom/base/test/test_bug715041.xul | 815 ++++ dom/base/test/test_bug715041_removal.xul | 841 ++++ dom/base/test/test_bug719533.html | 27 + dom/base/test/test_bug726364.html | 48 + dom/base/test/test_bug737087.html | 37 + dom/base/test/test_bug737565.html | 64 + dom/base/test/test_bug737612.html | 29 + dom/base/test/test_bug738108.html | 39 + dom/base/test/test_bug744830.html | 132 + dom/base/test/test_bug749367.html | 29 + dom/base/test/test_bug750096.html | 44 + dom/base/test/test_bug753278.html | 46 + dom/base/test/test_bug761120.html | 41 + dom/base/test/test_bug769117.html | 55 + dom/base/test/test_bug782342.html | 85 + dom/base/test/test_bug787778.html | 25 + dom/base/test/test_bug789315.html | 49 + dom/base/test/test_bug789856.html | 42 + dom/base/test/test_bug793311.html | 35 + dom/base/test/test_bug804395.html | 74 + dom/base/test/test_bug809003.html | 47 + dom/base/test/test_bug810494.html | 48 + dom/base/test/test_bug811701.html | 48 + dom/base/test/test_bug811701.xhtml | 52 + dom/base/test/test_bug813919.html | 46 + dom/base/test/test_bug814576.html | 41 + dom/base/test/test_bug819051.html | 59 + dom/base/test/test_bug820909.html | 87 + dom/base/test/test_bug840098.html | 36 + dom/base/test/test_bug864595.html | 34 + dom/base/test/test_bug868999.html | 39 + dom/base/test/test_bug869000.html | 37 + dom/base/test/test_bug869002.html | 32 + dom/base/test/test_bug869006.html | 37 + dom/base/test/test_bug876282.html | 45 + dom/base/test/test_bug890580.html | 58 + dom/base/test/test_bug891952.html | 61 + dom/base/test/test_bug894874.html | 45 + dom/base/test/test_bug895239.html | 123 + dom/base/test/test_bug895974.html | 69 + dom/base/test/test_bug902847.html | 58 + dom/base/test/test_bug907892.html | 49 + dom/base/test/test_bug913761.html | 40 + dom/base/test/test_bug922681.html | 113 + dom/base/test/test_bug927196.html | 56 + dom/base/test/test_bug945152.html | 58 + dom/base/test/test_bug962251.html | 258 ++ dom/base/test/test_bug976673.html | 107 + dom/base/test/test_bug982153.html | 29 + dom/base/test/test_bug999456.html | 32 + dom/base/test/test_caretPositionFromPoint.html | 123 + dom/base/test/test_change_policy.html | 129 + dom/base/test/test_classList.html | 426 +++ dom/base/test/test_clearTimeoutIntervalNoArg.html | 14 + dom/base/test/test_constructor-assignment.html | 61 + dom/base/test/test_constructor.html | 61 + dom/base/test/test_copyimage.html | 94 + dom/base/test/test_copypaste.html | 119 + dom/base/test/test_copypaste.xhtml | 108 + dom/base/test/test_copypaste.xul | 64 + dom/base/test/test_createHTMLDocument.html | 52 + .../test/test_declare_stylesheet_obsolete.html | 94 + dom/base/test/test_dialogArguments.html | 31 + dom/base/test/test_document.all_iteration.html | 11 + dom/base/test/test_document.all_unqualified.html | 35 + dom/base/test/test_document_constructor.html | 31 + .../test/test_document_importNode_document.html | 32 + dom/base/test/test_document_register.html | 27 + dom/base/test/test_domcursor.html | 140 + dom/base/test/test_domparser_null_char.html | 27 + dom/base/test/test_domparsing.html | 84 + dom/base/test/test_domrequest.html | 229 ++ dom/base/test/test_domrequesthelper.xul | 552 +++ dom/base/test/test_domwindowutils.html | 85 + dom/base/test/test_e4x_for_each.html | 55 + dom/base/test/test_element.matches.html | 28 + dom/base/test/test_elementTraversal.html | 111 + dom/base/test/test_element_closest.html | 84 + .../test/test_encodeToStringWithMaxLength.html | 64 + dom/base/test/test_error.html | 44 + dom/base/test/test_explicit_user_agent.html | 65 + dom/base/test/test_file_from_blob.html | 111 + dom/base/test/test_file_negative_date.html | 39 + dom/base/test/test_fileapi.html | 479 +++ dom/base/test/test_fileapi_slice.html | 167 + .../test_getAttribute_after_createAttribute.html | 15 + dom/base/test/test_getElementById.html | 58 + dom/base/test/test_getTranslationNodes.html | 227 ++ dom/base/test/test_getTranslationNodes_limit.html | 33 + dom/base/test/test_gsp-qualified.html | 38 + dom/base/test/test_gsp-quirks.html | 27 + dom/base/test/test_gsp-standards.html | 27 + dom/base/test/test_history_document_open.html | 37 + dom/base/test/test_history_state_null.html | 25 + dom/base/test/test_html_colors_quirks.html | 711 ++++ dom/base/test/test_html_colors_standards.html | 712 ++++ dom/base/test/test_htmlcopyencoder.html | 196 + dom/base/test/test_htmlcopyencoder.xhtml | 180 + dom/base/test/test_iframe_referrer.html | 107 + dom/base/test/test_iframe_referrer_changing.html | 50 + dom/base/test/test_iframe_referrer_invalid.html | 81 + dom/base/test/test_img_referrer.html | 189 + dom/base/test/test_innersize_scrollport.html | 48 + .../test/test_integer_attr_with_leading_zero.html | 64 + dom/base/test/test_intersectionobservers.html | 1214 ++++++ dom/base/test/test_ipc_messagemanager_blob.html | 143 + dom/base/test/test_link_prefetch.html | 220 ++ dom/base/test/test_link_stylesheet.html | 221 ++ dom/base/test/test_messagePort.html | 115 + dom/base/test/test_messagemanager_principal.html | 95 + .../test/test_messagemanager_send_principal.html | 131 + dom/base/test/test_messagemanager_targetchain.html | 126 + dom/base/test/test_meta_viewport0.html | 81 + dom/base/test/test_meta_viewport1.html | 77 + dom/base/test/test_meta_viewport2.html | 77 + dom/base/test/test_meta_viewport3.html | 79 + dom/base/test/test_meta_viewport4.html | 78 + dom/base/test/test_meta_viewport5.html | 54 + dom/base/test/test_meta_viewport6.html | 83 + dom/base/test/test_meta_viewport7.html | 114 + dom/base/test/test_mozMatchesSelector.html | 14 + dom/base/test/test_mozbrowser_apis_allowed.html | 46 + dom/base/test/test_mozbrowser_apis_blocked.html | 38 + dom/base/test/test_mozfiledataurl.html | 225 ++ dom/base/test/test_mutationobserver_anonymous.html | 265 ++ dom/base/test/test_mutationobservers.html | 935 +++++ dom/base/test/test_named_frames.html | 38 + dom/base/test/test_navigatorPrefOverride.html | 54 + .../test/test_navigator_hardwareConcurrency.html | 24 + dom/base/test/test_navigator_language.html | 212 ++ .../test/test_navigator_resolve_identity_xrays.xul | 42 + dom/base/test/test_noAudioNotification.html | 77 + .../test_noAudioNotificationOnMutedElement.html | 129 + ...noAudioNotificationOnMutedOrVolume0Element.html | 162 + .../test_noAudioNotificationOnVolume0Element.html | 129 + dom/base/test/test_noWebAudioNotification.html | 62 + dom/base/test/test_nodelist_holes.html | 42 + dom/base/test/test_nonascii_blob_url.html | 30 + dom/base/test/test_openDialogChromeOnly.html | 38 + dom/base/test/test_open_null_features.html | 54 + dom/base/test/test_orientation_alternate.html | 27 + dom/base/test/test_orientation_frame.html | 37 + dom/base/test/test_orientation_frame_lock.html | 46 + .../test/test_orientation_sandbox_no_lock.html | 36 + dom/base/test/test_pluginAudioNotification.html | 121 + dom/base/test/test_pluginMutedBeforePlay.html | 76 + dom/base/test/test_plugin_freezing.html | 68 + .../test/test_postMessage_originAttributes.html | 60 + dom/base/test/test_postMessage_solidus.html | 93 + dom/base/test/test_postMessages.html | 654 ++++ ..._processing_instruction_update_stylesheet.xhtml | 46 + .../test/test_progress_events_for_gzip_data.html | 44 + dom/base/test/test_range_bounds.html | 288 ++ dom/base/test/test_reentrant_flush.html | 61 + dom/base/test/test_referrer_redirect.html | 72 + dom/base/test/test_root_iframe.html | 27 + dom/base/test/test_sandboxed_blob_uri.html | 24 + dom/base/test/test_screen_orientation.html | 86 + .../test_script_loader_crossorigin_data_url.html | 38 + .../test_sendQueryContentAndSelectionSetEvent.html | 250 ++ .../test_setInterval_uncatchable_exception.html | 55 + dom/base/test/test_setTimeoutWith0.html | 22 + dom/base/test/test_settimeout_extra_arguments.html | 12 + dom/base/test/test_settimeout_inner.html | 53 + dom/base/test/test_setting_opener.html | 125 + dom/base/test/test_simplecontentpolicy.html | 149 + dom/base/test/test_text_wholeText.html | 232 ++ .../test/test_textnode_normalize_in_selection.html | 201 + .../test/test_textnode_split_in_selection.html | 221 ++ dom/base/test/test_timer_flood.html | 116 + dom/base/test/test_title.html | 54 + dom/base/test/test_treewalker_nextsibling.xml | 97 + dom/base/test/test_user_select.html | 341 ++ dom/base/test/test_viewport_scroll.html | 89 + .../test/test_viewsource_forbidden_in_object.html | 74 + dom/base/test/test_w3element_traversal.html | 148 + dom/base/test/test_w3element_traversal.xhtml | 149 + dom/base/test/test_w3element_traversal_svg.html | 107 + ...est_warning_for_blocked_cross_site_request.html | 92 + dom/base/test/test_webSocket_sandbox.html | 34 + dom/base/test/test_webaudioNotification.html | 81 + .../test_webaudioNotificationStopOnNavigation.html | 71 + dom/base/test/test_websocket1.html | 42 + dom/base/test/test_websocket2.html | 44 + dom/base/test/test_websocket3.html | 44 + dom/base/test/test_websocket4.html | 42 + dom/base/test/test_websocket5.html | 40 + dom/base/test/test_websocket_basic.html | 255 ++ dom/base/test/test_websocket_frame.html | 166 + dom/base/test/test_websocket_hello.html | 49 + .../test/test_websocket_permessage_deflate.html | 110 + dom/base/test/test_window_constructor.html | 36 + dom/base/test/test_window_cross_origin_props.html | 101 + .../test/test_window_define_nonconfigurable.html | 49 + dom/base/test/test_window_define_symbol.html | 29 + dom/base/test/test_window_element_enumeration.html | 70 + dom/base/test/test_window_enumeration.html | 33 + dom/base/test/test_window_extensible.html | 46 + dom/base/test/test_window_indexing.html | 139 + .../test/test_window_named_frame_enumeration.html | 96 + dom/base/test/test_window_orientation.html | 33 + dom/base/test/test_window_proto.html | 17 + dom/base/test/test_writable-replaceable.html | 49 + dom/base/test/test_x-frame-options.html | 156 + dom/base/test/test_xbl_userdata.xhtml | 56 + dom/base/test/test_youtube_flash_embed.html | 36 + dom/base/test/unit/1_original.xml | 3 + dom/base/test/unit/1_result.xml | 3 + dom/base/test/unit/2_original.xml | 15 + dom/base/test/unit/2_result_1.xml | 13 + dom/base/test/unit/2_result_2.xml | 14 + dom/base/test/unit/2_result_3.xml | 23 + dom/base/test/unit/2_result_4.xml | 21 + dom/base/test/unit/3_original.xml | 4 + dom/base/test/unit/3_result.xml | 7 + dom/base/test/unit/3_result_2.xml | 7 + dom/base/test/unit/4_original.xml | 32 + dom/base/test/unit/4_result_1.xml | 32 + dom/base/test/unit/4_result_2.xml | 7 + dom/base/test/unit/4_result_3.xml | 4 + dom/base/test/unit/4_result_4.xml | 4 + dom/base/test/unit/4_result_5.xml | 46 + dom/base/test/unit/4_result_6.xml | 48 + dom/base/test/unit/empty_document.xml | 3 + dom/base/test/unit/head_utilities.js | 40 + dom/base/test/unit/head_xml.js | 156 + dom/base/test/unit/isequalnode_data.xml | 150 + dom/base/test/unit/nodelist_data_1.xml | 58 + dom/base/test/unit/nodelist_data_2.xul | 45 + dom/base/test/unit/test_bloburi.js | 33 + dom/base/test/unit/test_bug553888.js | 60 + dom/base/test/unit/test_bug737966.js | 20 + dom/base/test/unit/test_cancelPrefetch.js | 134 + dom/base/test/unit/test_chromeutils_base64.js | 105 + dom/base/test/unit/test_delete_range.xml | 125 + dom/base/test/unit/test_error_codes.js | 68 + dom/base/test/unit/test_isequalnode.js | 435 +++ dom/base/test/unit/test_nodelist.js | 394 ++ dom/base/test/unit/test_normalize.js | 109 + dom/base/test/unit/test_range.js | 465 +++ dom/base/test/unit/test_thirdpartyutil.js | 96 + dom/base/test/unit/test_treewalker.js | 26 + dom/base/test/unit/test_xhr_document.js | 42 + dom/base/test/unit/test_xhr_origin_attributes.js | 50 + dom/base/test/unit/test_xhr_standalone.js | 21 + dom/base/test/unit/test_xml_parser.js | 48 + dom/base/test/unit/test_xml_serializer.js | 374 ++ dom/base/test/unit/test_xmlserializer.js | 112 + dom/base/test/unit/xpcshell.ini | 55 + dom/base/test/unit_ipc/test_bug553888_wrap.js | 4 + dom/base/test/unit_ipc/test_xhr_document_ipc.js | 3 + dom/base/test/unit_ipc/xpcshell.ini | 10 + dom/base/test/variable_style_sheet.sjs | 19 + dom/base/test/viewport_helpers.js | 3 + dom/base/test/w3element_traversal.svg | 70 + dom/base/test/websocket_helpers.js | 66 + .../test/websocket_hybi/file_binary-frames_wsh.py | 18 + .../file_check-binary-messages_wsh.py | 21 + dom/base/test/websocket_hybi/mochitest.ini | 13 + .../websocket_hybi/test_receive-arraybuffer.html | 97 + .../test/websocket_hybi/test_receive-blob.html | 110 + .../test/websocket_hybi/test_send-arraybuffer.html | 82 + dom/base/test/websocket_hybi/test_send-blob.html | 72 + dom/base/test/websocket_tests.js | 1244 ++++++ dom/base/test/wholeTexty-helper.xml | 6 + dom/base/test/worker_postMessages.js | 33 + 973 files changed, 75480 insertions(+) create mode 100644 dom/base/test/345339_iframe.html create mode 100644 dom/base/test/Ahem.ttf create mode 100644 dom/base/test/accesscontrol.resource create mode 100644 dom/base/test/accesscontrol.resource^headers^ create mode 100644 dom/base/test/audio.ogg create mode 100644 dom/base/test/audioEndedDuringPlaying.webm create mode 100644 dom/base/test/badContentType.eventsource create mode 100644 dom/base/test/badContentType.eventsource^headers^ create mode 100644 dom/base/test/badHTTPResponseCode.eventsource create mode 100644 dom/base/test/badHTTPResponseCode.eventsource^headers^ create mode 100644 dom/base/test/badMessageEvent.eventsource create mode 100644 dom/base/test/badMessageEvent.eventsource^headers^ create mode 100644 dom/base/test/badMessageEvent2.eventsource create mode 100644 dom/base/test/badMessageEvent2.eventsource^headers^ create mode 100644 dom/base/test/browser.ini create mode 100644 dom/base/test/browser_bug1011748.js create mode 100644 dom/base/test/browser_bug1058164.js create mode 100644 dom/base/test/browser_bug1307747.js create mode 100644 dom/base/test/browser_bug593387.js create mode 100644 dom/base/test/browser_bug902350.js create mode 100644 dom/base/test/browser_messagemanager_loadprocessscript.js create mode 100644 dom/base/test/browser_messagemanager_targetframeloader.js create mode 100644 dom/base/test/browser_messagemanager_unload.js create mode 100644 dom/base/test/browser_pagehide_on_tab_close.js create mode 100644 dom/base/test/browser_state_notifications.js create mode 100644 dom/base/test/browser_use_counters.js create mode 100644 dom/base/test/bug282547.sjs create mode 100644 dom/base/test/bug298064-subframe.html create mode 100644 dom/base/test/bug313646.txt create mode 100644 dom/base/test/bug382113_object.html create mode 100644 dom/base/test/bug403852_fileOpener.js create mode 100644 dom/base/test/bug419132.html create mode 100644 dom/base/test/bug426308-redirect.sjs create mode 100644 dom/base/test/bug435425.sjs create mode 100644 dom/base/test/bug435425_redirect.sjs create mode 100644 dom/base/test/bug444322.js create mode 100644 dom/base/test/bug444322.txt create mode 100644 dom/base/test/bug444546.sjs create mode 100644 dom/base/test/bug455629-helper.svg create mode 100644 dom/base/test/bug457746.sjs create mode 100644 dom/base/test/bug461735-post-redirect.js create mode 100644 dom/base/test/bug461735-redirect1.sjs create mode 100644 dom/base/test/bug461735-redirect2.sjs create mode 100644 dom/base/test/bug466080.sjs create mode 100644 dom/base/test/bug466409-empty.css create mode 100644 dom/base/test/bug466409-page.html create mode 100644 dom/base/test/bug475156.sjs create mode 100644 dom/base/test/bug482935.sjs create mode 100644 dom/base/test/bug540854.sjs create mode 100644 dom/base/test/bug578096LoadChromeScript.js create mode 100644 dom/base/test/bug638112-response.txt create mode 100644 dom/base/test/bug638112.sjs create mode 100644 dom/base/test/bug696301-script-1.js create mode 100644 dom/base/test/bug696301-script-1.js^headers^ create mode 100644 dom/base/test/bug696301-script-2.js create mode 100644 dom/base/test/bug704320.sjs create mode 100644 dom/base/test/bug704320_counter.sjs create mode 100644 dom/base/test/bug819051.sjs create mode 100644 dom/base/test/chrome.ini create mode 100644 dom/base/test/chrome/blockNoPlugins.xml create mode 100644 dom/base/test/chrome/blockPluginHard.xml create mode 100644 dom/base/test/chrome/bug418986-1.js create mode 100644 dom/base/test/chrome/bug421622-referer.sjs create mode 100644 dom/base/test/chrome/bug884693.sjs create mode 100644 dom/base/test/chrome/chrome.ini create mode 100644 dom/base/test/chrome/cpows_child.js create mode 100644 dom/base/test/chrome/cpows_parent.xul create mode 100644 dom/base/test/chrome/file_bug1139964.xul create mode 100644 dom/base/test/chrome/file_bug1209621.xul create mode 100644 dom/base/test/chrome/file_bug549682.xul create mode 100644 dom/base/test/chrome/file_bug616841.xul create mode 100644 dom/base/test/chrome/file_bug816340.xul create mode 100644 dom/base/test/chrome/file_bug990812-1.xul create mode 100644 dom/base/test/chrome/file_bug990812-2.xul create mode 100644 dom/base/test/chrome/file_bug990812-3.xul create mode 100644 dom/base/test/chrome/file_bug990812-4.xul create mode 100644 dom/base/test/chrome/file_bug990812-5.xul create mode 100644 dom/base/test/chrome/file_bug990812.xul create mode 100644 dom/base/test/chrome/fileconstructor_file.png create mode 100644 dom/base/test/chrome/frame_bug814638.xul create mode 100644 dom/base/test/chrome/frame_registerElement_content.html create mode 100644 dom/base/test/chrome/host_bug814638.xul create mode 100644 dom/base/test/chrome/nochrome_bug765993.html create mode 100644 dom/base/test/chrome/nochrome_bug765993.js create mode 100644 dom/base/test/chrome/nochrome_bug765993.js^headers^ create mode 100644 dom/base/test/chrome/registerElement_ep.js create mode 100644 dom/base/test/chrome/test_bug1063837.xul create mode 100644 dom/base/test/chrome/test_bug1098074_throw_from_ReceiveMessage.xul create mode 100644 dom/base/test/chrome/test_bug1139964.xul create mode 100644 dom/base/test/chrome/test_bug120684.xul create mode 100644 dom/base/test/chrome/test_bug1209621.xul create mode 100644 dom/base/test/chrome/test_bug1339722.html create mode 100644 dom/base/test/chrome/test_bug206691.xul create mode 100644 dom/base/test/chrome/test_bug289714.xul create mode 100644 dom/base/test/chrome/test_bug339494.xul create mode 100644 dom/base/test/chrome/test_bug357450.xul create mode 100644 dom/base/test/chrome/test_bug380418.html create mode 100644 dom/base/test/chrome/test_bug380418.html^headers^ create mode 100644 dom/base/test/chrome/test_bug383430.html create mode 100644 dom/base/test/chrome/test_bug418986-1.xul create mode 100644 dom/base/test/chrome/test_bug421622.xul create mode 100644 dom/base/test/chrome/test_bug429785.xul create mode 100644 dom/base/test/chrome/test_bug430050.xul create mode 100644 dom/base/test/chrome/test_bug467123.xul create mode 100644 dom/base/test/chrome/test_bug549682.xul create mode 100644 dom/base/test/chrome/test_bug571390.xul create mode 100644 dom/base/test/chrome/test_bug616841.xul create mode 100644 dom/base/test/chrome/test_bug635835.xul create mode 100644 dom/base/test/chrome/test_bug682305.html create mode 100644 dom/base/test/chrome/test_bug683852.xul create mode 100644 dom/base/test/chrome/test_bug752226-3.xul create mode 100644 dom/base/test/chrome/test_bug752226-4.xul create mode 100644 dom/base/test/chrome/test_bug765993.html create mode 100644 dom/base/test/chrome/test_bug780199.xul create mode 100644 dom/base/test/chrome/test_bug780529.xul create mode 100644 dom/base/test/chrome/test_bug800386.xul create mode 100644 dom/base/test/chrome/test_bug814638.xul create mode 100644 dom/base/test/chrome/test_bug816340.xul create mode 100644 dom/base/test/chrome/test_bug884693.xul create mode 100644 dom/base/test/chrome/test_bug914381.html create mode 100644 dom/base/test/chrome/test_bug990812.xul create mode 100644 dom/base/test/chrome/test_cpows.xul create mode 100644 dom/base/test/chrome/test_domparsing.xul create mode 100644 dom/base/test/chrome/test_fileconstructor.xul create mode 100644 dom/base/test/chrome/test_fileconstructor_tempfile.xul create mode 100644 dom/base/test/chrome/test_groupedSHistory.xul create mode 100644 dom/base/test/chrome/test_nsITextInputProcessor.xul create mode 100644 dom/base/test/chrome/test_range_getClientRectsAndTexts.html create mode 100644 dom/base/test/chrome/test_registerElement_content.xul create mode 100644 dom/base/test/chrome/test_registerElement_ep.xul create mode 100644 dom/base/test/chrome/test_swapFrameLoaders.xul create mode 100644 dom/base/test/chrome/test_title.xul create mode 100644 dom/base/test/chrome/test_windowroot.xul create mode 100644 dom/base/test/chrome/title_window.xul create mode 100644 dom/base/test/chrome/window_groupedSHistory.xul create mode 100644 dom/base/test/chrome/window_nsITextInputProcessor.xul create mode 100644 dom/base/test/chrome/window_swapFrameLoaders.xul create mode 100644 dom/base/test/copypaste.js create mode 100644 dom/base/test/create_file_objects.js create mode 100644 dom/base/test/delayedServerEvents.sjs create mode 100644 dom/base/test/empty.html create mode 100644 dom/base/test/eventsource.resource create mode 100644 dom/base/test/eventsource.resource^headers^ create mode 100644 dom/base/test/eventsource_redirect.resource create mode 100644 dom/base/test/eventsource_redirect.resource^headers^ create mode 100644 dom/base/test/eventsource_redirect_to.resource create mode 100644 dom/base/test/eventsource_redirect_to.resource^headers^ create mode 100644 dom/base/test/fake_plugin.tst create mode 100644 dom/base/test/file_audioLoop.html create mode 100644 dom/base/test/file_base_xbl.xml create mode 100644 dom/base/test/file_blobURL_expiring.html create mode 100644 dom/base/test/file_bug1008126_worker.js create mode 100644 dom/base/test/file_bug1011748_OK.sjs create mode 100644 dom/base/test/file_bug1011748_redirect.sjs create mode 100644 dom/base/test/file_bug1091883_frame.html create mode 100644 dom/base/test/file_bug1091883_subframe.html create mode 100644 dom/base/test/file_bug1091883_target.html create mode 100644 dom/base/test/file_bug1198095.js create mode 100644 dom/base/test/file_bug1250148.sjs create mode 100644 dom/base/test/file_bug1263696_frame_fail.html create mode 100644 dom/base/test/file_bug1263696_frame_pass.html create mode 100644 dom/base/test/file_bug1268962.sjs create mode 100644 dom/base/test/file_bug1274806.html create mode 100644 dom/base/test/file_bug28293.sjs create mode 100644 dom/base/test/file_bug326337.xml create mode 100644 dom/base/test/file_bug326337_inner.html create mode 100644 dom/base/test/file_bug326337_outer.html create mode 100644 dom/base/test/file_bug357450.js create mode 100644 dom/base/test/file_bug416317.xhtml create mode 100644 dom/base/test/file_bug426646-1.html create mode 100644 dom/base/test/file_bug426646-2.html create mode 100644 dom/base/test/file_bug428847-1.xhtml create mode 100644 dom/base/test/file_bug428847-2.xhtml create mode 100644 dom/base/test/file_bug498897.css create mode 100644 dom/base/test/file_bug498897.html create mode 100644 dom/base/test/file_bug498897.html^headers^ create mode 100644 dom/base/test/file_bug503473-frame.sjs create mode 100644 dom/base/test/file_bug503481.sjs create mode 100644 dom/base/test/file_bug503481b_inner.html create mode 100644 dom/base/test/file_bug541937.html create mode 100644 dom/base/test/file_bug541937.xhtml create mode 100644 dom/base/test/file_bug557892.html create mode 100644 dom/base/test/file_bug562137.txt create mode 100644 dom/base/test/file_bug590812-ref.xhtml create mode 100644 dom/base/test/file_bug590812.xml create mode 100644 dom/base/test/file_bug590870.html create mode 100644 dom/base/test/file_bug601803a.html create mode 100644 dom/base/test/file_bug601803b.html create mode 100644 dom/base/test/file_bug604660-1.xml create mode 100644 dom/base/test/file_bug604660-2.xsl create mode 100644 dom/base/test/file_bug604660-3.js create mode 100644 dom/base/test/file_bug604660-4.js create mode 100644 dom/base/test/file_bug604660-5.xml create mode 100644 dom/base/test/file_bug604660-6.xsl create mode 100644 dom/base/test/file_bug622088.sjs create mode 100644 dom/base/test/file_bug622088_inner.html create mode 100644 dom/base/test/file_bug675121.sjs create mode 100644 dom/base/test/file_bug687859-16.js create mode 100644 dom/base/test/file_bug687859-16.js^headers^ create mode 100644 dom/base/test/file_bug687859-bom.js create mode 100644 dom/base/test/file_bug687859-bom.js^headers^ create mode 100644 dom/base/test/file_bug687859-charset.js create mode 100644 dom/base/test/file_bug687859-http.js create mode 100644 dom/base/test/file_bug687859-http.js^headers^ create mode 100644 dom/base/test/file_bug687859-inherit.js create mode 100644 dom/base/test/file_bug692434.xml create mode 100644 dom/base/test/file_bug704320_preload_common.js create mode 100644 dom/base/test/file_bug704320_preload_noreuse.html create mode 100644 dom/base/test/file_bug704320_preload_reuse.html create mode 100644 dom/base/test/file_bug704320_redirect.html create mode 100644 dom/base/test/file_bug707142_baseline.json create mode 100644 dom/base/test/file_bug707142_bom.json create mode 100644 dom/base/test/file_bug707142_utf-16.json create mode 100644 dom/base/test/file_bug708620-2.html create mode 100644 dom/base/test/file_bug708620.html create mode 100644 dom/base/test/file_bug769117.html create mode 100644 dom/base/test/file_bug782342.txt create mode 100644 dom/base/test/file_bug787778.sjs create mode 100644 dom/base/test/file_bug804395.jar create mode 100644 dom/base/test/file_bug869432.eventsource create mode 100644 dom/base/test/file_bug869432.eventsource^headers^ create mode 100644 dom/base/test/file_bug902350.html create mode 100644 dom/base/test/file_bug902350_frame.html create mode 100644 dom/base/test/file_bug907892.html create mode 100644 dom/base/test/file_bug945152.jar create mode 100644 dom/base/test/file_bug945152_worker.js create mode 100644 dom/base/test/file_change_policy_redirect.html create mode 100644 dom/base/test/file_empty.html create mode 100644 dom/base/test/file_explicit_user_agent.sjs create mode 100644 dom/base/test/file_general_document.html create mode 100644 dom/base/test/file_htmlserializer_1.html create mode 100644 dom/base/test/file_htmlserializer_1_bodyonly.html create mode 100644 dom/base/test/file_htmlserializer_1_format.html create mode 100644 dom/base/test/file_htmlserializer_1_linebreak.html create mode 100644 dom/base/test/file_htmlserializer_1_links.html create mode 100644 dom/base/test/file_htmlserializer_1_nested_body.html create mode 100644 dom/base/test/file_htmlserializer_1_no_body.html create mode 100644 dom/base/test/file_htmlserializer_1_noflag.html create mode 100644 dom/base/test/file_htmlserializer_1_noformatpre.html create mode 100644 dom/base/test/file_htmlserializer_1_raw.html create mode 100644 dom/base/test/file_htmlserializer_1_sibling_body.html create mode 100644 dom/base/test/file_htmlserializer_1_sibling_body_only_body.html create mode 100644 dom/base/test/file_htmlserializer_1_wrap.html create mode 100644 dom/base/test/file_htmlserializer_2.html create mode 100644 dom/base/test/file_htmlserializer_2_basic.html create mode 100644 dom/base/test/file_htmlserializer_2_enthtml.html create mode 100644 dom/base/test/file_htmlserializer_2_entw3c.html create mode 100644 dom/base/test/file_htmlserializer_2_latin1.html create mode 100644 dom/base/test/file_htmlserializer_ipv6.html create mode 100644 dom/base/test/file_htmlserializer_ipv6_out.html create mode 100644 dom/base/test/file_lock_orientation.html create mode 100644 dom/base/test/file_messagemanager_unload.html create mode 100644 dom/base/test/file_mozfiledataurl_audio.ogg create mode 100644 dom/base/test/file_mozfiledataurl_doc.html create mode 100644 dom/base/test/file_mozfiledataurl_img.jpg create mode 100644 dom/base/test/file_mozfiledataurl_inner.html create mode 100644 dom/base/test/file_mozfiledataurl_text.txt create mode 100644 dom/base/test/file_navigator_resolve_identity_xrays.xul create mode 100644 dom/base/test/file_nonascii_blob_url.html create mode 100644 dom/base/test/file_pluginAudio.html create mode 100644 dom/base/test/file_pluginAudioNonAutoStart.html create mode 100644 dom/base/test/file_receiveMessage.html create mode 100644 dom/base/test/file_record_orientation.html create mode 100644 dom/base/test/file_restrictedEventSource.sjs create mode 100644 dom/base/test/file_setname.html create mode 100644 dom/base/test/file_simplecontentpolicy.js create mode 100644 dom/base/test/file_timer_flood.html create mode 100644 dom/base/test/file_use_counter_outer.html create mode 100644 dom/base/test/file_use_counter_svg_currentScale.svg create mode 100644 dom/base/test/file_use_counter_svg_fill_pattern.svg create mode 100644 dom/base/test/file_use_counter_svg_fill_pattern_data.svg create mode 100644 dom/base/test/file_use_counter_svg_fill_pattern_definition.svg create mode 100644 dom/base/test/file_use_counter_svg_fill_pattern_internal.svg create mode 100644 dom/base/test/file_use_counter_svg_getElementById.svg create mode 100644 dom/base/test/file_webaudioLoop.html create mode 100644 dom/base/test/file_webaudioLoop2.html create mode 100644 dom/base/test/file_websocket_basic_wsh.py create mode 100644 dom/base/test/file_websocket_hello_wsh.py create mode 100644 dom/base/test/file_websocket_http_resource.txt create mode 100644 dom/base/test/file_websocket_permessage_deflate_disabled_wsh.py create mode 100644 dom/base/test/file_websocket_permessage_deflate_params_wsh.py create mode 100644 dom/base/test/file_websocket_permessage_deflate_rejected_wsh.py create mode 100644 dom/base/test/file_websocket_permessage_deflate_wsh.py create mode 100644 dom/base/test/file_websocket_wsh.py create mode 100644 dom/base/test/file_x-frame-options_main.html create mode 100644 dom/base/test/file_x-frame-options_page.sjs create mode 100644 dom/base/test/file_xhtmlserializer_1.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_bodyonly.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_format.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_linebreak.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_links.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_nested_body.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_no_body.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_noflag.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_noformatpre.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_raw.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_sibling_body.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_sibling_body_only_body.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_1_wrap.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_2.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_2_basic.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_2_enthtml.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_2_entw3c.xhtml create mode 100644 dom/base/test/file_xhtmlserializer_2_latin1.xhtml create mode 100644 dom/base/test/file_youtube_flash_embed.html create mode 100644 dom/base/test/fileapi_chromeScript.js create mode 100644 dom/base/test/fileutils.js create mode 100644 dom/base/test/forRemoval.resource create mode 100644 dom/base/test/forRemoval.resource^headers^ create mode 100644 dom/base/test/formReset.html create mode 100644 dom/base/test/gtest/TestNativeXMLHttpRequest.cpp create mode 100644 dom/base/test/gtest/TestParserDialogOptions.cpp create mode 100644 dom/base/test/gtest/TestPlainTextSerializer.cpp create mode 100644 dom/base/test/gtest/moz.build create mode 100644 dom/base/test/iframe_bug962251.html create mode 100644 dom/base/test/iframe_bug976673.html create mode 100644 dom/base/test/iframe_main_bug1022229.html create mode 100644 dom/base/test/iframe_postMessage_solidus.html create mode 100644 dom/base/test/iframe_postMessages.html create mode 100644 dom/base/test/iframe_sandbox_bug1022229.html create mode 100644 dom/base/test/iframe_webSocket_sandbox.html create mode 100644 dom/base/test/img_referrer_testserver.sjs create mode 100644 dom/base/test/intersectionobserver_iframe.html create mode 100644 dom/base/test/intersectionobserver_window.html create mode 100644 dom/base/test/invalid_accesscontrol.resource create mode 100644 dom/base/test/invalid_accesscontrol.resource^headers^ create mode 100644 dom/base/test/jsmodules/chrome.ini create mode 100644 dom/base/test/jsmodules/iframe_extractIntroType.html create mode 100644 dom/base/test/jsmodules/mochitest.ini create mode 100644 dom/base/test/jsmodules/module_badImport.js create mode 100644 dom/base/test/jsmodules/module_badSyntax.js create mode 100644 dom/base/test/jsmodules/module_cyclic1.js create mode 100644 dom/base/test/jsmodules/module_cyclic2.js create mode 100644 dom/base/test/jsmodules/module_cyclic3.js create mode 100644 dom/base/test/jsmodules/module_extractIntroType.js create mode 100644 dom/base/test/jsmodules/module_large1.js create mode 100644 dom/base/test/jsmodules/module_large2.js create mode 100644 dom/base/test/jsmodules/module_large3.js create mode 100644 dom/base/test/jsmodules/module_missingImport.js create mode 100644 dom/base/test/jsmodules/module_multiImports.js create mode 100644 dom/base/test/jsmodules/module_multiLargeImports.js create mode 100644 dom/base/test/jsmodules/module_setRan.js create mode 100644 dom/base/test/jsmodules/module_simple1.js create mode 100644 dom/base/test/jsmodules/module_simple2.js create mode 100644 dom/base/test/jsmodules/module_simple3.js create mode 100644 dom/base/test/jsmodules/module_simpleExport.js create mode 100644 dom/base/test/jsmodules/module_simpleImport.js create mode 100644 dom/base/test/jsmodules/module_testSyntax.js create mode 100644 dom/base/test/jsmodules/moz.build create mode 100644 dom/base/test/jsmodules/script_simple2.js create mode 100644 dom/base/test/jsmodules/test_asyncInlineModules.html create mode 100644 dom/base/test/jsmodules/test_cyclicImport.html create mode 100644 dom/base/test/jsmodules/test_importIntroType.html create mode 100644 dom/base/test/jsmodules/test_importNotFound.html create mode 100644 dom/base/test/jsmodules/test_importResolveFailed.html create mode 100644 dom/base/test/jsmodules/test_importedModuleMemoization.html create mode 100644 dom/base/test/jsmodules/test_linkErrorInCommon1.html create mode 100644 dom/base/test/jsmodules/test_linkErrorInCommon2.html create mode 100644 dom/base/test/jsmodules/test_moduleNotFound.html create mode 100644 dom/base/test/jsmodules/test_moduleParsedAsModule.html create mode 100644 dom/base/test/jsmodules/test_moduleScriptsNotRun.html create mode 100644 dom/base/test/jsmodules/test_moduleScriptsRun.html create mode 100644 dom/base/test/jsmodules/test_multiAsyncImports.html create mode 100644 dom/base/test/jsmodules/test_multiModuleImports.html create mode 100644 dom/base/test/jsmodules/test_multiModuleLargeImports.html create mode 100644 dom/base/test/jsmodules/test_multiTopLevelImports.html create mode 100644 dom/base/test/jsmodules/test_multiTopLevelLargeImports.html create mode 100644 dom/base/test/jsmodules/test_scriptInsertedModule.html create mode 100644 dom/base/test/jsmodules/test_scriptModuleOrder.html create mode 100644 dom/base/test/jsmodules/test_scriptNotParsedAsModule.html create mode 100644 dom/base/test/jsmodules/test_simpleImport.html create mode 100644 dom/base/test/jsmodules/test_syntaxError.html create mode 100644 dom/base/test/jsmodules/test_syntaxErrorAsync.html create mode 100644 dom/base/test/jsmodules/test_syntaxErrorInline.html create mode 100644 dom/base/test/jsmodules/test_syntaxErrorInlineAsync.html create mode 100644 dom/base/test/jsmodules/test_topLevelIntroType.html create mode 100644 dom/base/test/jsmodules/test_toplevelModuleMemoization.html create mode 100644 dom/base/test/jsmodules/test_typeAttrCaseInsensitive.html create mode 100644 dom/base/test/mochitest.ini create mode 100644 dom/base/test/moz.build create mode 100644 dom/base/test/mozbrowser_api_utils.js create mode 100644 dom/base/test/mutationobserver_dialog.html create mode 100644 dom/base/test/noaudio.webm create mode 100644 dom/base/test/orientationcommon.js create mode 100644 dom/base/test/referrerHelper.js create mode 100644 dom/base/test/referrer_change_server.sjs create mode 100644 dom/base/test/referrer_helper.js create mode 100644 dom/base/test/referrer_testserver.sjs create mode 100644 dom/base/test/reftest/mixed-bmp-png.ico create mode 100644 dom/base/test/reftest/reftest-stylo.list create mode 100644 dom/base/test/reftest/reftest.list create mode 100644 dom/base/test/reftest/test_bug920877-ref.html create mode 100644 dom/base/test/reftest/test_bug920877.html create mode 100644 dom/base/test/script-1_bug597345.sjs create mode 100644 dom/base/test/script-2_bug597345.js create mode 100644 dom/base/test/script_bug1238440.js create mode 100644 dom/base/test/script_bug602838.sjs create mode 100644 dom/base/test/script_postmessages_fileList.js create mode 100644 dom/base/test/send_gzip_content.sjs create mode 100644 dom/base/test/somedatas.resource create mode 100644 dom/base/test/somedatas.resource^headers^ create mode 100644 dom/base/test/test_EventSource_redirects.html create mode 100644 dom/base/test/test_Image_constructor.html create mode 100644 dom/base/test/test_NodeIterator_basics_filters.xhtml create mode 100644 dom/base/test/test_NodeIterator_mutations_1.xhtml create mode 100644 dom/base/test/test_NodeIterator_mutations_2.html create mode 100644 dom/base/test/test_NodeIterator_mutations_3.html create mode 100644 dom/base/test/test_anchor_area_referrer.html create mode 100644 dom/base/test/test_anchor_area_referrer_changing.html create mode 100644 dom/base/test/test_anchor_area_referrer_invalid.html create mode 100644 dom/base/test/test_anchor_area_referrer_rel.html create mode 100644 dom/base/test/test_anonymousContent_api.html create mode 100644 dom/base/test/test_anonymousContent_append_after_reflow.html create mode 100644 dom/base/test/test_anonymousContent_canvas.html create mode 100644 dom/base/test/test_anonymousContent_insert.html create mode 100644 dom/base/test/test_anonymousContent_manipulate_content.html create mode 100644 dom/base/test/test_anonymousContent_style_csp.html create mode 100644 dom/base/test/test_anonymousContent_style_csp.html^headers^ create mode 100644 dom/base/test/test_anonymousContent_xul_window.xul create mode 100644 dom/base/test/test_applet_alternate_content.html create mode 100644 dom/base/test/test_appname_override.html create mode 100644 dom/base/test/test_async_setTimeout_stack.html create mode 100644 dom/base/test/test_async_setTimeout_stack_across_globals.html create mode 100644 dom/base/test/test_audioNotification.html create mode 100644 dom/base/test/test_audioNotificationSilent_audioFile.html create mode 100644 dom/base/test/test_audioNotificationSilent_webAudio.html create mode 100644 dom/base/test/test_audioNotificationStopOnNavigation.html create mode 100644 dom/base/test/test_audioNotificationStream.html create mode 100644 dom/base/test/test_audioNotificationWithEarlyPlay.html create mode 100644 dom/base/test/test_audioWindowUtils.html create mode 100644 dom/base/test/test_base.xhtml create mode 100644 dom/base/test/test_blobURL_expiring.html create mode 100644 dom/base/test/test_blob_fragment_and_query.html create mode 100644 dom/base/test/test_blobconstructor.html create mode 100644 dom/base/test/test_bug1008126.html create mode 100644 dom/base/test/test_bug1016960.html create mode 100644 dom/base/test/test_bug1022229.html create mode 100644 dom/base/test/test_bug1025933.html create mode 100644 dom/base/test/test_bug1037687.html create mode 100644 dom/base/test/test_bug1043106.html create mode 100644 dom/base/test/test_bug1057176.html create mode 100644 dom/base/test/test_bug1060938.html create mode 100644 dom/base/test/test_bug1064481.html create mode 100644 dom/base/test/test_bug1070015.html create mode 100644 dom/base/test/test_bug1075702.html create mode 100644 dom/base/test/test_bug1081686.html create mode 100644 dom/base/test/test_bug1091883.html create mode 100644 dom/base/test/test_bug1101364.html create mode 100644 dom/base/test/test_bug1118689.html create mode 100644 dom/base/test/test_bug1126851.html create mode 100644 dom/base/test/test_bug116083.html create mode 100644 dom/base/test/test_bug1163743.html create mode 100644 dom/base/test/test_bug1165501.html create mode 100644 dom/base/test/test_bug1187157.html create mode 100644 dom/base/test/test_bug1198095.html create mode 100644 dom/base/test/test_bug1238440.html create mode 100644 dom/base/test/test_bug1250148.html create mode 100644 dom/base/test/test_bug1259588.html create mode 100644 dom/base/test/test_bug1263696.html create mode 100644 dom/base/test/test_bug1268962.html create mode 100644 dom/base/test/test_bug1274806.html create mode 100644 dom/base/test/test_bug1281963.html create mode 100644 dom/base/test/test_bug1295852.html create mode 100644 dom/base/test/test_bug1307730.html create mode 100644 dom/base/test/test_bug1308069.html create mode 100644 dom/base/test/test_bug1314032.html create mode 100644 dom/base/test/test_bug166235.html create mode 100644 dom/base/test/test_bug199959.html create mode 100644 dom/base/test/test_bug218236.html create mode 100644 dom/base/test/test_bug218277.html create mode 100644 dom/base/test/test_bug238409.html create mode 100644 dom/base/test/test_bug254337.html create mode 100644 dom/base/test/test_bug270145.xhtml create mode 100644 dom/base/test/test_bug276037-1.html create mode 100644 dom/base/test/test_bug276037-2.xhtml create mode 100644 dom/base/test/test_bug282547.html create mode 100644 dom/base/test/test_bug28293.html create mode 100644 dom/base/test/test_bug28293.xhtml create mode 100644 dom/base/test/test_bug298064.html create mode 100644 dom/base/test/test_bug300992.html create mode 100644 dom/base/test/test_bug311681.xml create mode 100644 dom/base/test/test_bug313646.html create mode 100644 dom/base/test/test_bug320799.html create mode 100644 dom/base/test/test_bug322317.html create mode 100644 dom/base/test/test_bug326337.html create mode 100644 dom/base/test/test_bug330925.xhtml create mode 100644 dom/base/test/test_bug331959.html create mode 100644 dom/base/test/test_bug333064.html create mode 100644 dom/base/test/test_bug333198.html create mode 100644 dom/base/test/test_bug333673.html create mode 100644 dom/base/test/test_bug337631.html create mode 100644 dom/base/test/test_bug338541.xhtml create mode 100644 dom/base/test/test_bug338583.html create mode 100644 dom/base/test/test_bug338679.html create mode 100644 dom/base/test/test_bug339494.html create mode 100644 dom/base/test/test_bug339494.xhtml create mode 100644 dom/base/test/test_bug340571.html create mode 100644 dom/base/test/test_bug343596.html create mode 100644 dom/base/test/test_bug345339.html create mode 100644 dom/base/test/test_bug346485.html create mode 100644 dom/base/test/test_bug352728.html create mode 100644 dom/base/test/test_bug352728.xhtml create mode 100644 dom/base/test/test_bug353334.html create mode 100644 dom/base/test/test_bug355026.html create mode 100644 dom/base/test/test_bug357450.html create mode 100644 dom/base/test/test_bug357450.xhtml create mode 100644 dom/base/test/test_bug357450_svg.xhtml create mode 100644 dom/base/test/test_bug357509.html create mode 100644 dom/base/test/test_bug358660.html create mode 100644 dom/base/test/test_bug362391.xhtml create mode 100644 dom/base/test/test_bug364092.xhtml create mode 100644 dom/base/test/test_bug364413.xhtml create mode 100644 dom/base/test/test_bug366944.html create mode 100644 dom/base/test/test_bug366946.html create mode 100644 dom/base/test/test_bug367164.html create mode 100644 dom/base/test/test_bug368972.html create mode 100644 dom/base/test/test_bug371576-2.html create mode 100644 dom/base/test/test_bug371576-3.html create mode 100644 dom/base/test/test_bug371576-4.html create mode 100644 dom/base/test/test_bug371576-5.html create mode 100644 dom/base/test/test_bug372086.html create mode 100644 dom/base/test/test_bug372964-2.html create mode 100644 dom/base/test/test_bug372964.html create mode 100644 dom/base/test/test_bug373181.xhtml create mode 100644 dom/base/test/test_bug375314.html create mode 100644 dom/base/test/test_bug378969.html create mode 100644 dom/base/test/test_bug380418.html create mode 100644 dom/base/test/test_bug380418.html^headers^ create mode 100644 dom/base/test/test_bug382113.html create mode 100644 dom/base/test/test_bug382871.html create mode 100644 dom/base/test/test_bug384003.xhtml create mode 100644 dom/base/test/test_bug390219.html create mode 100644 dom/base/test/test_bug390735.html create mode 100644 dom/base/test/test_bug392318.html create mode 100644 dom/base/test/test_bug392511.html create mode 100644 dom/base/test/test_bug393968.html create mode 100644 dom/base/test/test_bug395915.html create mode 100644 dom/base/test/test_bug397234.html create mode 100644 dom/base/test/test_bug398243.html create mode 100644 dom/base/test/test_bug401662.html create mode 100644 dom/base/test/test_bug402150.html create mode 100644 dom/base/test/test_bug402150.html^headers^ create mode 100644 dom/base/test/test_bug403841.html create mode 100644 dom/base/test/test_bug403852.html create mode 100644 dom/base/test/test_bug403868.xml create mode 100644 dom/base/test/test_bug405182.html create mode 100644 dom/base/test/test_bug409380.html create mode 100644 dom/base/test/test_bug410229.html create mode 100644 dom/base/test/test_bug413974.html create mode 100644 dom/base/test/test_bug414190.html create mode 100644 dom/base/test/test_bug415860.html create mode 100644 dom/base/test/test_bug416317-1.html create mode 100644 dom/base/test/test_bug416317-2.html create mode 100644 dom/base/test/test_bug416383.html create mode 100644 dom/base/test/test_bug417255.html create mode 100644 dom/base/test/test_bug417384.html create mode 100644 dom/base/test/test_bug418214.html create mode 100644 dom/base/test/test_bug418986-1.html create mode 100644 dom/base/test/test_bug419132.html create mode 100644 dom/base/test/test_bug419527.xhtml create mode 100644 dom/base/test/test_bug420609.xhtml create mode 100644 dom/base/test/test_bug420700.html create mode 100644 dom/base/test/test_bug421602.html create mode 100644 dom/base/test/test_bug422403-1.html create mode 100644 dom/base/test/test_bug422403-2.xhtml create mode 100644 dom/base/test/test_bug422537.html create mode 100644 dom/base/test/test_bug424212.html create mode 100644 dom/base/test/test_bug424359-1.html create mode 100644 dom/base/test/test_bug424359-2.html create mode 100644 dom/base/test/test_bug426308.html create mode 100644 dom/base/test/test_bug426646.html create mode 100644 dom/base/test/test_bug428847.html create mode 100644 dom/base/test/test_bug429157.html create mode 100644 dom/base/test/test_bug431082.html create mode 100644 dom/base/test/test_bug431701.html create mode 100644 dom/base/test/test_bug431833.html create mode 100644 dom/base/test/test_bug433533.html create mode 100644 dom/base/test/test_bug433662.html create mode 100644 dom/base/test/test_bug435425.html create mode 100644 dom/base/test/test_bug444030.xhtml create mode 100644 dom/base/test/test_bug444322.html create mode 100644 dom/base/test/test_bug444546.html create mode 100644 dom/base/test/test_bug444722.html create mode 100644 dom/base/test/test_bug448993.html create mode 100644 dom/base/test/test_bug450160.html create mode 100644 dom/base/test/test_bug451376.html create mode 100644 dom/base/test/test_bug453521.html create mode 100644 dom/base/test/test_bug453736.html create mode 100644 dom/base/test/test_bug454325.html create mode 100644 dom/base/test/test_bug454326.html create mode 100644 dom/base/test/test_bug455472.html create mode 100644 dom/base/test/test_bug455629.html create mode 100644 dom/base/test/test_bug456262.html create mode 100644 dom/base/test/test_bug457746.html create mode 100644 dom/base/test/test_bug459424.html create mode 100644 dom/base/test/test_bug461555.html create mode 100644 dom/base/test/test_bug461735.html create mode 100644 dom/base/test/test_bug465767.html create mode 100644 dom/base/test/test_bug466080.html create mode 100644 dom/base/test/test_bug466409.html create mode 100644 dom/base/test/test_bug466751.xhtml create mode 100644 dom/base/test/test_bug469020.html create mode 100644 dom/base/test/test_bug469304.html create mode 100644 dom/base/test/test_bug473162-1.html create mode 100644 dom/base/test/test_bug473162-2.html create mode 100644 dom/base/test/test_bug475156.html create mode 100644 dom/base/test/test_bug482935.html create mode 100644 dom/base/test/test_bug484396.html create mode 100644 dom/base/test/test_bug493881.html create mode 100644 dom/base/test/test_bug493881.js create mode 100644 dom/base/test/test_bug498240.html create mode 100644 dom/base/test/test_bug498433.html create mode 100644 dom/base/test/test_bug498897.html create mode 100644 dom/base/test/test_bug499656.html create mode 100644 dom/base/test/test_bug499656.xhtml create mode 100644 dom/base/test/test_bug500937.html create mode 100644 dom/base/test/test_bug503473.html create mode 100644 dom/base/test/test_bug503481.html create mode 100644 dom/base/test/test_bug503481b.html create mode 100644 dom/base/test/test_bug505783.html create mode 100644 dom/base/test/test_bug51034.html create mode 100644 dom/base/test/test_bug513194.html create mode 100644 dom/base/test/test_bug5141.html create mode 100644 dom/base/test/test_bug514487.html create mode 100644 dom/base/test/test_bug515401.html create mode 100644 dom/base/test/test_bug518104.html create mode 100644 dom/base/test/test_bug527896.html create mode 100644 dom/base/test/test_bug540854.html create mode 100644 dom/base/test/test_bug541937.html create mode 100644 dom/base/test/test_bug544642.html create mode 100644 dom/base/test/test_bug545644.html create mode 100644 dom/base/test/test_bug545644.xhtml create mode 100644 dom/base/test/test_bug548463.html create mode 100644 dom/base/test/test_bug553896.xhtml create mode 100644 dom/base/test/test_bug557892.html create mode 100644 dom/base/test/test_bug558726.html create mode 100644 dom/base/test/test_bug559526.html create mode 100644 dom/base/test/test_bug560780.html create mode 100644 dom/base/test/test_bug562137.html create mode 100644 dom/base/test/test_bug562169-1.html create mode 100644 dom/base/test/test_bug562169-2.html create mode 100644 dom/base/test/test_bug562652.html create mode 100644 dom/base/test/test_bug564047.html create mode 100644 dom/base/test/test_bug564863.xhtml create mode 100644 dom/base/test/test_bug567350.html create mode 100644 dom/base/test/test_bug574596.html create mode 100644 dom/base/test/test_bug578096.html create mode 100644 dom/base/test/test_bug585978.html create mode 100644 dom/base/test/test_bug587931.html create mode 100644 dom/base/test/test_bug588990.html create mode 100644 dom/base/test/test_bug590812.html create mode 100644 dom/base/test/test_bug590870.html create mode 100644 dom/base/test/test_bug592366.html create mode 100644 dom/base/test/test_bug592829.html create mode 100644 dom/base/test/test_bug597345.html create mode 100644 dom/base/test/test_bug599295.html create mode 100644 dom/base/test/test_bug599588.html create mode 100644 dom/base/test/test_bug601803.html create mode 100644 dom/base/test/test_bug602838.html create mode 100644 dom/base/test/test_bug604592.html create mode 100644 dom/base/test/test_bug604660.html create mode 100644 dom/base/test/test_bug605982.html create mode 100644 dom/base/test/test_bug606729.html create mode 100644 dom/base/test/test_bug614058.html create mode 100644 dom/base/test/test_bug614583.html create mode 100644 dom/base/test/test_bug622088.html create mode 100644 dom/base/test/test_bug622117.html create mode 100644 dom/base/test/test_bug622246.html create mode 100644 dom/base/test/test_bug625722.html create mode 100644 dom/base/test/test_bug626262.html create mode 100644 dom/base/test/test_bug628938.html create mode 100644 dom/base/test/test_bug631615.html create mode 100644 dom/base/test/test_bug638112.html create mode 100644 dom/base/test/test_bug647518.html create mode 100644 dom/base/test/test_bug650001.html create mode 100644 dom/base/test/test_bug650776.html create mode 100644 dom/base/test/test_bug650784.html create mode 100644 dom/base/test/test_bug656283.html create mode 100644 dom/base/test/test_bug664916.html create mode 100644 dom/base/test/test_bug666604.html create mode 100644 dom/base/test/test_bug675121.html create mode 100644 dom/base/test/test_bug675166.html create mode 100644 dom/base/test/test_bug682463.html create mode 100644 dom/base/test/test_bug682554.html create mode 100644 dom/base/test/test_bug682592.html create mode 100644 dom/base/test/test_bug684671.html create mode 100644 dom/base/test/test_bug685798.html create mode 100644 dom/base/test/test_bug686449.xhtml create mode 100644 dom/base/test/test_bug687859.html create mode 100644 dom/base/test/test_bug690056.html create mode 100644 dom/base/test/test_bug692434.html create mode 100644 dom/base/test/test_bug693615.html create mode 100644 dom/base/test/test_bug693875.html create mode 100644 dom/base/test/test_bug694754.xhtml create mode 100644 dom/base/test/test_bug696301-1.html create mode 100644 dom/base/test/test_bug696301-2.html create mode 100644 dom/base/test/test_bug698381.html create mode 100644 dom/base/test/test_bug698384.html create mode 100644 dom/base/test/test_bug704063.html create mode 100644 dom/base/test/test_bug704320.html create mode 100644 dom/base/test/test_bug704320_policyset.html create mode 100644 dom/base/test/test_bug704320_policyset2.html create mode 100644 dom/base/test/test_bug704320_preload.html create mode 100644 dom/base/test/test_bug707142.html create mode 100644 dom/base/test/test_bug708620.html create mode 100644 dom/base/test/test_bug711047.html create mode 100644 dom/base/test/test_bug711180.html create mode 100644 dom/base/test/test_bug715041.xul create mode 100644 dom/base/test/test_bug715041_removal.xul create mode 100644 dom/base/test/test_bug719533.html create mode 100644 dom/base/test/test_bug726364.html create mode 100644 dom/base/test/test_bug737087.html create mode 100644 dom/base/test/test_bug737565.html create mode 100644 dom/base/test/test_bug737612.html create mode 100644 dom/base/test/test_bug738108.html create mode 100644 dom/base/test/test_bug744830.html create mode 100644 dom/base/test/test_bug749367.html create mode 100644 dom/base/test/test_bug750096.html create mode 100644 dom/base/test/test_bug753278.html create mode 100644 dom/base/test/test_bug761120.html create mode 100644 dom/base/test/test_bug769117.html create mode 100644 dom/base/test/test_bug782342.html create mode 100644 dom/base/test/test_bug787778.html create mode 100644 dom/base/test/test_bug789315.html create mode 100644 dom/base/test/test_bug789856.html create mode 100644 dom/base/test/test_bug793311.html create mode 100644 dom/base/test/test_bug804395.html create mode 100644 dom/base/test/test_bug809003.html create mode 100644 dom/base/test/test_bug810494.html create mode 100644 dom/base/test/test_bug811701.html create mode 100644 dom/base/test/test_bug811701.xhtml create mode 100644 dom/base/test/test_bug813919.html create mode 100644 dom/base/test/test_bug814576.html create mode 100644 dom/base/test/test_bug819051.html create mode 100644 dom/base/test/test_bug820909.html create mode 100644 dom/base/test/test_bug840098.html create mode 100644 dom/base/test/test_bug864595.html create mode 100644 dom/base/test/test_bug868999.html create mode 100644 dom/base/test/test_bug869000.html create mode 100644 dom/base/test/test_bug869002.html create mode 100644 dom/base/test/test_bug869006.html create mode 100644 dom/base/test/test_bug876282.html create mode 100644 dom/base/test/test_bug890580.html create mode 100644 dom/base/test/test_bug891952.html create mode 100644 dom/base/test/test_bug894874.html create mode 100644 dom/base/test/test_bug895239.html create mode 100644 dom/base/test/test_bug895974.html create mode 100644 dom/base/test/test_bug902847.html create mode 100644 dom/base/test/test_bug907892.html create mode 100644 dom/base/test/test_bug913761.html create mode 100644 dom/base/test/test_bug922681.html create mode 100644 dom/base/test/test_bug927196.html create mode 100644 dom/base/test/test_bug945152.html create mode 100644 dom/base/test/test_bug962251.html create mode 100644 dom/base/test/test_bug976673.html create mode 100644 dom/base/test/test_bug982153.html create mode 100644 dom/base/test/test_bug999456.html create mode 100644 dom/base/test/test_caretPositionFromPoint.html create mode 100644 dom/base/test/test_change_policy.html create mode 100644 dom/base/test/test_classList.html create mode 100644 dom/base/test/test_clearTimeoutIntervalNoArg.html create mode 100644 dom/base/test/test_constructor-assignment.html create mode 100644 dom/base/test/test_constructor.html create mode 100644 dom/base/test/test_copyimage.html create mode 100644 dom/base/test/test_copypaste.html create mode 100644 dom/base/test/test_copypaste.xhtml create mode 100644 dom/base/test/test_copypaste.xul create mode 100644 dom/base/test/test_createHTMLDocument.html create mode 100644 dom/base/test/test_declare_stylesheet_obsolete.html create mode 100644 dom/base/test/test_dialogArguments.html create mode 100644 dom/base/test/test_document.all_iteration.html create mode 100644 dom/base/test/test_document.all_unqualified.html create mode 100644 dom/base/test/test_document_constructor.html create mode 100644 dom/base/test/test_document_importNode_document.html create mode 100644 dom/base/test/test_document_register.html create mode 100644 dom/base/test/test_domcursor.html create mode 100644 dom/base/test/test_domparser_null_char.html create mode 100644 dom/base/test/test_domparsing.html create mode 100644 dom/base/test/test_domrequest.html create mode 100644 dom/base/test/test_domrequesthelper.xul create mode 100644 dom/base/test/test_domwindowutils.html create mode 100644 dom/base/test/test_e4x_for_each.html create mode 100644 dom/base/test/test_element.matches.html create mode 100644 dom/base/test/test_elementTraversal.html create mode 100644 dom/base/test/test_element_closest.html create mode 100644 dom/base/test/test_encodeToStringWithMaxLength.html create mode 100644 dom/base/test/test_error.html create mode 100644 dom/base/test/test_explicit_user_agent.html create mode 100644 dom/base/test/test_file_from_blob.html create mode 100644 dom/base/test/test_file_negative_date.html create mode 100644 dom/base/test/test_fileapi.html create mode 100644 dom/base/test/test_fileapi_slice.html create mode 100644 dom/base/test/test_getAttribute_after_createAttribute.html create mode 100644 dom/base/test/test_getElementById.html create mode 100644 dom/base/test/test_getTranslationNodes.html create mode 100644 dom/base/test/test_getTranslationNodes_limit.html create mode 100644 dom/base/test/test_gsp-qualified.html create mode 100644 dom/base/test/test_gsp-quirks.html create mode 100644 dom/base/test/test_gsp-standards.html create mode 100644 dom/base/test/test_history_document_open.html create mode 100644 dom/base/test/test_history_state_null.html create mode 100644 dom/base/test/test_html_colors_quirks.html create mode 100644 dom/base/test/test_html_colors_standards.html create mode 100644 dom/base/test/test_htmlcopyencoder.html create mode 100644 dom/base/test/test_htmlcopyencoder.xhtml create mode 100644 dom/base/test/test_iframe_referrer.html create mode 100644 dom/base/test/test_iframe_referrer_changing.html create mode 100644 dom/base/test/test_iframe_referrer_invalid.html create mode 100644 dom/base/test/test_img_referrer.html create mode 100644 dom/base/test/test_innersize_scrollport.html create mode 100644 dom/base/test/test_integer_attr_with_leading_zero.html create mode 100644 dom/base/test/test_intersectionobservers.html create mode 100644 dom/base/test/test_ipc_messagemanager_blob.html create mode 100644 dom/base/test/test_link_prefetch.html create mode 100644 dom/base/test/test_link_stylesheet.html create mode 100644 dom/base/test/test_messagePort.html create mode 100644 dom/base/test/test_messagemanager_principal.html create mode 100644 dom/base/test/test_messagemanager_send_principal.html create mode 100644 dom/base/test/test_messagemanager_targetchain.html create mode 100644 dom/base/test/test_meta_viewport0.html create mode 100644 dom/base/test/test_meta_viewport1.html create mode 100644 dom/base/test/test_meta_viewport2.html create mode 100644 dom/base/test/test_meta_viewport3.html create mode 100644 dom/base/test/test_meta_viewport4.html create mode 100644 dom/base/test/test_meta_viewport5.html create mode 100644 dom/base/test/test_meta_viewport6.html create mode 100644 dom/base/test/test_meta_viewport7.html create mode 100644 dom/base/test/test_mozMatchesSelector.html create mode 100644 dom/base/test/test_mozbrowser_apis_allowed.html create mode 100644 dom/base/test/test_mozbrowser_apis_blocked.html create mode 100644 dom/base/test/test_mozfiledataurl.html create mode 100644 dom/base/test/test_mutationobserver_anonymous.html create mode 100644 dom/base/test/test_mutationobservers.html create mode 100644 dom/base/test/test_named_frames.html create mode 100644 dom/base/test/test_navigatorPrefOverride.html create mode 100644 dom/base/test/test_navigator_hardwareConcurrency.html create mode 100644 dom/base/test/test_navigator_language.html create mode 100644 dom/base/test/test_navigator_resolve_identity_xrays.xul create mode 100644 dom/base/test/test_noAudioNotification.html create mode 100644 dom/base/test/test_noAudioNotificationOnMutedElement.html create mode 100644 dom/base/test/test_noAudioNotificationOnMutedOrVolume0Element.html create mode 100644 dom/base/test/test_noAudioNotificationOnVolume0Element.html create mode 100644 dom/base/test/test_noWebAudioNotification.html create mode 100644 dom/base/test/test_nodelist_holes.html create mode 100644 dom/base/test/test_nonascii_blob_url.html create mode 100644 dom/base/test/test_openDialogChromeOnly.html create mode 100644 dom/base/test/test_open_null_features.html create mode 100644 dom/base/test/test_orientation_alternate.html create mode 100644 dom/base/test/test_orientation_frame.html create mode 100644 dom/base/test/test_orientation_frame_lock.html create mode 100644 dom/base/test/test_orientation_sandbox_no_lock.html create mode 100644 dom/base/test/test_pluginAudioNotification.html create mode 100644 dom/base/test/test_pluginMutedBeforePlay.html create mode 100644 dom/base/test/test_plugin_freezing.html create mode 100644 dom/base/test/test_postMessage_originAttributes.html create mode 100644 dom/base/test/test_postMessage_solidus.html create mode 100644 dom/base/test/test_postMessages.html create mode 100644 dom/base/test/test_processing_instruction_update_stylesheet.xhtml create mode 100644 dom/base/test/test_progress_events_for_gzip_data.html create mode 100644 dom/base/test/test_range_bounds.html create mode 100644 dom/base/test/test_reentrant_flush.html create mode 100644 dom/base/test/test_referrer_redirect.html create mode 100644 dom/base/test/test_root_iframe.html create mode 100644 dom/base/test/test_sandboxed_blob_uri.html create mode 100644 dom/base/test/test_screen_orientation.html create mode 100644 dom/base/test/test_script_loader_crossorigin_data_url.html create mode 100644 dom/base/test/test_sendQueryContentAndSelectionSetEvent.html create mode 100644 dom/base/test/test_setInterval_uncatchable_exception.html create mode 100644 dom/base/test/test_setTimeoutWith0.html create mode 100644 dom/base/test/test_settimeout_extra_arguments.html create mode 100644 dom/base/test/test_settimeout_inner.html create mode 100644 dom/base/test/test_setting_opener.html create mode 100644 dom/base/test/test_simplecontentpolicy.html create mode 100644 dom/base/test/test_text_wholeText.html create mode 100644 dom/base/test/test_textnode_normalize_in_selection.html create mode 100644 dom/base/test/test_textnode_split_in_selection.html create mode 100644 dom/base/test/test_timer_flood.html create mode 100644 dom/base/test/test_title.html create mode 100644 dom/base/test/test_treewalker_nextsibling.xml create mode 100644 dom/base/test/test_user_select.html create mode 100644 dom/base/test/test_viewport_scroll.html create mode 100644 dom/base/test/test_viewsource_forbidden_in_object.html create mode 100644 dom/base/test/test_w3element_traversal.html create mode 100644 dom/base/test/test_w3element_traversal.xhtml create mode 100644 dom/base/test/test_w3element_traversal_svg.html create mode 100644 dom/base/test/test_warning_for_blocked_cross_site_request.html create mode 100644 dom/base/test/test_webSocket_sandbox.html create mode 100644 dom/base/test/test_webaudioNotification.html create mode 100644 dom/base/test/test_webaudioNotificationStopOnNavigation.html create mode 100644 dom/base/test/test_websocket1.html create mode 100644 dom/base/test/test_websocket2.html create mode 100644 dom/base/test/test_websocket3.html create mode 100644 dom/base/test/test_websocket4.html create mode 100644 dom/base/test/test_websocket5.html create mode 100644 dom/base/test/test_websocket_basic.html create mode 100644 dom/base/test/test_websocket_frame.html create mode 100644 dom/base/test/test_websocket_hello.html create mode 100644 dom/base/test/test_websocket_permessage_deflate.html create mode 100644 dom/base/test/test_window_constructor.html create mode 100644 dom/base/test/test_window_cross_origin_props.html create mode 100644 dom/base/test/test_window_define_nonconfigurable.html create mode 100644 dom/base/test/test_window_define_symbol.html create mode 100644 dom/base/test/test_window_element_enumeration.html create mode 100644 dom/base/test/test_window_enumeration.html create mode 100644 dom/base/test/test_window_extensible.html create mode 100644 dom/base/test/test_window_indexing.html create mode 100644 dom/base/test/test_window_named_frame_enumeration.html create mode 100644 dom/base/test/test_window_orientation.html create mode 100644 dom/base/test/test_window_proto.html create mode 100644 dom/base/test/test_writable-replaceable.html create mode 100644 dom/base/test/test_x-frame-options.html create mode 100644 dom/base/test/test_xbl_userdata.xhtml create mode 100644 dom/base/test/test_youtube_flash_embed.html create mode 100644 dom/base/test/unit/1_original.xml create mode 100644 dom/base/test/unit/1_result.xml create mode 100644 dom/base/test/unit/2_original.xml create mode 100644 dom/base/test/unit/2_result_1.xml create mode 100644 dom/base/test/unit/2_result_2.xml create mode 100644 dom/base/test/unit/2_result_3.xml create mode 100644 dom/base/test/unit/2_result_4.xml create mode 100644 dom/base/test/unit/3_original.xml create mode 100644 dom/base/test/unit/3_result.xml create mode 100644 dom/base/test/unit/3_result_2.xml create mode 100644 dom/base/test/unit/4_original.xml create mode 100644 dom/base/test/unit/4_result_1.xml create mode 100644 dom/base/test/unit/4_result_2.xml create mode 100644 dom/base/test/unit/4_result_3.xml create mode 100644 dom/base/test/unit/4_result_4.xml create mode 100644 dom/base/test/unit/4_result_5.xml create mode 100644 dom/base/test/unit/4_result_6.xml create mode 100644 dom/base/test/unit/empty_document.xml create mode 100644 dom/base/test/unit/head_utilities.js create mode 100644 dom/base/test/unit/head_xml.js create mode 100644 dom/base/test/unit/isequalnode_data.xml create mode 100644 dom/base/test/unit/nodelist_data_1.xml create mode 100644 dom/base/test/unit/nodelist_data_2.xul create mode 100644 dom/base/test/unit/test_bloburi.js create mode 100644 dom/base/test/unit/test_bug553888.js create mode 100644 dom/base/test/unit/test_bug737966.js create mode 100644 dom/base/test/unit/test_cancelPrefetch.js create mode 100644 dom/base/test/unit/test_chromeutils_base64.js create mode 100644 dom/base/test/unit/test_delete_range.xml create mode 100644 dom/base/test/unit/test_error_codes.js create mode 100644 dom/base/test/unit/test_isequalnode.js create mode 100644 dom/base/test/unit/test_nodelist.js create mode 100644 dom/base/test/unit/test_normalize.js create mode 100644 dom/base/test/unit/test_range.js create mode 100644 dom/base/test/unit/test_thirdpartyutil.js create mode 100644 dom/base/test/unit/test_treewalker.js create mode 100644 dom/base/test/unit/test_xhr_document.js create mode 100644 dom/base/test/unit/test_xhr_origin_attributes.js create mode 100644 dom/base/test/unit/test_xhr_standalone.js create mode 100644 dom/base/test/unit/test_xml_parser.js create mode 100644 dom/base/test/unit/test_xml_serializer.js create mode 100644 dom/base/test/unit/test_xmlserializer.js create mode 100644 dom/base/test/unit/xpcshell.ini create mode 100644 dom/base/test/unit_ipc/test_bug553888_wrap.js create mode 100644 dom/base/test/unit_ipc/test_xhr_document_ipc.js create mode 100644 dom/base/test/unit_ipc/xpcshell.ini create mode 100644 dom/base/test/variable_style_sheet.sjs create mode 100644 dom/base/test/viewport_helpers.js create mode 100644 dom/base/test/w3element_traversal.svg create mode 100644 dom/base/test/websocket_helpers.js create mode 100644 dom/base/test/websocket_hybi/file_binary-frames_wsh.py create mode 100644 dom/base/test/websocket_hybi/file_check-binary-messages_wsh.py create mode 100644 dom/base/test/websocket_hybi/mochitest.ini create mode 100644 dom/base/test/websocket_hybi/test_receive-arraybuffer.html create mode 100644 dom/base/test/websocket_hybi/test_receive-blob.html create mode 100644 dom/base/test/websocket_hybi/test_send-arraybuffer.html create mode 100644 dom/base/test/websocket_hybi/test_send-blob.html create mode 100644 dom/base/test/websocket_tests.js create mode 100644 dom/base/test/wholeTexty-helper.xml create mode 100644 dom/base/test/worker_postMessages.js (limited to 'dom/base/test') diff --git a/dom/base/test/345339_iframe.html b/dom/base/test/345339_iframe.html new file mode 100644 index 000000000..890fb0d1c --- /dev/null +++ b/dom/base/test/345339_iframe.html @@ -0,0 +1,27 @@ + + + + Form Elements + + + +

+ +

+ + +
+ + + + + + +

+ + diff --git a/dom/base/test/Ahem.ttf b/dom/base/test/Ahem.ttf new file mode 100644 index 000000000..ac81cb031 Binary files /dev/null and b/dom/base/test/Ahem.ttf differ diff --git a/dom/base/test/accesscontrol.resource b/dom/base/test/accesscontrol.resource new file mode 100644 index 000000000..aca66f6f8 --- /dev/null +++ b/dom/base/test/accesscontrol.resource @@ -0,0 +1,7 @@ +:this file must be enconded in utf8 +:and its Content-Type must be equal to text/event-stream + +event: message +data: 1 + + diff --git a/dom/base/test/accesscontrol.resource^headers^ b/dom/base/test/accesscontrol.resource^headers^ new file mode 100644 index 000000000..75f1f8897 --- /dev/null +++ b/dom/base/test/accesscontrol.resource^headers^ @@ -0,0 +1,5 @@ +Access-Control-Allow-Origin: http://mochi.test:8888 +Access-Control-Allow-Credentials: true +Content-Type: text/event-stream +Cache-Control: no-cache, must-revalidate + diff --git a/dom/base/test/audio.ogg b/dom/base/test/audio.ogg new file mode 100644 index 000000000..bed764fbf Binary files /dev/null and b/dom/base/test/audio.ogg differ diff --git a/dom/base/test/audioEndedDuringPlaying.webm b/dom/base/test/audioEndedDuringPlaying.webm new file mode 100644 index 000000000..6ae65448d Binary files /dev/null and b/dom/base/test/audioEndedDuringPlaying.webm differ diff --git a/dom/base/test/badContentType.eventsource b/dom/base/test/badContentType.eventsource new file mode 100644 index 000000000..c9d0739e1 --- /dev/null +++ b/dom/base/test/badContentType.eventsource @@ -0,0 +1,5 @@ +retry:500 +event: message +data: 1 + + diff --git a/dom/base/test/badContentType.eventsource^headers^ b/dom/base/test/badContentType.eventsource^headers^ new file mode 100644 index 000000000..a1f9e38d9 --- /dev/null +++ b/dom/base/test/badContentType.eventsource^headers^ @@ -0,0 +1 @@ +Content-Type: text/plain diff --git a/dom/base/test/badHTTPResponseCode.eventsource b/dom/base/test/badHTTPResponseCode.eventsource new file mode 100644 index 000000000..c9d0739e1 --- /dev/null +++ b/dom/base/test/badHTTPResponseCode.eventsource @@ -0,0 +1,5 @@ +retry:500 +event: message +data: 1 + + diff --git a/dom/base/test/badHTTPResponseCode.eventsource^headers^ b/dom/base/test/badHTTPResponseCode.eventsource^headers^ new file mode 100644 index 000000000..545a9a201 --- /dev/null +++ b/dom/base/test/badHTTPResponseCode.eventsource^headers^ @@ -0,0 +1,2 @@ +HTTP 404 Not Found +Content-Type: text/event-stream diff --git a/dom/base/test/badMessageEvent.eventsource b/dom/base/test/badMessageEvent.eventsource new file mode 100644 index 000000000..0c635f0b5 --- /dev/null +++ b/dom/base/test/badMessageEvent.eventsource @@ -0,0 +1,4 @@ +retry:500 +event: message + + diff --git a/dom/base/test/badMessageEvent.eventsource^headers^ b/dom/base/test/badMessageEvent.eventsource^headers^ new file mode 100644 index 000000000..9bb8badca --- /dev/null +++ b/dom/base/test/badMessageEvent.eventsource^headers^ @@ -0,0 +1 @@ +Content-Type: text/event-stream diff --git a/dom/base/test/badMessageEvent2.eventsource b/dom/base/test/badMessageEvent2.eventsource new file mode 100644 index 000000000..ad6fa694f --- /dev/null +++ b/dom/base/test/badMessageEvent2.eventsource @@ -0,0 +1,5 @@ +retry:500 +data: ok + +id: invalid-id +data: not-ok diff --git a/dom/base/test/badMessageEvent2.eventsource^headers^ b/dom/base/test/badMessageEvent2.eventsource^headers^ new file mode 100644 index 000000000..9bb8badca --- /dev/null +++ b/dom/base/test/badMessageEvent2.eventsource^headers^ @@ -0,0 +1 @@ +Content-Type: text/event-stream diff --git a/dom/base/test/browser.ini b/dom/base/test/browser.ini new file mode 100644 index 000000000..60949f7a2 --- /dev/null +++ b/dom/base/test/browser.ini @@ -0,0 +1,28 @@ +[DEFAULT] +support-files = + empty.html + file_bug1011748_redirect.sjs + file_bug1011748_OK.sjs + file_messagemanager_unload.html + file_use_counter_outer.html + file_use_counter_svg_getElementById.svg + file_use_counter_svg_currentScale.svg + file_use_counter_svg_fill_pattern_definition.svg + file_use_counter_svg_fill_pattern.svg + file_use_counter_svg_fill_pattern_internal.svg + file_use_counter_svg_fill_pattern_data.svg + +[browser_bug593387.js] +[browser_bug902350.js] +tags = mcb +[browser_bug1011748.js] +[browser_bug1058164.js] +[browser_messagemanager_loadprocessscript.js] +[browser_messagemanager_targetframeloader.js] +[browser_messagemanager_unload.js] +[browser_pagehide_on_tab_close.js] +skip-if = e10s # this tests non-e10s behavior. it's not expected to work in e10s. +[browser_state_notifications.js] +skip-if = true # Bug 1271028 +[browser_use_counters.js] +[browser_bug1307747.js] diff --git a/dom/base/test/browser_bug1011748.js b/dom/base/test/browser_bug1011748.js new file mode 100644 index 000000000..a2158500d --- /dev/null +++ b/dom/base/test/browser_bug1011748.js @@ -0,0 +1,31 @@ +const gHttpTestRoot = "http://example.com/browser/dom/base/test/"; + +add_task(function* () { + var statusTexts = []; + var xhr = new XMLHttpRequest(); + var observer = { + observe: function (aSubject, aTopic, aData) { + try { + var channel = aSubject.QueryInterface(Ci.nsIHttpChannel); + channel.getResponseHeader("Location"); + } catch (e) { + return; + } + statusTexts.push(xhr.statusText); + } + }; + + Services.obs.addObserver(observer, "http-on-examine-response", false); + yield new Promise((resolve) => { + xhr.addEventListener("load", function() { + statusTexts.push(this.statusText); + is(statusTexts[0], "", "Empty statusText value for HTTP 302"); + is(statusTexts[1], "OK", "OK statusText value for the redirect."); + resolve(); + }); + xhr.open("GET", gHttpTestRoot+ "file_bug1011748_redirect.sjs", true); + xhr.send(); + }); + + Services.obs.removeObserver(observer, "http-on-examine-response"); +}); diff --git a/dom/base/test/browser_bug1058164.js b/dom/base/test/browser_bug1058164.js new file mode 100644 index 000000000..1ee01ca40 --- /dev/null +++ b/dom/base/test/browser_bug1058164.js @@ -0,0 +1,109 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const PAGE = "data:text/html,A%20regular,%20everyday,%20normal%20page."; + +/** + * Returns a Promise that resolves when it sees a pageshow and + * pagehide events in a particular order, where each event must + * have the persisted property set to true. Will cause a test + * failure to be logged if it sees an event out of order. + * + * @param browser () + * The browser to expect the events from. + * @param expectedOrder (array) + * An array of strings describing what order the pageshow + * and pagehide events should be in. + * Example: + * ["pageshow", "pagehide", "pagehide", "pageshow"] + * @returns Promise + */ +function prepareForVisibilityEvents(browser, expectedOrder) { + return new Promise((resolve) => { + let order = []; + + let checkSatisfied = () => { + if (order.length < expectedOrder.length) { + // We're still waiting... + return; + } else { + browser.removeEventListener("pagehide", eventListener); + browser.removeEventListener("pageshow", eventListener); + + for (let i = 0; i < expectedOrder.length; ++i) { + is(order[i], expectedOrder[i], "Got expected event"); + } + resolve(); + } + }; + + let eventListener = (e) => { + if (e.persisted) { + order.push(e.type); + checkSatisfied(); + } + }; + + browser.addEventListener("pagehide", eventListener); + browser.addEventListener("pageshow", eventListener); + }); +} + +/** + * Tests that frame scripts get pageshow / pagehide events when + * swapping browser frameloaders (which occurs when moving a tab + * into a different window). + */ +add_task(function* test_swap_frameloader_pagevisibility_events() { + // Load a new tab that we'll tear out... + let tab = gBrowser.addTab(PAGE); + gBrowser.selectedTab = tab; + let firstBrowser = tab.linkedBrowser; + yield BrowserTestUtils.browserLoaded(firstBrowser); + + // Swap the browser out to a new window + let newWindow = gBrowser.replaceTabWithWindow(tab); + + // We have to wait for the window to load so we can get the selected browser + // to listen to. + yield BrowserTestUtils.waitForEvent(newWindow, "load"); + let newWindowBrowser = newWindow.gBrowser.selectedBrowser; + + // Wait for the expected pagehide and pageshow events on the initial browser + yield prepareForVisibilityEvents(newWindowBrowser, ["pagehide", "pageshow"]); + + // Now let's send the browser back to the original window + + // First, create a new, empty browser tab to replace the window with + let newTab = gBrowser.addTab(); + gBrowser.selectedTab = newTab; + let emptyBrowser = newTab.linkedBrowser; + + // Wait for that initial browser to show its pageshow event so that we + // don't confuse it with the other expected events. Note that we can't + // use BrowserTestUtils.waitForEvent here because we're using the + // e10s add-on shims in the e10s-case. I'm doing this because I couldn't + // find a way of sending down a frame script to the newly opened windows + // and tabs fast enough to attach the event handlers before they were + // fired. + yield new Promise((resolve) => { + emptyBrowser.addEventListener("pageshow", function onPageShow() { + emptyBrowser.removeEventListener("pageshow", onPageShow); + resolve(); + }); + }); + + // The empty tab we just added show now fire a pagehide as its replaced, + // and a pageshow once the swap is finished. + let emptyBrowserPromise = + prepareForVisibilityEvents(emptyBrowser, ["pagehide", "pageshow"]); + + gBrowser.swapBrowsersAndCloseOther(newTab, newWindow.gBrowser.selectedTab); + + yield emptyBrowserPromise; + + gBrowser.removeTab(gBrowser.selectedTab); +}); diff --git a/dom/base/test/browser_bug1307747.js b/dom/base/test/browser_bug1307747.js new file mode 100644 index 000000000..8d1448cc2 --- /dev/null +++ b/dom/base/test/browser_bug1307747.js @@ -0,0 +1,32 @@ +/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ + +var {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {}); + +const BASE_URI = "http://mochi.test:8888/browser/dom/base/test/empty.html"; + +add_task(function* test_initialize() { + let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, BASE_URI); + let browser = gBrowser.getBrowserForTab(tab); + + let blob = yield ContentTask.spawn(browser, null, function() { + let blob = new Blob([new Array(1024*1024).join('123456789ABCDEF')]); + return blob; + }); + + ok(blob, "We have a blob!"); + is(blob.size, new Array(1024*1024).join('123456789ABCDEF').length, "The size matches"); + + let status = yield ContentTask.spawn(browser, blob, function(blob) { + return new Promise(resolve => { + let fr = new content.FileReader(); + fr.readAsText(blob); + fr.onloadend = function() { + resolve(fr.result == new Array(1024*1024).join('123456789ABCDEF')); + } + }); + }); + + ok(status, "Data match!"); + + yield BrowserTestUtils.removeTab(tab); +}); diff --git a/dom/base/test/browser_bug593387.js b/dom/base/test/browser_bug593387.js new file mode 100644 index 000000000..aa4f9dc0f --- /dev/null +++ b/dom/base/test/browser_bug593387.js @@ -0,0 +1,70 @@ +/* + * Test for bug 593387 + * Loads a chrome document in a content docshell and then inserts a + * X-Frame-Options: DENY iframe into the document and verifies that the document + * loads. The policy we are enforcing is outlined here: + * https://bugzilla.mozilla.org/show_bug.cgi?id=593387#c17 +*/ + +add_task(function* test() { + yield BrowserTestUtils.withNewTab({ gBrowser, + url: "chrome://global/content/mozilla.xhtml" }, + function* (newBrowser) { + // NB: We load the chrome:// page in the parent process. + yield testXFOFrameInChrome(newBrowser); + + // Run next test (try the same with a content top-level context) + yield BrowserTestUtils.loadURI(newBrowser, "http://example.com/"); + yield BrowserTestUtils.browserLoaded(newBrowser); + + yield ContentTask.spawn(newBrowser, null, testXFOFrameInContent); + }); +}); + +function testXFOFrameInChrome(newBrowser) { + // Insert an iframe that specifies "X-Frame-Options: DENY" and verify + // that it loads, since the top context is chrome + var deferred = {}; + deferred.promise = new Promise((resolve) => { + deferred.resolve = resolve; + }); + + var frame = newBrowser.contentDocument.createElement("iframe"); + frame.src = "http://mochi.test:8888/tests/dom/base/test/file_x-frame-options_page.sjs?testid=deny&xfo=deny"; + frame.addEventListener("load", function loaded() { + frame.removeEventListener("load", loaded, true); + + // Test that the frame loaded + var test = this.contentDocument.getElementById("test"); + is(test.tagName, "H1", "wrong element type"); + is(test.textContent, "deny", "wrong textContent"); + deferred.resolve(); + }, true); + + newBrowser.contentDocument.body.appendChild(frame); + return deferred.promise; +} + +function testXFOFrameInContent(newBrowser) { + // Insert an iframe that specifies "X-Frame-Options: DENY" and verify that it + // is blocked from loading since the top browsing context is another site + var deferred = {}; + deferred.promise = new Promise((resolve) => { + deferred.resolve = resolve; + }); + + var frame = content.document.createElement("iframe"); + frame.src = "http://mochi.test:8888/tests/dom/base/test/file_x-frame-options_page.sjs?testid=deny&xfo=deny"; + frame.addEventListener("load", function loaded() { + frame.removeEventListener("load", loaded, true); + + // Test that the frame DID NOT load + var test = this.contentDocument.getElementById("test"); + Assert.equal(test, null, "should be about:blank"); + + deferred.resolve(); + }, true); + + content.document.body.appendChild(frame); + return deferred.promise; +} diff --git a/dom/base/test/browser_bug902350.js b/dom/base/test/browser_bug902350.js new file mode 100644 index 000000000..cce014779 --- /dev/null +++ b/dom/base/test/browser_bug902350.js @@ -0,0 +1,66 @@ +/* + * Mixed Content Block frame navigates for target="_top" - Test for Bug 902350 + */ + + +const PREF_ACTIVE = "security.mixed_content.block_active_content"; +const gHttpTestRoot = "https://example.com/tests/dom/base/test/"; +var origBlockActive; +var gTestBrowser = null; + +registerCleanupFunction(function() { + // Set preferences back to their original values + Services.prefs.setBoolPref(PREF_ACTIVE, origBlockActive); +}); + +function MixedTestsCompleted() { + gBrowser.removeCurrentTab(); + window.focus(); + finish(); +} + +function test() { + waitForExplicitFinish(); + + origBlockActive = Services.prefs.getBoolPref(PREF_ACTIVE); + + Services.prefs.setBoolPref(PREF_ACTIVE, true); + + var newTab = gBrowser.addTab(); + gBrowser.selectedTab = newTab; + gTestBrowser = gBrowser.selectedBrowser; + newTab.linkedBrowser.stop() + + BrowserTestUtils.browserLoaded(gTestBrowser, true /*includeSubFrames*/).then(MixedTest1A); + var url = gHttpTestRoot + "file_bug902350.html"; + gTestBrowser.loadURI(url); +} + +// Need to capture 2 loads, one for the main page and one for the iframe +function MixedTest1A() { + BrowserTestUtils.browserLoaded(gTestBrowser, true /*includeSubFrames*/).then(MixedTest1B); +} + +// Find the iframe and click the link in it +function MixedTest1B() { + BrowserTestUtils.browserLoaded(gTestBrowser).then(MixedTest1C); + + ContentTask.spawn(gTestBrowser, null, function() { + var frame = content.document.getElementById("testing_frame"); + var topTarget = frame.contentWindow.document.getElementById("topTarget"); + topTarget.click(); + }); + + // The link click should have caused a load and should not invoke the Mixed Content Blocker + let {gIdentityHandler} = gTestBrowser.ownerGlobal; + ok (!gIdentityHandler._identityBox.classList.contains("mixedActiveBlocked"), + "Mixed Content Doorhanger did not appear when trying to navigate top"); +} + +function MixedTest1C() { + ContentTask.spawn(gTestBrowser, null, function() { + Assert.equal(content.location.href, "http://example.com/", + "Navigating to insecure domain through target='_top' failed.") + }).then(MixedTestsCompleted); +} + diff --git a/dom/base/test/browser_messagemanager_loadprocessscript.js b/dom/base/test/browser_messagemanager_loadprocessscript.js new file mode 100644 index 000000000..feabfb43c --- /dev/null +++ b/dom/base/test/browser_messagemanager_loadprocessscript.js @@ -0,0 +1,114 @@ +var ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"] + .getService(Ci.nsIMessageBroadcaster); +ppmm.QueryInterface(Ci.nsIProcessScriptLoader); + +function processScript() { + let cpmm = Components.classes["@mozilla.org/childprocessmessagemanager;1"] + .getService(Components.interfaces.nsISyncMessageSender); + if (cpmm !== this) { + dump("Test failed: wrong global object\n"); + return; + } + + this.cpmm = cpmm; + + addMessageListener("ProcessTest:Reply", function listener(msg) { + removeMessageListener("ProcessTest:Reply", listener); + sendAsyncMessage("ProcessTest:Finished"); + }); + sendSyncMessage("ProcessTest:Loaded"); +} +var processScriptURL = "data:,(" + processScript.toString() + ")()"; + +function initTestScript() { + let init = initialProcessData; + if (init.test123 != "hello") { + dump("Initial data incorrect\n"); + return; + } + + sendAsyncMessage("ProcessTest:InitGood", init.test456.get("hi")); +} +var initTestScriptURL = "data:,(" + initTestScript.toString() + ")()"; + +var checkProcess = Task.async(function*(mm) { + let { target } = yield promiseMessage(mm, "ProcessTest:Loaded"); + target.sendAsyncMessage("ProcessTest:Reply"); + yield promiseMessage(target, "ProcessTest:Finished"); + ok(true, "Saw process finished"); +}); + +function promiseMessage(messageManager, message) { + return new Promise(resolve => { + let listener = (msg) => { + messageManager.removeMessageListener(message, listener); + resolve(msg); + }; + + messageManager.addMessageListener(message, listener); + }) +} + +// Test that loading a process script loads in all existing processes +add_task(function*() { + let checks = []; + for (let i = 0; i < ppmm.childCount; i++) + checks.push(checkProcess(ppmm.getChildAt(i))); + + ppmm.loadProcessScript(processScriptURL, false); + yield Promise.all(checks); +}); + +// Test that loading a process script loads in new processes +add_task(function*() { + // This test is only relevant in e10s + if (!gMultiProcessBrowser) + return; + + is(ppmm.childCount, 2, "Should be two processes at this point"); + + // Load something in the main process + gBrowser.selectedBrowser.loadURI("about:robots"); + yield BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); + + let init = ppmm.initialProcessData; + init.test123 = "hello"; + init.test456 = new Map(); + init.test456.set("hi", "bye"); + + // With no remote frames left we should be down to one process. + // However, stuff like remote thumbnails can cause a content + // process to exist nonetheless. This should be rare, though, + // so the test is useful most of the time. + if (ppmm.childCount == 1) { + let mainMM = ppmm.getChildAt(0); + + let check = checkProcess(ppmm); + ppmm.loadProcessScript(processScriptURL, true); + + // The main process should respond + yield check; + + check = checkProcess(ppmm); + // Reset the default browser to start a new child process + gBrowser.updateBrowserRemoteness(gBrowser.selectedBrowser, true); + gBrowser.selectedBrowser.loadURI("about:blank"); + yield BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); + + is(ppmm.childCount, 2, "Should be back to two processes at this point"); + + // The new process should have responded + yield check; + + ppmm.removeDelayedProcessScript(processScriptURL); + + let childMM; + childMM = ppmm.getChildAt(0) == mainMM ? ppmm.getChildAt(1) : ppmm.getChildAt(0); + + childMM.loadProcessScript(initTestScriptURL, false); + let msg = yield promiseMessage(childMM, "ProcessTest:InitGood"); + is(msg.data, "bye", "initial process data was correct"); + } else { + info("Unable to finish test entirely"); + } +}); diff --git a/dom/base/test/browser_messagemanager_targetframeloader.js b/dom/base/test/browser_messagemanager_targetframeloader.js new file mode 100644 index 000000000..32575d073 --- /dev/null +++ b/dom/base/test/browser_messagemanager_targetframeloader.js @@ -0,0 +1,31 @@ +function frameScript() +{ + sendSyncMessage("Test:Message"); + sendAsyncMessage("Test:Message"); + sendAsyncMessage("Test:Done"); +} + +function test() { + waitForExplicitFinish(); + + var newTab = gBrowser.addTab("about:blank"); + gBrowser.selectedTab = newTab; + + let browser = newTab.linkedBrowser; + let frameLoader = browser.frameLoader; + ok(frameLoader !== null, "frameLoader looks okay"); + + browser.messageManager.loadFrameScript("data:,(" + frameScript.toString() + ")()", false); + + browser.messageManager.addMessageListener("Test:Message", (msg) => { + ok(msg.target === browser, " is correct"); + ok(msg.targetFrameLoader === frameLoader, "frameLoader is correct"); + ok(browser.frameLoader === msg.targetFrameLoader, "browser frameloader is correct"); + }); + + browser.messageManager.addMessageListener("Test:Done", () => { + info("Finished"); + gBrowser.removeCurrentTab(); + finish(); + }); +} diff --git a/dom/base/test/browser_messagemanager_unload.js b/dom/base/test/browser_messagemanager_unload.js new file mode 100644 index 000000000..413e38493 --- /dev/null +++ b/dom/base/test/browser_messagemanager_unload.js @@ -0,0 +1,102 @@ +function frameScript() +{ + Components.utils.import("resource://gre/modules/Services.jsm"); + + function eventHandler(e) { + if (!docShell) { + sendAsyncMessage("Test:Fail", "docShell is null"); + } + + sendAsyncMessage("Test:Event", [e.type, e.target === content.document, e.eventPhase]); + } + + let outerID = content.QueryInterface(Components.interfaces.nsIInterfaceRequestor). + getInterface(Components.interfaces.nsIDOMWindowUtils).outerWindowID; + function onOuterWindowDestroyed(subject, topic, data) { + if (docShell) { + sendAsyncMessage("Test:Fail", "docShell is non-null"); + } + + let id = subject.QueryInterface(Components.interfaces.nsISupportsPRUint64).data; + sendAsyncMessage("Test:Event", ["outer-window-destroyed", id == outerID]); + if (id == outerID) { + Services.obs.removeObserver(onOuterWindowDestroyed, "outer-window-destroyed"); + } + } + + let url = "https://example.com/browser/dom/base/test/file_messagemanager_unload.html"; + + content.location = url; + addEventListener("load", (e) => { + if (e.target.location != url) { + return; + } + + addEventListener("unload", eventHandler, false); + addEventListener("unload", eventHandler, true); + addEventListener("pagehide", eventHandler, false); + addEventListener("pagehide", eventHandler, true); + Services.obs.addObserver(onOuterWindowDestroyed, "outer-window-destroyed", false); + + sendAsyncMessage("Test:Ready"); + }, true); +} + +const EXPECTED = [ + // Unload events on the TabChildGlobal. These come first so that the + // docshell is available. + ["unload", false, 2], + ["unload", false, 2], + + // pagehide and unload events for the top-level page. + ["pagehide", true, 1], + ["pagehide", true, 3], + ["unload", true, 1], + + // pagehide and unload events for the iframe. + ["pagehide", false, 1], + ["pagehide", false, 3], + ["unload", false, 1], + + // outer-window-destroyed for both pages. + ["outer-window-destroyed", false], + ["outer-window-destroyed", true], +]; + +function test() { + waitForExplicitFinish(); + + var newTab = gBrowser.addTab("about:blank"); + gBrowser.selectedTab = newTab; + + let browser = newTab.linkedBrowser; + let frameLoader = browser.frameLoader; + ok(frameLoader !== null, "frameLoader looks okay"); + + browser.messageManager.loadFrameScript("data:,(" + frameScript.toString() + ")()", false); + + browser.messageManager.addMessageListener("Test:Fail", (msg) => { + ok(false, msg.data); + }, true); + + let index = 0; + browser.messageManager.addMessageListener("Test:Event", (msg) => { + ok(msg.target === browser, " is correct"); + ok(msg.targetFrameLoader === frameLoader, "frameLoader is correct"); + ok(browser.frameLoader === null, "browser frameloader null during teardown"); + + info(JSON.stringify(msg.data)); + + is(JSON.stringify(msg.data), JSON.stringify(EXPECTED[index]), "results match"); + index++; + + if (index == EXPECTED.length) { + finish(); + } + }, true); + + browser.messageManager.addMessageListener("Test:Ready", () => { + info("Got ready message"); + gBrowser.removeCurrentTab(); + }); +} diff --git a/dom/base/test/browser_pagehide_on_tab_close.js b/dom/base/test/browser_pagehide_on_tab_close.js new file mode 100644 index 000000000..0da7617e1 --- /dev/null +++ b/dom/base/test/browser_pagehide_on_tab_close.js @@ -0,0 +1,17 @@ +function test() { + waitForExplicitFinish(); + + var tab = gBrowser.addTab(); + gBrowser.selectedTab = tab; + + tab.linkedBrowser.addEventListener("load", function onload() { + tab.linkedBrowser.removeEventListener("load", onload); + + tab.linkedBrowser.addEventListener("pagehide", function() { + ok(true, "got page hide event"); + finish(); + }); + + executeSoon(() => { gBrowser.removeTab(tab); }); + }, true); +} diff --git a/dom/base/test/browser_state_notifications.js b/dom/base/test/browser_state_notifications.js new file mode 100644 index 000000000..3279acb39 --- /dev/null +++ b/dom/base/test/browser_state_notifications.js @@ -0,0 +1,189 @@ +/* globals Components: true, Promise: true, gBrowser: true, Test: true, + info: true, is: true, window: true, waitForExplicitFinish: true, + finish: true, ok: true*/ + +"use strict"; + +var { interfaces: Ci, classes: Cc, utils: Cu } = Components; +const { addObserver, removeObserver } = Cc["@mozilla.org/observer-service;1"]. + getService(Ci.nsIObserverService); +const { openWindow } = Cc["@mozilla.org/embedcomp/window-watcher;1"]. + getService(Ci.nsIWindowWatcher); + +const Test = routine => () => { + waitForExplicitFinish(); + Task.spawn(routine) + .then(finish, error => { + ok(false, error); + finish(); + }); +}; + +// Returns promise for the observer notification subject for +// the given topic. If `receive("foo")` is called `n` times +// nth promise is resolved on an `nth` "foo" notification. +const receive = (topic, p, syncCallback) => { + const { promise, resolve, reject } = Promise.defer(); + const { queue } = receive; + const timeout = () => { + queue.splice(queue.indexOf(resolve) - 1, 2); + reject(new Error("Timeout")); + }; + + const observer = { + observe: subject => { + // Browser loads bunch of other documents that we don't care + // about so we let allow filtering notifications via `p` function. + if (p && !p(subject)) return; + // If observer is a first one with a given `topic` + // in a queue resolve promise and take it off the queue + // otherwise keep waiting. + const index = queue.indexOf(topic); + if (queue.indexOf(resolve) === index + 1) { + removeObserver(observer, topic); + clearTimeout(id, reject); + queue.splice(index, 2); + // Some tests need to be executed synchronously when the event is fired. + if (syncCallback) { + syncCallback(subject); + } + resolve(subject); + } + } + }; + const id = setTimeout(timeout, 90000); + addObserver(observer, topic, false); + queue.push(topic, resolve); + + return promise; +}; +receive.queue = []; + +const openTab = uri => gBrowser.selectedTab = gBrowser.addTab(uri); + +const sleep = ms => { + const { promise, resolve } = Promise.defer(); + setTimeout(resolve, ms); + return promise; +}; + +const isData = document => document.URL.startsWith("data:"); + +const uri1 = "data:text/html;charset=utf-8,

1

"; +// For whatever reason going back on load event doesn't work so timeout it is :( +const uri2 = "data:text/html;charset=utf-8,

2

"; +const uri3 = "data:text/html;charset=utf-8,

3

"; + +const uri4 = "chrome://browser/content/license.html"; + +const test = Test(function*() { + let documentInteractive = receive("content-document-interactive", isData, d => { + // This test is executed synchronously when the event is received. + is(d.readyState, "interactive", "document is interactive"); + is(d.URL, uri1, "document.URL matches tab url"); + }); + let documentLoaded = receive("content-document-loaded", isData); + let pageShown = receive("content-page-shown", isData); + + info("open: uri#1"); + const tab1 = openTab(uri1); + const browser1 = gBrowser.getBrowserForTab(tab1); + + let interactiveDocument1 = yield documentInteractive; + + let loadedDocument1 = yield documentLoaded; + is(loadedDocument1.readyState, "complete", "document is loaded"); + is(interactiveDocument1, loadedDocument1, "interactive document is loaded"); + + let shownPage = yield pageShown; + is(interactiveDocument1, shownPage, "loaded document is shown"); + + // Wait until history entry is created before loading new uri. + yield receive("sessionstore-state-write-complete"); + + info("load uri#2"); + + documentInteractive = receive("content-document-interactive", isData, d => { + // This test is executed synchronously when the event is received. + is(d.readyState, "interactive", "document is interactive"); + is(d.URL, uri2, "document.URL matches URL loaded"); + }); + documentLoaded = receive("content-document-loaded", isData); + pageShown = receive("content-page-shown", isData); + let pageHidden = receive("content-page-hidden", isData); + + browser1.loadURI(uri2); + + let hiddenPage = yield pageHidden; + is(interactiveDocument1, hiddenPage, "loaded document is hidden"); + + let interactiveDocument2 = yield documentInteractive; + + let loadedDocument2 = yield documentLoaded; + is(loadedDocument2.readyState, "complete", "document is loaded"); + is(interactiveDocument2, loadedDocument2, "interactive document is loaded"); + + shownPage = yield pageShown; + is(interactiveDocument2, shownPage, "loaded document is shown"); + + info("go back to uri#1"); + + + documentInteractive = receive("content-document-interactive", isData, d => { + // This test is executed synchronously when the event is received. + is(d.readyState, "interactive", "document is interactive"); + is(d.URL, uri3, "document.URL matches URL loaded"); + }); + documentLoaded = receive("content-document-loaded", isData); + pageShown = receive("content-page-shown", isData); + pageHidden = receive("content-page-hidden", isData); + + hiddenPage = yield pageHidden; + is(interactiveDocument2, hiddenPage, "new document is hidden"); + + shownPage = yield pageShown; + is(interactiveDocument1, shownPage, "previous document is shown"); + + info("load uri#3"); + + browser1.loadURI(uri3); + + pageShown = receive("content-page-shown", isData); + + let interactiveDocument3 = yield documentInteractive; + + let loadedDocument3 = yield documentLoaded; + is(loadedDocument3.readyState, "complete", "document is loaded"); + is(interactiveDocument3, loadedDocument3, "interactive document is loaded"); + + shownPage = yield pageShown; + is(interactiveDocument3, shownPage, "previous document is shown"); + + gBrowser.removeTab(tab1); + + info("load chrome uri"); + + const tab2 = openTab(uri4); + documentInteractive = receive("chrome-document-interactive", null, d => { + // This test is executed synchronously when the event is received. + is(d.readyState, "interactive", "document is interactive"); + is(d.URL, uri4, "document.URL matches URL loaded"); + }); + documentLoaded = receive("chrome-document-loaded"); + pageShown = receive("chrome-page-shown"); + + const interactiveDocument4 = yield documentInteractive; + + let loadedDocument4 = yield documentLoaded; + is(loadedDocument4.readyState, "complete", "document is loaded"); + is(interactiveDocument4, loadedDocument4, "interactive document is loaded"); + + shownPage = yield pageShown; + is(interactiveDocument4, shownPage, "loaded chrome document is shown"); + + pageHidden = receive("chrome-page-hidden"); + gBrowser.removeTab(tab2); + + hiddenPage = yield pageHidden; + is(interactiveDocument4, hiddenPage, "chrome document hidden"); +}); diff --git a/dom/base/test/browser_use_counters.js b/dom/base/test/browser_use_counters.js new file mode 100644 index 000000000..68bd04f88 --- /dev/null +++ b/dom/base/test/browser_use_counters.js @@ -0,0 +1,305 @@ +/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ + +requestLongerTimeout(2); + +var {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {}); +Cu.import("resource://gre/modules/Services.jsm"); + +const gHttpTestRoot = "http://example.com/browser/dom/base/test/"; + +/** + * Enable local telemetry recording for the duration of the tests. + */ +var gOldContentCanRecord = false; +var gOldParentCanRecord = false; +add_task(function* test_initialize() { + let Telemetry = Cc["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry); + gOldParentCanRecord = Telemetry.canRecordExtended + Telemetry.canRecordExtended = true; + + // Because canRecordExtended is a per-process variable, we need to make sure + // that all of the pages load in the same content process. Limit the number + // of content processes to at most 1 (or 0 if e10s is off entirely). + yield SpecialPowers.pushPrefEnv({ set: [[ "dom.ipc.processCount", 1 ]] }); + + gOldContentCanRecord = yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () { + let telemetry = Cc["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry); + let old = telemetry.canRecordExtended; + telemetry.canRecordExtended = true; + return old; + }); + info("canRecord for content: " + gOldContentCanRecord); +}); + +add_task(function* () { + // Check that use counters are incremented by SVGs loaded directly in iframes. + yield check_use_counter_iframe("file_use_counter_svg_getElementById.svg", + "SVGSVGELEMENT_GETELEMENTBYID"); + yield check_use_counter_iframe("file_use_counter_svg_currentScale.svg", + "SVGSVGELEMENT_CURRENTSCALE_getter"); + yield check_use_counter_iframe("file_use_counter_svg_currentScale.svg", + "SVGSVGELEMENT_CURRENTSCALE_setter"); + + // Check that even loads from the imglib cache update use counters. The + // images should still be there, because we just loaded them in the last + // set of tests. But we won't get updated counts for the document + // counters, because we won't be re-parsing the SVG documents. + yield check_use_counter_iframe("file_use_counter_svg_getElementById.svg", + "SVGSVGELEMENT_GETELEMENTBYID", false); + yield check_use_counter_iframe("file_use_counter_svg_currentScale.svg", + "SVGSVGELEMENT_CURRENTSCALE_getter", false); + yield check_use_counter_iframe("file_use_counter_svg_currentScale.svg", + "SVGSVGELEMENT_CURRENTSCALE_setter", false); + + // Check that use counters are incremented by SVGs loaded as images. + // Note that SVG images are not permitted to execute script, so we can only + // check for properties here. + yield check_use_counter_img("file_use_counter_svg_getElementById.svg", + "PROPERTY_FILL"); + yield check_use_counter_img("file_use_counter_svg_currentScale.svg", + "PROPERTY_FILL"); + + // Check that use counters are incremented by directly loading SVGs + // that reference patterns defined in another SVG file. + yield check_use_counter_direct("file_use_counter_svg_fill_pattern.svg", + "PROPERTY_FILLOPACITY", /*xfail=*/true); + + // Check that use counters are incremented by directly loading SVGs + // that reference patterns defined in the same file or in data: URLs. + yield check_use_counter_direct("file_use_counter_svg_fill_pattern_internal.svg", + "PROPERTY_FILLOPACITY"); + // data: URLs don't correctly propagate to their referring document yet. + //yield check_use_counter_direct("file_use_counter_svg_fill_pattern_data.svg", + // "PROPERTY_FILL_OPACITY"); +}); + +add_task(function* () { + let Telemetry = Cc["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry); + Telemetry.canRecordExtended = gOldParentCanRecord; + + yield ContentTask.spawn(gBrowser.selectedBrowser, { oldCanRecord: gOldContentCanRecord }, function (arg) { + Cu.import("resource://gre/modules/PromiseUtils.jsm"); + yield new Promise(resolve => { + let telemetry = Cc["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry); + telemetry.canRecordExtended = arg.oldCanRecord; + resolve(); + }); + }); +}); + + +function waitForDestroyedDocuments() { + let deferred = promise.defer(); + SpecialPowers.exactGC(deferred.resolve); + return deferred.promise; +} + +function waitForPageLoad(browser) { + return ContentTask.spawn(browser, null, function*() { + Cu.import("resource://gre/modules/PromiseUtils.jsm"); + yield new Promise(resolve => { + let listener = () => { + removeEventListener("load", listener, true); + resolve(); + } + addEventListener("load", listener, true); + }); + }); +} + +function grabHistogramsFromContent(use_counter_middlefix, page_before = null) { + let telemetry = Cc["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry); + let suffix = Services.appinfo.browserTabsRemoteAutostart ? "#content" : ""; + let gather = () => [ + telemetry.getHistogramById("USE_COUNTER2_" + use_counter_middlefix + "_PAGE" + suffix).snapshot().sum, + telemetry.getHistogramById("USE_COUNTER2_" + use_counter_middlefix + "_DOCUMENT" + suffix).snapshot().sum, + telemetry.getHistogramById("CONTENT_DOCUMENTS_DESTROYED" + suffix).snapshot().sum, + telemetry.getHistogramById("TOP_LEVEL_CONTENT_DOCUMENTS_DESTROYED" + suffix).snapshot().sum, + ]; + return BrowserTestUtils.waitForCondition(() => { + return page_before != telemetry.getHistogramById("USE_COUNTER2_" + use_counter_middlefix + "_PAGE" + suffix).snapshot().sum; + }).then(gather, gather); +} + +var check_use_counter_iframe = Task.async(function* (file, use_counter_middlefix, check_documents=true) { + info("checking " + file + " with histogram " + use_counter_middlefix); + + let newTab = gBrowser.addTab( "about:blank"); + gBrowser.selectedTab = newTab; + newTab.linkedBrowser.stop(); + + // Hold on to the current values of the telemetry histograms we're + // interested in. + let [histogram_page_before, histogram_document_before, + histogram_docs_before, histogram_toplevel_docs_before] = + yield grabHistogramsFromContent(use_counter_middlefix); + + gBrowser.selectedBrowser.loadURI(gHttpTestRoot + "file_use_counter_outer.html"); + yield waitForPageLoad(gBrowser.selectedBrowser); + + // Inject our desired file into the iframe of the newly-loaded page. + yield ContentTask.spawn(gBrowser.selectedBrowser, { file: file }, function(opts) { + Cu.import("resource://gre/modules/PromiseUtils.jsm"); + let deferred = PromiseUtils.defer(); + + let wu = content.window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + + let iframe = content.document.getElementById('content'); + iframe.src = opts.file; + let listener = (event) => { + event.target.removeEventListener("load", listener, true); + + // We flush the main document first, then the iframe's document to + // ensure any propagation that might happen from content->parent should + // have already happened when counters are reported to telemetry. + wu.forceUseCounterFlush(content.document); + wu.forceUseCounterFlush(iframe.contentDocument); + + deferred.resolve(); + }; + iframe.addEventListener("load", listener, true); + + return deferred.promise; + }); + + // Tear down the page. + gBrowser.removeTab(newTab); + + // The histograms only get recorded when the document actually gets + // destroyed, which might not have happened yet due to GC/CC effects, etc. + // Try to force document destruction. + yield waitForDestroyedDocuments(); + + // Grab histograms again and compare. + let [histogram_page_after, histogram_document_after, + histogram_docs_after, histogram_toplevel_docs_after] = + yield grabHistogramsFromContent(use_counter_middlefix, histogram_page_before); + + is(histogram_page_after, histogram_page_before + 1, + "page counts for " + use_counter_middlefix + " after are correct"); + ok(histogram_toplevel_docs_after >= histogram_toplevel_docs_before + 1, + "top level document counts are correct"); + if (check_documents) { + is(histogram_document_after, histogram_document_before + 1, + "document counts for " + use_counter_middlefix + " after are correct"); + } +}); + +var check_use_counter_img = Task.async(function* (file, use_counter_middlefix) { + info("checking " + file + " as image with histogram " + use_counter_middlefix); + + let newTab = gBrowser.addTab("about:blank"); + gBrowser.selectedTab = newTab; + newTab.linkedBrowser.stop(); + + // Hold on to the current values of the telemetry histograms we're + // interested in. + let [histogram_page_before, histogram_document_before, + histogram_docs_before, histogram_toplevel_docs_before] = + yield grabHistogramsFromContent(use_counter_middlefix); + + gBrowser.selectedBrowser.loadURI(gHttpTestRoot + "file_use_counter_outer.html"); + yield waitForPageLoad(gBrowser.selectedBrowser); + + // Inject our desired file into the img of the newly-loaded page. + yield ContentTask.spawn(gBrowser.selectedBrowser, { file: file }, function(opts) { + Cu.import("resource://gre/modules/PromiseUtils.jsm"); + let deferred = PromiseUtils.defer(); + + let img = content.document.getElementById('display'); + img.src = opts.file; + let listener = (event) => { + img.removeEventListener("load", listener, true); + + // Flush for the image. It matters what order we do these in, so that + // the image can propagate its use counters to the document prior to the + // document reporting its use counters. + let wu = content.window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + wu.forceUseCounterFlush(img); + + // Flush for the main window. + wu.forceUseCounterFlush(content.document); + + deferred.resolve(); + }; + img.addEventListener("load", listener, true); + + return deferred.promise; + }); + + // Tear down the page. + gBrowser.removeTab(newTab); + + // The histograms only get recorded when the document actually gets + // destroyed, which might not have happened yet due to GC/CC effects, etc. + // Try to force document destruction. + yield waitForDestroyedDocuments(); + + // Grab histograms again and compare. + let [histogram_page_after, histogram_document_after, + histogram_docs_after, histogram_toplevel_docs_after] = + yield grabHistogramsFromContent(use_counter_middlefix, histogram_page_before); + is(histogram_page_after, histogram_page_before + 1, + "page counts for " + use_counter_middlefix + " after are correct"); + is(histogram_document_after, histogram_document_before + 1, + "document counts for " + use_counter_middlefix + " after are correct"); + ok(histogram_toplevel_docs_after >= histogram_toplevel_docs_before + 1, + "top level document counts are correct"); + // 2 documents: one for the outer html page containing the element, and + // one for the SVG image itself. + ok(histogram_docs_after >= histogram_docs_before + 2, + "document counts are correct"); +}); + +var check_use_counter_direct = Task.async(function* (file, use_counter_middlefix, xfail=false) { + info("checking " + file + " with histogram " + use_counter_middlefix); + + let newTab = gBrowser.addTab( "about:blank"); + gBrowser.selectedTab = newTab; + newTab.linkedBrowser.stop(); + + // Hold on to the current values of the telemetry histograms we're + // interested in. + let [histogram_page_before, histogram_document_before, + histogram_docs_before, histogram_toplevel_docs_before] = + yield grabHistogramsFromContent(use_counter_middlefix); + + gBrowser.selectedBrowser.loadURI(gHttpTestRoot + file); + yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() { + Cu.import("resource://gre/modules/PromiseUtils.jsm"); + yield new Promise(resolve => { + let listener = () => { + removeEventListener("load", listener, true); + + let wu = content.window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + wu.forceUseCounterFlush(content.document); + + setTimeout(resolve, 0); + } + addEventListener("load", listener, true); + }); + }); + + // Tear down the page. + gBrowser.removeTab(newTab); + + // The histograms only get recorded when the document actually gets + // destroyed, which might not have happened yet due to GC/CC effects, etc. + // Try to force document destruction. + yield waitForDestroyedDocuments(); + + // Grab histograms again and compare. + let [histogram_page_after, histogram_document_after, + histogram_docs_after, histogram_toplevel_docs_after] = + yield grabHistogramsFromContent(use_counter_middlefix, histogram_page_before); + if (!xfail) { + is(histogram_page_after, histogram_page_before + 1, + "page counts for " + use_counter_middlefix + " after are correct"); + is(histogram_document_after, histogram_document_before + 1, + "document counts for " + use_counter_middlefix + " after are correct"); + } + ok(histogram_toplevel_docs_after >= histogram_toplevel_docs_before + 1, + "top level document counts are correct"); + ok(histogram_docs_after >= histogram_docs_before + 1, + "document counts are correct"); +}); diff --git a/dom/base/test/bug282547.sjs b/dom/base/test/bug282547.sjs new file mode 100644 index 000000000..8476a6172 --- /dev/null +++ b/dom/base/test/bug282547.sjs @@ -0,0 +1,9 @@ +function handleRequest(request, response) +{ + response.setStatusLine(null, 401, "Unauthorized"); + + response.setHeader("WWW-Authenticate", "basic realm=\"restricted\"", false); + + response.setHeader("Access-Control-Allow-Origin", "*", false); + response.setHeader("Access-Control-Allow-Credentials", "true", false); +} diff --git a/dom/base/test/bug298064-subframe.html b/dom/base/test/bug298064-subframe.html new file mode 100644 index 000000000..af497f590 --- /dev/null +++ b/dom/base/test/bug298064-subframe.html @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/dom/base/test/bug313646.txt b/dom/base/test/bug313646.txt new file mode 100644 index 000000000..150f5ea6d --- /dev/null +++ b/dom/base/test/bug313646.txt @@ -0,0 +1 @@ +Nothing to see here. Just need to request this file via XHR. diff --git a/dom/base/test/bug382113_object.html b/dom/base/test/bug382113_object.html new file mode 100644 index 000000000..935f00afd --- /dev/null +++ b/dom/base/test/bug382113_object.html @@ -0,0 +1,6 @@ + + + +

A Document in an <object>

+ + diff --git a/dom/base/test/bug403852_fileOpener.js b/dom/base/test/bug403852_fileOpener.js new file mode 100644 index 000000000..5e3b4936a --- /dev/null +++ b/dom/base/test/bug403852_fileOpener.js @@ -0,0 +1,17 @@ +var { classes: Cc, interfaces: Ci, utils: Cu } = Components; +Cu.importGlobalProperties(["File"]); + +var testFile = Cc["@mozilla.org/file/directory_service;1"] + .getService(Ci.nsIDirectoryService) + .QueryInterface(Ci.nsIProperties) + .get("ProfD", Ci.nsIFile); +testFile.append("prefs.js"); + +addMessageListener("file.open", function () { + sendAsyncMessage("file.opened", { + file: File.createFromNsIFile(testFile), + mtime: testFile.lastModifiedTime, + fileWithDate: File.createFromNsIFile(testFile, { lastModified: 123 }), + fileDate: 123, + }); +}); diff --git a/dom/base/test/bug419132.html b/dom/base/test/bug419132.html new file mode 100644 index 000000000..ab2934c2d --- /dev/null +++ b/dom/base/test/bug419132.html @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/dom/base/test/bug426308-redirect.sjs b/dom/base/test/bug426308-redirect.sjs new file mode 100644 index 000000000..331f31d96 --- /dev/null +++ b/dom/base/test/bug426308-redirect.sjs @@ -0,0 +1,4 @@ +function handleRequest(request, response) { + response.setStatusLine(null, 302, "Found"); + response.setHeader("Location", request.queryString, false); +} diff --git a/dom/base/test/bug435425.sjs b/dom/base/test/bug435425.sjs new file mode 100644 index 000000000..3ef8c656a --- /dev/null +++ b/dom/base/test/bug435425.sjs @@ -0,0 +1,24 @@ +const CC = Components.Constructor; +const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1", + "nsIBinaryInputStream", + "setInputStream"); + +function handleRequest(request, response) +{ + response.setHeader("Content-Type", "text/plain", false); + if (request.method == "GET") { + response.write(request.queryString); + } else { + var body = new BinaryInputStream(request.bodyInputStream); + + var avail; + var bytes = []; + + while ((avail = body.available()) > 0) + Array.prototype.push.apply(bytes, body.readByteArray(avail)); + + var data = String.fromCharCode.apply(null, bytes); + response.bodyOutputStream.write(data, data.length); + } +} + diff --git a/dom/base/test/bug435425_redirect.sjs b/dom/base/test/bug435425_redirect.sjs new file mode 100644 index 000000000..e8c8f2aa4 --- /dev/null +++ b/dom/base/test/bug435425_redirect.sjs @@ -0,0 +1,6 @@ +function handleRequest(request, response) +{ + response.setStatusLine(null, 302, "Moved"); + response.setHeader("Location", "http://nosuchdomain.localhost", false); +} + diff --git a/dom/base/test/bug444322.js b/dom/base/test/bug444322.js new file mode 100644 index 000000000..e69de29bb diff --git a/dom/base/test/bug444322.txt b/dom/base/test/bug444322.txt new file mode 100644 index 000000000..e69de29bb diff --git a/dom/base/test/bug444546.sjs b/dom/base/test/bug444546.sjs new file mode 100644 index 000000000..b98588d40 --- /dev/null +++ b/dom/base/test/bug444546.sjs @@ -0,0 +1,20 @@ +const CC = Components.Constructor; +const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1", + "nsIBinaryInputStream", + "setInputStream"); + +function handleRequest(request, response) +{ + response.setHeader("Content-Type", "text/plain", false); + + var body = new BinaryInputStream(request.bodyInputStream); + + var avail; + var bytes = []; + while ((avail = body.available()) > 0) + Array.prototype.push.apply(bytes, body.readByteArray(avail)); + + var data = String.fromCharCode.apply(null, bytes); + response.bodyOutputStream.write(data, data.length); +} + diff --git a/dom/base/test/bug455629-helper.svg b/dom/base/test/bug455629-helper.svg new file mode 100644 index 000000000..38098585e --- /dev/null +++ b/dom/base/test/bug455629-helper.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/dom/base/test/bug457746.sjs b/dom/base/test/bug457746.sjs new file mode 100644 index 000000000..d014df2ce --- /dev/null +++ b/dom/base/test/bug457746.sjs @@ -0,0 +1,11 @@ +function handleRequest(request, response) +{ + response.setHeader("Content-Type", "text/plain; charset=ISO-8859-1", false); + const body = [0xC1]; + var bos = Components.classes["@mozilla.org/binaryoutputstream;1"] + .createInstance(Components.interfaces.nsIBinaryOutputStream); + bos.setOutputStream(response.bodyOutputStream); + + bos.writeByteArray(body, body.length); +} + diff --git a/dom/base/test/bug461735-post-redirect.js b/dom/base/test/bug461735-post-redirect.js new file mode 100644 index 000000000..bae1963d3 --- /dev/null +++ b/dom/base/test/bug461735-post-redirect.js @@ -0,0 +1,3 @@ +var a = 0; +var b = 0; +c(); \ No newline at end of file diff --git a/dom/base/test/bug461735-redirect1.sjs b/dom/base/test/bug461735-redirect1.sjs new file mode 100644 index 000000000..a31eb066a --- /dev/null +++ b/dom/base/test/bug461735-redirect1.sjs @@ -0,0 +1,4 @@ +function handleRequest(request, response) { + response.setStatusLine(null, 302, "Found"); + response.setHeader("Location", "http://example.com/tests/dom/base/test/bug461735-post-redirect.js", false); +} diff --git a/dom/base/test/bug461735-redirect2.sjs b/dom/base/test/bug461735-redirect2.sjs new file mode 100644 index 000000000..cfd929978 --- /dev/null +++ b/dom/base/test/bug461735-redirect2.sjs @@ -0,0 +1,4 @@ +function handleRequest(request, response) { + response.setStatusLine(null, 302, "Found"); + response.setHeader("Location", "http://mochi.test:8888/tests/dom/base/test/bug461735-post-redirect.js", false); +} diff --git a/dom/base/test/bug466080.sjs b/dom/base/test/bug466080.sjs new file mode 100644 index 000000000..0d7c089b7 --- /dev/null +++ b/dom/base/test/bug466080.sjs @@ -0,0 +1,17 @@ + +function handleRequest(request, response) +{ + var body = "loaded"; + var origin = "localhost"; + try { + var origin = request.getHeader("Origin"); + } catch(e) {} + + response.setHeader("Access-Control-Allow-Origin", + origin, + false); + response.setHeader("Access-Control-Allow-Credentials", "true", false); + response.setHeader("Connection", "Keep-alive", false); + + response.bodyOutputStream.write(body, body.length); +} diff --git a/dom/base/test/bug466409-empty.css b/dom/base/test/bug466409-empty.css new file mode 100644 index 000000000..e69de29bb diff --git a/dom/base/test/bug466409-page.html b/dom/base/test/bug466409-page.html new file mode 100644 index 000000000..69ce7c227 --- /dev/null +++ b/dom/base/test/bug466409-page.html @@ -0,0 +1,12 @@ + + + + Bug + + + + + + diff --git a/dom/base/test/bug475156.sjs b/dom/base/test/bug475156.sjs new file mode 100644 index 000000000..e64863616 --- /dev/null +++ b/dom/base/test/bug475156.sjs @@ -0,0 +1,27 @@ +function handleRequest(request, response) +{ + if (request.queryString == "") + { + var etag = request.hasHeader("If-Match") ? request.getHeader("If-Match") : null; + if (!etag || etag == getState("etag")) + { + response.setStatusLine(request.httpVersion, 200, "Ok"); + response.setHeader("Content-Type", "text/html"); + response.setHeader("ETag", getState("etag")); + response.setHeader("Cache-control", "max-age=36000"); + response.write(getState("etag")); + } + else if (etag) + { + response.setStatusLine(request.httpVersion, 412, "Precondition Failed"); + } + } + else + { + var etag = request.queryString.match(/^etag=(.*)$/); + if (etag) + setState("etag", etag[1]); + + response.setStatusLine(request.httpVersion, 204, "No content"); + } +} diff --git a/dom/base/test/bug482935.sjs b/dom/base/test/bug482935.sjs new file mode 100644 index 000000000..daadb5ab2 --- /dev/null +++ b/dom/base/test/bug482935.sjs @@ -0,0 +1,12 @@ +function handleRequest(request, response) { + var body = "initial"; + + try { + body = request.getHeader("X-Request"); + } catch(e) { + body = "request.getHeader() failed! Exception: " + e; + } + + response.setHeader("Cache-Control", "max-age=3600"); + response.bodyOutputStream.write(body, body.length); +} diff --git a/dom/base/test/bug540854.sjs b/dom/base/test/bug540854.sjs new file mode 100644 index 000000000..3c147a135 --- /dev/null +++ b/dom/base/test/bug540854.sjs @@ -0,0 +1,19 @@ +const CC = Components.Constructor; +const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1", + "nsIBinaryInputStream", + "setInputStream"); + +function handleRequest(request, response) +{ + response.setHeader("Content-Type", "text/plain", false); + + var body = new BinaryInputStream(request.bodyInputStream); + + var avail; + var bytes = []; + while ((avail = body.available()) > 0) + Array.prototype.push.apply(bytes, body.readByteArray(avail)); + + var data = String.fromCharCode.apply(null, bytes); + response.bodyOutputStream.write(data, data.length); +} diff --git a/dom/base/test/bug578096LoadChromeScript.js b/dom/base/test/bug578096LoadChromeScript.js new file mode 100644 index 000000000..edb785491 --- /dev/null +++ b/dom/base/test/bug578096LoadChromeScript.js @@ -0,0 +1,16 @@ +var file; +Components.utils.importGlobalProperties(["File"]); + +addMessageListener("file.create", function (message) { + file = Components.classes["@mozilla.org/file/directory_service;1"] + .getService(Components.interfaces.nsIProperties) + .get("TmpD", Components.interfaces.nsIFile); + file.append("foo.txt"); + file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0o600); + sendAsyncMessage("file.created", File.createFromNsIFile(file)); +}); + +addMessageListener("file.remove", function (message) { + file.remove(false); + sendAsyncMessage("file.removed", {}); +}); diff --git a/dom/base/test/bug638112-response.txt b/dom/base/test/bug638112-response.txt new file mode 100644 index 000000000..9ce788da7 Binary files /dev/null and b/dom/base/test/bug638112-response.txt differ diff --git a/dom/base/test/bug638112.sjs b/dom/base/test/bug638112.sjs new file mode 100644 index 000000000..3b4f8331b --- /dev/null +++ b/dom/base/test/bug638112.sjs @@ -0,0 +1,26 @@ +function getInputStream(path) +{ + var file = Components.classes["@mozilla.org/file/directory_service;1"]. + getService(Components.interfaces.nsIProperties). + get("CurWorkD", Components.interfaces.nsILocalFile); + var fis = Components.classes['@mozilla.org/network/file-input-stream;1']. + createInstance(Components.interfaces.nsIFileInputStream); + var split = path.split("/"); + for(var i = 0; i < split.length; ++i) { + file.append(split[i]); + } + fis.init(file, -1, -1, false); + return fis; +} + + + +function handleRequest(request, response) +{ + var inputStream = getInputStream("tests/dom/base/test/bug638112-response.txt") + response.seizePower(); + response.bodyOutputStream.writeFrom(inputStream, + inputStream.available()); + response.finish(); + inputStream.close(); +} diff --git a/dom/base/test/bug696301-script-1.js b/dom/base/test/bug696301-script-1.js new file mode 100644 index 000000000..b139b2fdf --- /dev/null +++ b/dom/base/test/bug696301-script-1.js @@ -0,0 +1,3 @@ +var a = 0; +var global = "ran"; +c(); \ No newline at end of file diff --git a/dom/base/test/bug696301-script-1.js^headers^ b/dom/base/test/bug696301-script-1.js^headers^ new file mode 100644 index 000000000..cb762eff8 --- /dev/null +++ b/dom/base/test/bug696301-script-1.js^headers^ @@ -0,0 +1 @@ +Access-Control-Allow-Origin: * diff --git a/dom/base/test/bug696301-script-2.js b/dom/base/test/bug696301-script-2.js new file mode 100644 index 000000000..b139b2fdf --- /dev/null +++ b/dom/base/test/bug696301-script-2.js @@ -0,0 +1,3 @@ +var a = 0; +var global = "ran"; +c(); \ No newline at end of file diff --git a/dom/base/test/bug704320.sjs b/dom/base/test/bug704320.sjs new file mode 100644 index 000000000..dff77f4b3 --- /dev/null +++ b/dom/base/test/bug704320.sjs @@ -0,0 +1,299 @@ +var BASE_URL = 'example.com/tests/dom/base/test/bug704320.sjs'; + +function createTestUrl(schemeFrom, schemeTo, policy, action, type) { + return schemeTo + '://' + BASE_URL + '?' + + 'action=' + action + '&' + + 'scheme=' + schemeFrom + '-to-' + schemeTo + '&' + + 'policy=' + policy + '&' + + 'type=' + type; +} + +function create2ndLevelIframeUrl(schemeFrom, schemeTo, policy, type) { + return schemeFrom + '://' + BASE_URL + '?' + + 'action=create-2nd-level-iframe&' + + 'scheme-from=' + schemeFrom + '&' + + 'scheme-to=' + schemeTo + '&' + + 'policy=' + policy + '&' + + 'type=' + type; +} + +// Creates the following test cases for the specified scheme and referrer +// policy combination: +// +// @import +// font-face +// bg-url +// \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + '; +} + +function createIframedFormTest(schemeFrom, schemeTo, policy) { + var actionUrl = schemeTo + '://' + BASE_URL; + + return '\n\ + \n\ + \n\ + \n\ + \n\ + \n\ +
\n\ + \n\ + \n\ + \n\ + \n\ +
\n\ + \n\ + \n\ + '; +} + +function createIframedWindowLocationTest(schemeFrom, schemeTo, policy) { + var url = createTestUrl( + schemeFrom, schemeTo, policy, 'test', 'window.location'); + + return '\n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + '; +} + +function createPolicyTest(policy, optionalEarlierPolicy) { + var metaReferrerPolicyString = ''; + if (optionalEarlierPolicy && optionalEarlierPolicy != '') { + metaReferrerPolicyString += '\n'; + } + metaReferrerPolicyString += ''; + + return '\n\ + \n\ + \n\ + '+metaReferrerPolicyString+'\n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + '; +} + +function handleRequest(request, response) { + if (request.method == 'HEAD') { + // respond to a HEAD request with a 418 so that we can easily distinguish + // HSTS priming responses and ignore them + response.setStatusLine('1.1', 418, "I'm a teapot"); + return; + } + var sharedKey = 'bug704320.sjs'; + var params = request.queryString.split('&'); + var action = params[0].split('=')[1]; + + if (action === 'create-1st-level-iframe') { + // ?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin + var schemeFrom = params[1].split('=')[1]; + var schemeTo = params[2].split('=')[1]; + var policy = params[3].split('=')[1]; + var optionalEarlierPolicy = ''; + if (params[4]) { + optionalEarlierPolicy = params[4].split('=')[1]; + } + + response.setHeader('Content-Type', 'text/html; charset=utf-8', false); + response.setHeader('Cache-Control', 'no-cache', false); + response.write(createTest(schemeFrom, schemeTo, policy, optionalEarlierPolicy)); + } + else if (action === 'create-2nd-level-iframe') { + // ?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=origin&type=form" + var schemeFrom = params[1].split('=')[1]; + var schemeTo = params[2].split('=')[1]; + var policy = params[3].split('=')[1]; + var type = params[4].split('=')[1]; + + response.setHeader('Content-Type', 'text/html; charset=utf-8', false); + response.setHeader('Cache-Control', 'no-cache', false); + + if (type === 'form') { + response.write(createIframedFormTest(schemeFrom, schemeTo, policy)); + } else if (type === 'window.location') { + response.write(createIframedWindowLocationTest( + schemeFrom, schemeTo, policy)); + } + } + else if (action === 'test') { + // ?action=test&scheme=http-to-https&policy=origin&type=img + var scheme = params[1].split('=')[1]; + var policy = params[2].split('=')[1]; + var type = params[3].split('=')[1]; + var result = getSharedState(sharedKey); + + if (result === '') { + result = {}; + } else { + result = JSON.parse(result); + } + + if (!result[type]) { + result[type] = {}; + } + + if (!result[type][scheme]) { + result[type][scheme] = {}; + } + + if (request.hasHeader('Referer')) { + result[type][scheme][policy] = request.getHeader('Referer'); + } else { + result[type][scheme][policy] = ''; + } + + setSharedState(sharedKey, JSON.stringify(result)); + + if (type === 'link') { + var loc = 'https://example.com/tests/dom/base/test/file_bug704320_redirect.html'; + response.setStatusLine('1.1', 302, 'Found'); + response.setHeader('Location', loc, false); + } + + if (type === 'window.open') { + response.setHeader('Cache-Control', 'no-cache', false); + response.setHeader('Content-Type', 'text/html', false); + response.write(''); + } + } + else if (action === 'get-test-results') { + // ?action=get-result + response.setHeader('Cache-Control', 'no-cache', false); + response.setHeader('Content-Type', 'text/plain', false); + response.write(getSharedState(sharedKey)); + } + else if (action === 'generate-policy-test') { + // ?action=generate-policy-test&policy=b64-encoded-string + response.setHeader('Cache-Control', 'no-cache', false); + response.setHeader('Content-Type', 'text/html', false); + var policy = unescape(params[1].split('=')[1]); + var optionalEarlierPolicy = ''; + if (params[2]) { + optionalEarlierPolicy = params[2].split('=')[1]; + } + + response.write(createPolicyTest(policy, optionalEarlierPolicy)); + } +} diff --git a/dom/base/test/bug704320_counter.sjs b/dom/base/test/bug704320_counter.sjs new file mode 100644 index 000000000..907d22493 --- /dev/null +++ b/dom/base/test/bug704320_counter.sjs @@ -0,0 +1,94 @@ +// Handle counting loads for bug 704320. + +const SHARED_KEY="bug704320_counter"; +const DEFAULT_STATE = {'css': {'count': 0, 'referrers': []}, + 'img': {'count': 0, 'referrers': []}, + 'js': {'count': 0, 'referrers': []}}; +const TYPE_MAP = {'css': 'text/css', + 'js': 'application/javascript', + 'img': 'image/png', + 'html': 'text/html'}; + +// Writes an image to the response +function WriteOutImage(response) +{ + var file = Components.classes["@mozilla.org/file/directory_service;1"] + .getService(Components.interfaces.nsIProperties) + .get("CurWorkD", Components.interfaces.nsIFile); + + file.append("tests"); + file.append("image"); + file.append("test"); + file.append("mochitest"); + file.append('blue.png'); + + var fileStream = Components.classes['@mozilla.org/network/file-input-stream;1'] + .createInstance(Components.interfaces.nsIFileInputStream); + fileStream.init(file, 1, 0, false); + response.bodyOutputStream.writeFrom(fileStream, fileStream.available()); +} + +function handleRequest(request, response) +{ + var query = {}; + request.queryString.split('&').forEach(function (val) { + var [name, value] = val.split('='); + query[name] = unescape(value); + }); + + var referrerLevel = "none"; + if (request.hasHeader('Referer')) { + let referrer = request.getHeader('Referer'); + if (referrer.indexOf("bug704320") > 0) { + referrerLevel = "full"; + } else if (referrer == "http://mochi.test:8888/") { + referrerLevel = "origin"; + } + } + + var state = getSharedState(SHARED_KEY); + if (state === '') { + state = DEFAULT_STATE; + } else { + state = JSON.parse(state); + } + + response.setStatusLine(request.httpVersion, 200, "OK"); + + + //avoid confusing cache behaviors + response.setHeader("Cache-Control", "no-cache", false); + + if ("reset" in query) { + //reset server state + setSharedState(SHARED_KEY, JSON.stringify(DEFAULT_STATE)); + //serve any CSS that we want to use. + response.write(""); + return; + } + + if ("results" in query) { + response.setHeader("Content-Type", "text/javascript", false); + response.write(JSON.stringify(state)); + return; + } + + if ('type' in query) { + state[query.type].count++; + response.setHeader("Content-Type", TYPE_MAP[query.type], false); + if (state[query.type].referrers.indexOf(referrerLevel) < 0) { + state[query.type].referrers.push(referrerLevel); + } + + if (query.type == 'img') { + WriteOutImage(response); + } + } + + if ('content' in query) { + response.write(unescape(query['content'])); + } + + setSharedState(SHARED_KEY, JSON.stringify(state)); + return; +} diff --git a/dom/base/test/bug819051.sjs b/dom/base/test/bug819051.sjs new file mode 100644 index 000000000..07f6a041d --- /dev/null +++ b/dom/base/test/bug819051.sjs @@ -0,0 +1,7 @@ +function handleRequest(request, response) +{ + response.setStatusLine(request.httpVersion, 200, "Ok"); + response.setHeader("X-appended-result", request.getHeader("X-appended-to-this")); + response.setHeader("X-Accept-Result", request.getHeader("Accept")); + response.write(""); +} diff --git a/dom/base/test/chrome.ini b/dom/base/test/chrome.ini new file mode 100644 index 000000000..f7e67ef6b --- /dev/null +++ b/dom/base/test/chrome.ini @@ -0,0 +1,27 @@ +[DEFAULT] +skip-if = os == 'android' +support-files = + file_empty.html + file_bug945152.jar + file_bug945152_worker.js + file_bug1008126_worker.js + mozbrowser_api_utils.js + +[test_anonymousContent_xul_window.xul] +[test_bug715041.xul] +[test_bug715041_removal.xul] +[test_bug945152.html] +[test_bug1008126.html] +[test_bug1016960.html] +[test_copypaste.xul] +subsuite = clipboard +[test_domrequesthelper.xul] +[test_messagemanager_principal.html] +[test_messagemanager_send_principal.html] +skip-if = buildapp == 'mulet' +[test_mozbrowser_apis_allowed.html] +[test_navigator_resolve_identity_xrays.xul] +support-files = file_navigator_resolve_identity_xrays.xul +[test_sandboxed_blob_uri.html] +[test_sendQueryContentAndSelectionSetEvent.html] +[test_websocket_frame.html] diff --git a/dom/base/test/chrome/blockNoPlugins.xml b/dom/base/test/chrome/blockNoPlugins.xml new file mode 100644 index 000000000..e4e191b37 --- /dev/null +++ b/dom/base/test/chrome/blockNoPlugins.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dom/base/test/chrome/blockPluginHard.xml b/dom/base/test/chrome/blockPluginHard.xml new file mode 100644 index 000000000..24eb5bc6f --- /dev/null +++ b/dom/base/test/chrome/blockPluginHard.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/dom/base/test/chrome/bug418986-1.js b/dom/base/test/chrome/bug418986-1.js new file mode 100644 index 000000000..918d90775 --- /dev/null +++ b/dom/base/test/chrome/bug418986-1.js @@ -0,0 +1,73 @@ +// The main test function. +var test = function (isContent) { + SimpleTest.waitForExplicitFinish(); + + let { ww } = SpecialPowers.Services; + window.chromeWindow = ww.activeWindow; + + // The pairs of values expected to be the same when + // fingerprinting resistance is enabled. + let pairs = [ + ["screenX", 0], + ["screenY", 0], + ["mozInnerScreenX", 0], + ["mozInnerScreenY", 0], + ["screen.pixelDepth", 24], + ["screen.colorDepth", 24], + ["screen.availWidth", "innerWidth"], + ["screen.availHeight", "innerHeight"], + ["screen.left", 0], + ["screen.top", 0], + ["screen.availLeft", 0], + ["screen.availTop", 0], + ["screen.width", "innerWidth"], + ["screen.height", "innerHeight"], + ["screen.orientation.type", "'landscape-primary'"], + ["screen.orientation.angle", 0], + ["screen.mozOrientation", "'landscape-primary'"], + ["devicePixelRatio", 1] + ]; + + // checkPair: tests if members of pair [a, b] are equal when evaluated. + let checkPair = function (a, b) { + is(eval(a), eval(b), a + " should be equal to " + b); + }; + + // Returns generator object that iterates through pref values. + let prefVals = (for (prefVal of [false, true]) prefVal); + + // The main test function, runs until all pref values are exhausted. + let nextTest = function () { + let {value : prefValue, done} = prefVals.next(); + if (done) { + SimpleTest.finish(); + return; + } + SpecialPowers.pushPrefEnv({set : [["privacy.resistFingerprinting", prefValue]]}, + function () { + // We will be resisting fingerprinting if the pref is enabled, + // and we are in a content script (not chrome). + let resisting = prefValue && isContent; + // Check each of the pairs. + pairs.map(function ([item, onVal]) { + if (resisting) { + checkPair("window." + item, onVal); + } else { + if (!item.startsWith("moz")) { + checkPair("window." + item, "chromeWindow." + item); + } + } + }); + if (!resisting) { + // Hard to predict these values, but we can enforce constraints: + ok(window.mozInnerScreenX >= chromeWindow.mozInnerScreenX, + "mozInnerScreenX"); + ok(window.mozInnerScreenY >= chromeWindow.mozInnerScreenY, + "mozInnerScreenY"); + } + nextTest(); + }); + } + + nextTest(); +} diff --git a/dom/base/test/chrome/bug421622-referer.sjs b/dom/base/test/chrome/bug421622-referer.sjs new file mode 100644 index 000000000..850b320a2 --- /dev/null +++ b/dom/base/test/chrome/bug421622-referer.sjs @@ -0,0 +1,8 @@ +function handleRequest(request, response) { + response.setHeader("Content-Type", "text/plain", false); + response.setHeader("Cache-Control", "no-cache", false); + + var referer = request.hasHeader("Referer") ? request.getHeader("Referer") + : ""; + response.write("Referer: " + referer); +} diff --git a/dom/base/test/chrome/bug884693.sjs b/dom/base/test/chrome/bug884693.sjs new file mode 100644 index 000000000..30d4f8a03 --- /dev/null +++ b/dom/base/test/chrome/bug884693.sjs @@ -0,0 +1,8 @@ +function handleRequest(request, response) +{ + let [status, statusText, body] = request.queryString.split("&"); + response.setStatusLine(request.httpVersion, status, statusText); + response.setHeader("Content-Type", "text/xml", false); + response.setHeader("Content-Length", "" + body.length, false); + response.write(body); +} diff --git a/dom/base/test/chrome/chrome.ini b/dom/base/test/chrome/chrome.ini new file mode 100644 index 000000000..765bbd2df --- /dev/null +++ b/dom/base/test/chrome/chrome.ini @@ -0,0 +1,76 @@ +[DEFAULT] +skip-if = os == 'android' +support-files = + blockNoPlugins.xml + blockPluginHard.xml + bug418986-1.js + cpows_child.js + cpows_parent.xul + file_bug549682.xul + file_bug616841.xul + file_bug816340.xul + file_bug990812-1.xul + file_bug990812-2.xul + file_bug990812-3.xul + file_bug990812-4.xul + file_bug990812-5.xul + file_bug1139964.xul + file_bug1209621.xul + fileconstructor_file.png + frame_bug814638.xul + frame_registerElement_content.html + registerElement_ep.js + host_bug814638.xul + window_nsITextInputProcessor.xul + title_window.xul + window_swapFrameLoaders.xul + window_groupedSHistory.xul + +[test_bug120684.xul] +[test_bug206691.xul] +[test_bug289714.xul] +[test_bug339494.xul] +[test_bug357450.xul] +support-files = ../file_bug357450.js +[test_bug380418.html] +[test_bug380418.html^headers^] +[test_bug383430.html] +[test_bug418986-1.xul] +[test_bug421622.xul] +[test_bug429785.xul] +[test_bug430050.xul] +[test_bug467123.xul] +[test_bug549682.xul] +[test_bug571390.xul] +[test_bug1098074_throw_from_ReceiveMessage.xul] +[test_bug616841.xul] +[test_bug635835.xul] +[test_bug682305.html] +[test_bug683852.xul] +[test_bug752226-3.xul] +[test_bug752226-4.xul] +[test_bug765993.html] +[test_bug780199.xul] +[test_bug780529.xul] +[test_bug800386.xul] +[test_bug814638.xul] +[test_bug816340.xul] +[test_bug884693.xul] +[test_bug914381.html] +[test_bug990812.xul] +[test_bug1063837.xul] +[test_bug1139964.xul] +[test_bug1209621.xul] +[test_cpows.xul] +[test_registerElement_content.xul] +[test_registerElement_ep.xul] +[test_domparsing.xul] +[test_fileconstructor.xul] +[test_fileconstructor_tempfile.xul] +[test_nsITextInputProcessor.xul] +[test_range_getClientRectsAndTexts.html] +[test_title.xul] +[test_windowroot.xul] +[test_swapFrameLoaders.xul] +[test_groupedSHistory.xul] +[test_bug1339722.html] diff --git a/dom/base/test/chrome/cpows_child.js b/dom/base/test/chrome/cpows_child.js new file mode 100644 index 000000000..28ae4d1a7 --- /dev/null +++ b/dom/base/test/chrome/cpows_child.js @@ -0,0 +1,382 @@ +dump('loaded child cpow test\n'); + +var Cu = Components.utils; +var Ci = Components.interfaces; + +(function start() { + [is_remote] = sendRpcMessage("cpows:is_remote"); + + var tests = [ + parent_test, + error_reporting_test, + dom_test, + xray_test, + symbol_test, + compartment_test, + regexp_test, + postmessage_test, + sync_test, + async_test, + rpc_test, + lifetime_test, + cancel_test, + cancel_test2, + dead_test, + unsafe_test, + ]; + + function go() { + if (tests.length == 0) { + sendRpcMessage("cpows:done", {}); + return; + } + + var test = tests[0]; + tests.shift(); + test(function() { + go(); + }); + } + + go(); +})(); + +function ok(condition, message) { + dump('condition: ' + condition + ', ' + message + '\n'); + if (!condition) { + sendAsyncMessage("cpows:fail", { message: message }); + throw 'failed check: ' + message; + } +} + +var sync_obj; +var async_obj; + +function make_object() +{ + let o = { }; + o.i = 5; + o.b = true; + o.s = "hello"; + o.x = { i: 10 }; + o.f = function () { return 99; }; + o.ctor = function() { this.a = 3; } + + // Doing anything with this Proxy will throw. + var throwing = new Proxy({}, new Proxy({}, { + get: function (trap) { throw trap; } + })); + + let array = [1, 2, 3]; + + let for_json = { "n": 3, "a": array, "s": "hello", o: { "x": 10 } }; + + let proto = { data: 42 }; + let with_proto = Object.create(proto); + + let with_null_proto = Object.create(null); + + content.document.title = "Hello, Kitty"; + return { "data": o, + "throwing": throwing, + "document": content.document, + "array": array, + "for_json": for_json, + "with_proto": with_proto, + "with_null_proto": with_null_proto + }; +} + +function make_json() +{ + return { check: "ok" }; +} + +function parent_test(finish) +{ + function f(check_func) { + // Make sure this doesn't crash. + let array = new Uint32Array(10); + content.crypto.getRandomValues(array); + + let result = check_func(10); + ok(result == 20, "calling function in parent worked"); + return result; + } + + addMessageListener("cpows:from_parent", (msg) => { + let obj = msg.objects.obj; + ok(obj.a == 1, "correct value from parent"); + + // Test that a CPOW reference to a function in the chrome process + // is callable from unprivileged content. Greasemonkey uses this + // functionality. + let func = msg.objects.func; + let sb = Cu.Sandbox('http://www.example.com', {}); + sb.func = func; + ok(sb.eval('func()') == 101, "can call parent's function in child"); + + finish(); + }); + sendRpcMessage("cpows:parent_test", {}, {func: f}); +} + +function error_reporting_test(finish) { + sendRpcMessage("cpows:error_reporting_test", {}, {}); + finish(); +} + +function dom_test(finish) +{ + let element = content.document.createElement("div"); + element.id = "it_works"; + content.document.body.appendChild(element); + + sendRpcMessage("cpows:dom_test", {}, {element: element}); + Components.utils.schedulePreciseGC(function() { + sendRpcMessage("cpows:dom_test_after_gc"); + finish(); + }); +} + +function xray_test(finish) +{ + let element = content.document.createElement("div"); + element.wrappedJSObject.foo = "hello"; + + sendRpcMessage("cpows:xray_test", {}, {element: element}); + finish(); +} + +function symbol_test(finish) +{ + let iterator = Symbol.iterator; + let named = Symbol.for("cpow-test"); + + let object = { + [iterator]: iterator, + [named]: named, + }; + let test = ['a']; + sendRpcMessage("cpows:symbol_test", {}, {object: object, test: test}); + finish(); +} + +// Parent->Child references should go X->parent.privilegedJunkScope->child.privilegedJunkScope->Y +// Child->Parent references should go X->child.privilegedJunkScope->parent.unprivilegedJunkScope->Y +function compartment_test(finish) +{ + // This test primarily checks various compartment invariants for CPOWs, and + // doesn't make sense to run in-process. + if (!is_remote) { + finish(); + return; + } + + let sb = Cu.Sandbox('http://www.example.com', { wantGlobalProperties: ['XMLHttpRequest'] }); + sb.eval('function getUnprivilegedObject() { var xhr = new XMLHttpRequest(); xhr.expando = 42; return xhr; }'); + function testParentObject(obj) { + let results = []; + function is(a, b, msg) { results.push({ result: a === b ? "PASS" : "FAIL", message: msg }) }; + function ok(x, msg) { results.push({ result: x ? "PASS" : "FAIL", message: msg }) }; + + let cpowLocation = Cu.getCompartmentLocation(obj); + ok(/Privileged Junk/.test(cpowLocation), + "child->parent CPOWs should live in the privileged junk scope: " + cpowLocation); + is(obj(), 42, "child->parent CPOW is invokable"); + try { + obj.expando; + ok(false, "child->parent CPOW cannot access properties"); + } catch (e) { + ok(true, "child->parent CPOW cannot access properties"); + } + + return results; + } + sendRpcMessage("cpows:compartment_test", {}, { getUnprivilegedObject: sb.getUnprivilegedObject, + testParentObject: testParentObject }); + finish(); +} + +function regexp_test(finish) +{ + sendRpcMessage("cpows:regexp_test", {}, { regexp: /myRegExp/g }); + finish(); +} + +function postmessage_test(finish) +{ + sendRpcMessage("cpows:postmessage_test", {}, { win: content.window }); + finish(); +} + +function sync_test(finish) +{ + dump('beginning cpow sync test\n'); + sync_obj = make_object(); + sendRpcMessage("cpows:sync", + make_json(), + make_object()); + finish(); +} + +function async_test(finish) +{ + dump('beginning cpow async test\n'); + async_obj = make_object(); + sendAsyncMessage("cpows:async", + make_json(), + async_obj); + + addMessageListener("cpows:async_done", finish); +} + +var rpc_obj; + +function rpc_test(finish) +{ + dump('beginning cpow rpc test\n'); + rpc_obj = make_object(); + rpc_obj.data.reenter = function () { + sendRpcMessage("cpows:reenter", { }, { data: { valid: true } }); + return "ok"; + } + sendRpcMessage("cpows:rpc", + make_json(), + rpc_obj); + finish(); +} + +function lifetime_test(finish) +{ + if (!is_remote) { + // Only run this test when running out-of-process. Otherwise it + // will fail, since local CPOWs don't follow the same ownership + // rules. + finish(); + return; + } + + dump("beginning lifetime test\n"); + var obj = {"will_die": {"f": 1}}; + let [result] = sendRpcMessage("cpows:lifetime_test_1", {}, {obj: obj}); + ok(result == 10, "got sync result"); + ok(obj.wont_die.f == 2, "got reverse CPOW"); + obj.will_die = null; + Components.utils.schedulePreciseGC(function() { + addMessageListener("cpows:lifetime_test_3", (msg) => { + ok(obj.wont_die.f == 2, "reverse CPOW still works"); + finish(); + }); + sendRpcMessage("cpows:lifetime_test_2"); + }); +} + +function cancel_test(finish) +{ + if (!is_remote) { + // No point in doing this in single-process mode. + finish(); + return; + } + + let fin1 = false, fin2 = false; + + // CPOW from the parent runs f. When it sends a sync message, the + // CPOW is canceled. The parent starts running again immediately + // after the CPOW is canceled; f also continues running. + function f() { + let res = sendSyncMessage("cpows:cancel_sync_message"); + ok(res[0] == 12, "cancel_sync_message result correct"); + fin1 = true; + if (fin1 && fin2) finish(); + } + + sendAsyncMessage("cpows:cancel_test", null, {f: f}); + addMessageListener("cpows:cancel_test_done", msg => { + fin2 = true; + if (fin1 && fin2) finish(); + }); +} + +function cancel_test2(finish) +{ + if (!is_remote) { + // No point in doing this in single-process mode. + finish(); + return; + } + + let fin1 = false, fin2 = false; + + // CPOW from the parent runs f. When it does a sync XHR, the + // CPOW is canceled. The parent starts running again immediately + // after the CPOW is canceled; f also continues running. + function f() { + let req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]. + createInstance(Components.interfaces.nsIXMLHttpRequest); + let fin = false; + let reqListener = () => { + if (req.readyState != req.DONE) { + return; + } + ok(req.status == 200, "XHR succeeded"); + fin = true; + }; + + req.onload = reqListener; + req.open("get", "http://example.com", false); + req.send(null); + + ok(fin == true, "XHR happened"); + + fin1 = true; + if (fin1 && fin2) finish(); + } + + sendAsyncMessage("cpows:cancel_test2", null, {f: f}); + addMessageListener("cpows:cancel_test2_done", msg => { + fin2 = true; + if (fin1 && fin2) finish(); + }); +} + +function unsafe_test(finish) +{ + if (!is_remote) { + // Only run this test when running out-of-process. + finish(); + return; + } + + function f() {} + + sendAsyncMessage("cpows:unsafe", null, {f}); + addMessageListener("cpows:unsafe_done", msg => { + sendRpcMessage("cpows:safe", null, {f}); + addMessageListener("cpows:safe_done", finish); + }); +} + +function dead_test(finish) +{ + if (!is_remote) { + // Only run this test when running out-of-process. + finish(); + return; + } + + let gcTrigger = function() { + // Force the GC to dead-ify the thing. + content.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindowUtils) + .garbageCollect(); + } + + { + let thing = { value: "Gonna croak" }; + sendAsyncMessage("cpows:dead", null, { thing, gcTrigger }); + } + + addMessageListener("cpows:dead_done", finish); +} diff --git a/dom/base/test/chrome/cpows_parent.xul b/dom/base/test/chrome/cpows_parent.xul new file mode 100644 index 000000000..f633f0a79 --- /dev/null +++ b/dom/base/test/chrome/cpows_parent.xul @@ -0,0 +1,493 @@ + + + + + + + diff --git a/dom/base/test/chrome/file_bug1139964.xul b/dom/base/test/chrome/file_bug1139964.xul new file mode 100644 index 000000000..251334301 --- /dev/null +++ b/dom/base/test/chrome/file_bug1139964.xul @@ -0,0 +1,62 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug1209621.xul b/dom/base/test/chrome/file_bug1209621.xul new file mode 100644 index 000000000..05d81c3fb --- /dev/null +++ b/dom/base/test/chrome/file_bug1209621.xul @@ -0,0 +1,79 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug549682.xul b/dom/base/test/chrome/file_bug549682.xul new file mode 100644 index 000000000..667e7ca0b --- /dev/null +++ b/dom/base/test/chrome/file_bug549682.xul @@ -0,0 +1,226 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug616841.xul b/dom/base/test/chrome/file_bug616841.xul new file mode 100644 index 000000000..5110c0c9e --- /dev/null +++ b/dom/base/test/chrome/file_bug616841.xul @@ -0,0 +1,63 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug816340.xul b/dom/base/test/chrome/file_bug816340.xul new file mode 100644 index 000000000..bf980e437 --- /dev/null +++ b/dom/base/test/chrome/file_bug816340.xul @@ -0,0 +1,70 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug990812-1.xul b/dom/base/test/chrome/file_bug990812-1.xul new file mode 100644 index 000000000..1e085e76a --- /dev/null +++ b/dom/base/test/chrome/file_bug990812-1.xul @@ -0,0 +1,64 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug990812-2.xul b/dom/base/test/chrome/file_bug990812-2.xul new file mode 100644 index 000000000..957861cd4 --- /dev/null +++ b/dom/base/test/chrome/file_bug990812-2.xul @@ -0,0 +1,59 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug990812-3.xul b/dom/base/test/chrome/file_bug990812-3.xul new file mode 100644 index 000000000..6dc25c9bb --- /dev/null +++ b/dom/base/test/chrome/file_bug990812-3.xul @@ -0,0 +1,71 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug990812-4.xul b/dom/base/test/chrome/file_bug990812-4.xul new file mode 100644 index 000000000..c6d2c04e9 --- /dev/null +++ b/dom/base/test/chrome/file_bug990812-4.xul @@ -0,0 +1,68 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug990812-5.xul b/dom/base/test/chrome/file_bug990812-5.xul new file mode 100644 index 000000000..b00e05bc5 --- /dev/null +++ b/dom/base/test/chrome/file_bug990812-5.xul @@ -0,0 +1,77 @@ + + + + + + diff --git a/dom/base/test/chrome/file_bug990812.xul b/dom/base/test/chrome/file_bug990812.xul new file mode 100644 index 000000000..e14661fe9 --- /dev/null +++ b/dom/base/test/chrome/file_bug990812.xul @@ -0,0 +1,58 @@ + + + + + + diff --git a/dom/base/test/chrome/fileconstructor_file.png b/dom/base/test/chrome/fileconstructor_file.png new file mode 100644 index 000000000..51e8aaf38 Binary files /dev/null and b/dom/base/test/chrome/fileconstructor_file.png differ diff --git a/dom/base/test/chrome/frame_bug814638.xul b/dom/base/test/chrome/frame_bug814638.xul new file mode 100644 index 000000000..3543a42c3 --- /dev/null +++ b/dom/base/test/chrome/frame_bug814638.xul @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/dom/base/test/chrome/test_bug206691.xul b/dom/base/test/chrome/test_bug206691.xul new file mode 100644 index 000000000..f6496e2df --- /dev/null +++ b/dom/base/test/chrome/test_bug206691.xul @@ -0,0 +1,33 @@ + + + + + + + + + + Mozilla Bug 206691 + + + + + diff --git a/dom/base/test/chrome/test_bug289714.xul b/dom/base/test/chrome/test_bug289714.xul new file mode 100644 index 000000000..6d0804784 --- /dev/null +++ b/dom/base/test/chrome/test_bug289714.xul @@ -0,0 +1,33 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug339494.xul b/dom/base/test/chrome/test_bug339494.xul new file mode 100644 index 000000000..a81838450 --- /dev/null +++ b/dom/base/test/chrome/test_bug339494.xul @@ -0,0 +1,64 @@ + + + + + + + + + +Mozilla Bug 339494 +

+ +
+
+ + + + +
diff --git a/dom/base/test/chrome/test_bug357450.xul b/dom/base/test/chrome/test_bug357450.xul new file mode 100644 index 000000000..7723364ec --- /dev/null +++ b/dom/base/test/chrome/test_bug357450.xul @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + +Mozilla Bug 357450 + +

+ +
+ hmm + hmm + hmm + hmm + hmm +
+

+

+

+

+
+
+
+ + + + + + + + + + + + hmm + + + +
diff --git a/dom/base/test/chrome/test_bug380418.html b/dom/base/test/chrome/test_bug380418.html new file mode 100644 index 000000000..6fb524e76 --- /dev/null +++ b/dom/base/test/chrome/test_bug380418.html @@ -0,0 +1,37 @@ + + + + + Test for Bug 380418 + + + + +Mozilla Bug 380418 +

+ +
+
+
+ + diff --git a/dom/base/test/chrome/test_bug380418.html^headers^ b/dom/base/test/chrome/test_bug380418.html^headers^ new file mode 100644 index 000000000..5f8d4969c --- /dev/null +++ b/dom/base/test/chrome/test_bug380418.html^headers^ @@ -0,0 +1,4 @@ +Set-Cookie: test +Set-Cookie2: test2 +X-Dummy: test +Cache-Control: max-age=0 diff --git a/dom/base/test/chrome/test_bug383430.html b/dom/base/test/chrome/test_bug383430.html new file mode 100644 index 000000000..cfb8595ac --- /dev/null +++ b/dom/base/test/chrome/test_bug383430.html @@ -0,0 +1,38 @@ + + + + + Test for Bug 383430 + + + + +Mozilla Bug 383430 +

+ +
+
+
+ + diff --git a/dom/base/test/chrome/test_bug418986-1.xul b/dom/base/test/chrome/test_bug418986-1.xul new file mode 100644 index 000000000..aa0c34077 --- /dev/null +++ b/dom/base/test/chrome/test_bug418986-1.xul @@ -0,0 +1,26 @@ + + + + + + + + + + Mozilla Bug 418986 (Part 1) + + + + + + diff --git a/dom/base/test/chrome/test_bug421622.xul b/dom/base/test/chrome/test_bug421622.xul new file mode 100644 index 000000000..abbb9f2d5 --- /dev/null +++ b/dom/base/test/chrome/test_bug421622.xul @@ -0,0 +1,35 @@ + + + + + + + + + + Mozilla Bug 421622 + + + + + diff --git a/dom/base/test/chrome/test_bug429785.xul b/dom/base/test/chrome/test_bug429785.xul new file mode 100644 index 000000000..5d8af4555 --- /dev/null +++ b/dom/base/test/chrome/test_bug429785.xul @@ -0,0 +1,61 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug430050.xul b/dom/base/test/chrome/test_bug430050.xul new file mode 100644 index 000000000..b5948fad0 --- /dev/null +++ b/dom/base/test/chrome/test_bug430050.xul @@ -0,0 +1,50 @@ + + + + + + + + + + Mozilla Bug 430050 + + + + + + diff --git a/dom/base/test/chrome/test_bug467123.xul b/dom/base/test/chrome/test_bug467123.xul new file mode 100644 index 000000000..d44cbe4b9 --- /dev/null +++ b/dom/base/test/chrome/test_bug467123.xul @@ -0,0 +1,35 @@ + + + + + + + + + + Mozilla Bug 467123 + + + + + diff --git a/dom/base/test/chrome/test_bug549682.xul b/dom/base/test/chrome/test_bug549682.xul new file mode 100644 index 000000000..8c7376bb5 --- /dev/null +++ b/dom/base/test/chrome/test_bug549682.xul @@ -0,0 +1,33 @@ + + + + + + + + + + Mozilla Bug 549682 + + + + + diff --git a/dom/base/test/chrome/test_bug571390.xul b/dom/base/test/chrome/test_bug571390.xul new file mode 100644 index 000000000..aebb2cfc8 --- /dev/null +++ b/dom/base/test/chrome/test_bug571390.xul @@ -0,0 +1,42 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug616841.xul b/dom/base/test/chrome/test_bug616841.xul new file mode 100644 index 000000000..9b04eb3b1 --- /dev/null +++ b/dom/base/test/chrome/test_bug616841.xul @@ -0,0 +1,31 @@ + + + + + + + + + + Mozilla Bug 616841 + + + + + diff --git a/dom/base/test/chrome/test_bug635835.xul b/dom/base/test/chrome/test_bug635835.xul new file mode 100644 index 000000000..e06541fb4 --- /dev/null +++ b/dom/base/test/chrome/test_bug635835.xul @@ -0,0 +1,37 @@ + + + + + + + + + + Mozilla Bug 635835 + + + + + diff --git a/dom/base/test/chrome/test_bug682305.html b/dom/base/test/chrome/test_bug682305.html new file mode 100644 index 000000000..64f36c907 --- /dev/null +++ b/dom/base/test/chrome/test_bug682305.html @@ -0,0 +1,175 @@ + + + + + XMLHttpRequest send and channel implemented in JS + + + + + +Mozilla Bug 682305 +

+ +
+
+
+ + diff --git a/dom/base/test/chrome/test_bug683852.xul b/dom/base/test/chrome/test_bug683852.xul new file mode 100644 index 000000000..cebc8f358 --- /dev/null +++ b/dom/base/test/chrome/test_bug683852.xul @@ -0,0 +1,69 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug752226-3.xul b/dom/base/test/chrome/test_bug752226-3.xul new file mode 100644 index 000000000..ed3d5c60c --- /dev/null +++ b/dom/base/test/chrome/test_bug752226-3.xul @@ -0,0 +1,28 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug752226-4.xul b/dom/base/test/chrome/test_bug752226-4.xul new file mode 100644 index 000000000..d2335f9b8 --- /dev/null +++ b/dom/base/test/chrome/test_bug752226-4.xul @@ -0,0 +1,28 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug765993.html b/dom/base/test/chrome/test_bug765993.html new file mode 100644 index 000000000..b297c8906 --- /dev/null +++ b/dom/base/test/chrome/test_bug765993.html @@ -0,0 +1,61 @@ + + + + + Test for Bug 765993 + + + + + +Mozilla Bug 765993 + + + +

+ +
+
+
+ + diff --git a/dom/base/test/chrome/test_bug780199.xul b/dom/base/test/chrome/test_bug780199.xul new file mode 100644 index 000000000..649538bec --- /dev/null +++ b/dom/base/test/chrome/test_bug780199.xul @@ -0,0 +1,51 @@ + + + + + + + + diff --git a/dom/base/test/chrome/test_bug780529.xul b/dom/base/test/chrome/test_bug780529.xul new file mode 100644 index 000000000..f28ed4b78 --- /dev/null +++ b/dom/base/test/chrome/test_bug780529.xul @@ -0,0 +1,40 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug800386.xul b/dom/base/test/chrome/test_bug800386.xul new file mode 100644 index 000000000..369e6ed81 --- /dev/null +++ b/dom/base/test/chrome/test_bug800386.xul @@ -0,0 +1,68 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug814638.xul b/dom/base/test/chrome/test_bug814638.xul new file mode 100644 index 000000000..f507099c9 --- /dev/null +++ b/dom/base/test/chrome/test_bug814638.xul @@ -0,0 +1,64 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug816340.xul b/dom/base/test/chrome/test_bug816340.xul new file mode 100644 index 000000000..c6ad12b42 --- /dev/null +++ b/dom/base/test/chrome/test_bug816340.xul @@ -0,0 +1,31 @@ + + + + + + + + + + Mozilla Bug 816340 + + + + + diff --git a/dom/base/test/chrome/test_bug884693.xul b/dom/base/test/chrome/test_bug884693.xul new file mode 100644 index 000000000..6a2be9d73 --- /dev/null +++ b/dom/base/test/chrome/test_bug884693.xul @@ -0,0 +1,67 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_bug914381.html b/dom/base/test/chrome/test_bug914381.html new file mode 100644 index 000000000..aa463ca9e --- /dev/null +++ b/dom/base/test/chrome/test_bug914381.html @@ -0,0 +1,48 @@ + + + + + + Test for Bug 914381 + + + + +Mozilla Bug 914381 +

+ +
+
+
+ + diff --git a/dom/base/test/chrome/test_bug990812.xul b/dom/base/test/chrome/test_bug990812.xul new file mode 100644 index 000000000..4be173429 --- /dev/null +++ b/dom/base/test/chrome/test_bug990812.xul @@ -0,0 +1,43 @@ + + + + + + + + + + Mozilla Bug 990812 + + + + + diff --git a/dom/base/test/chrome/test_cpows.xul b/dom/base/test/chrome/test_cpows.xul new file mode 100644 index 000000000..acbbebb96 --- /dev/null +++ b/dom/base/test/chrome/test_cpows.xul @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/dom/base/test/chrome/test_domparsing.xul b/dom/base/test/chrome/test_domparsing.xul new file mode 100644 index 000000000..c2a10710d --- /dev/null +++ b/dom/base/test/chrome/test_domparsing.xul @@ -0,0 +1,144 @@ + + + + + + diff --git a/dom/base/test/chrome/test_fileconstructor.xul b/dom/base/test/chrome/test_fileconstructor.xul new file mode 100644 index 000000000..2399b6ef8 --- /dev/null +++ b/dom/base/test/chrome/test_fileconstructor.xul @@ -0,0 +1,72 @@ + + + + + + + + + + + Mozilla Bug 607114 +

+ +
+
+ + + + +
diff --git a/dom/base/test/chrome/test_fileconstructor_tempfile.xul b/dom/base/test/chrome/test_fileconstructor_tempfile.xul new file mode 100644 index 000000000..e2ff3a0d2 --- /dev/null +++ b/dom/base/test/chrome/test_fileconstructor_tempfile.xul @@ -0,0 +1,93 @@ + + + + + + + + + + + Mozilla Bug 982874 +

+ +
+
+ + + + +
diff --git a/dom/base/test/chrome/test_groupedSHistory.xul b/dom/base/test/chrome/test_groupedSHistory.xul new file mode 100644 index 000000000..23cd4c6ad --- /dev/null +++ b/dom/base/test/chrome/test_groupedSHistory.xul @@ -0,0 +1,32 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_nsITextInputProcessor.xul b/dom/base/test/chrome/test_nsITextInputProcessor.xul new file mode 100644 index 000000000..23ad3e249 --- /dev/null +++ b/dom/base/test/chrome/test_nsITextInputProcessor.xul @@ -0,0 +1,30 @@ + + + + + + + + +

+

+ +
+
+ + + +
diff --git a/dom/base/test/chrome/test_range_getClientRectsAndTexts.html b/dom/base/test/chrome/test_range_getClientRectsAndTexts.html new file mode 100644 index 000000000..5d8dc5a6e --- /dev/null +++ b/dom/base/test/chrome/test_range_getClientRectsAndTexts.html @@ -0,0 +1,60 @@ + + + + + + + + + +
All on one line
+ +
Implicit +break in one line
+ +
Two
lines
+ +
Line with simple nested text
+ +
Line with complex, more deeply nested text
+ +
Line with inline image
+ + + \ No newline at end of file diff --git a/dom/base/test/chrome/test_registerElement_content.xul b/dom/base/test/chrome/test_registerElement_content.xul new file mode 100644 index 000000000..9a918f2d7 --- /dev/null +++ b/dom/base/test/chrome/test_registerElement_content.xul @@ -0,0 +1,55 @@ + + + + + + + + + + Mozilla Bug 1130028 + + + + + + diff --git a/dom/base/test/chrome/test_registerElement_ep.xul b/dom/base/test/chrome/test_registerElement_ep.xul new file mode 100644 index 000000000..6f1745268 --- /dev/null +++ b/dom/base/test/chrome/test_registerElement_ep.xul @@ -0,0 +1,44 @@ + + + + + + + + + + Mozilla Bug 1130028 + + + + + + diff --git a/dom/base/test/chrome/test_swapFrameLoaders.xul b/dom/base/test/chrome/test_swapFrameLoaders.xul new file mode 100644 index 000000000..2f69d390f --- /dev/null +++ b/dom/base/test/chrome/test_swapFrameLoaders.xul @@ -0,0 +1,25 @@ + + + + + + + diff --git a/dom/base/test/chrome/test_title.xul b/dom/base/test/chrome/test_title.xul new file mode 100644 index 000000000..6fa145bc6 --- /dev/null +++ b/dom/base/test/chrome/test_title.xul @@ -0,0 +1,30 @@ + + + + + + + + + + Mozilla Bug 481777 + + + + + diff --git a/dom/base/test/chrome/test_windowroot.xul b/dom/base/test/chrome/test_windowroot.xul new file mode 100644 index 000000000..c9ff7f0b5 --- /dev/null +++ b/dom/base/test/chrome/test_windowroot.xul @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/dom/base/test/chrome/title_window.xul b/dom/base/test/chrome/title_window.xul new file mode 100644 index 000000000..5db180f8b --- /dev/null +++ b/dom/base/test/chrome/title_window.xul @@ -0,0 +1,198 @@ + + + + +
+

+ +
+
+ + + + +
diff --git a/dom/base/test/chrome/window_swapFrameLoaders.xul b/dom/base/test/chrome/window_swapFrameLoaders.xul new file mode 100644 index 000000000..3deae2e63 --- /dev/null +++ b/dom/base/test/chrome/window_swapFrameLoaders.xul @@ -0,0 +1,258 @@ + + + + + + + + + diff --git a/dom/base/test/copypaste.js b/dom/base/test/copypaste.js new file mode 100644 index 000000000..6fa3cb909 --- /dev/null +++ b/dom/base/test/copypaste.js @@ -0,0 +1,412 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +function modifySelection(s) { + var g = window.getSelection(); + var l = g.getRangeAt(0); + var d = document.createElement("p"); + d.innerHTML = s; + d.appendChild(l.cloneContents()); + + var e = document.createElement("div"); + document.body.appendChild(e); + e.appendChild(d); + var a = document.createRange(); + a.selectNode(d); + g.removeAllRanges(); + g.addRange(a); + window.setTimeout(function () { + e.parentNode.removeChild(e); + g.removeAllRanges(); + g.addRange(l); + }, 0) +} + +function getLoadContext() { + var Ci = SpecialPowers.Ci; + return SpecialPowers.wrap(window).QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsILoadContext); +} + +function testCopyPaste (isXHTML) { + var suppressUnicodeCheckIfHidden = !!isXHTML; + var suppressHTMLCheck = !!isXHTML; + + var webnav = SpecialPowers.wrap(window).QueryInterface(SpecialPowers.Ci.nsIInterfaceRequestor) + .getInterface(SpecialPowers.Ci.nsIWebNavigation) + + var docShell = webnav.QueryInterface(SpecialPowers.Ci.nsIDocShell); + + var documentViewer = docShell.contentViewer + .QueryInterface(SpecialPowers.Ci.nsIContentViewerEdit); + + var clipboard = SpecialPowers.Services.clipboard; + + var textarea = SpecialPowers.wrap(document.getElementById('input')); + + function copySelectionToClipboard(suppressUnicodeCheck) { + documentViewer.copySelection(); + if (!suppressUnicodeCheck) + ok(clipboard.hasDataMatchingFlavors(["text/unicode"], 1,1), "check text/unicode"); + if (!suppressHTMLCheck) + ok(clipboard.hasDataMatchingFlavors(["text/html"], 1,1), "check text/html"); + } + function clear(node, suppressUnicodeCheck) { + textarea.blur(); + clipboard.emptyClipboard(1); + var sel = window.getSelection(); + sel.removeAllRanges(); + } + function copyToClipboard(node, suppressUnicodeCheck) { + clear(); + var r = document.createRange(); + r.selectNode(node); + window.getSelection().addRange(r); + copySelectionToClipboard(suppressUnicodeCheck); + } + function addRange(startNode,startIndex,endNode,endIndex) { + var sel = window.getSelection(); + var r = document.createRange(); + r.setStart(startNode,startIndex) + r.setEnd(endNode,endIndex) + sel.addRange(r); + } + function copyRangeToClipboard(startNode,startIndex,endNode,endIndex,suppressUnicodeCheck) { + clear(); + addRange(startNode,startIndex,endNode,endIndex); + copySelectionToClipboard(suppressUnicodeCheck); + } + function copyChildrenToClipboard(id) { + clear(); + window.getSelection().selectAllChildren(document.getElementById(id)); + copySelectionToClipboard(); + } + function getClipboardData(mime) { + var transferable = SpecialPowers.Cc['@mozilla.org/widget/transferable;1'] + .createInstance(SpecialPowers.Ci.nsITransferable); + transferable.init(getLoadContext()); + transferable.addDataFlavor(mime); + clipboard.getData(transferable, 1); + var data = SpecialPowers.createBlankObject(); + transferable.getTransferData(mime, data, {}) ; + return data; + } + function testHtmlClipboardValue(mime, expected) { + // For Windows, navigator.platform returns "Win32". + var expectedValue = expected; + if (navigator.platform.indexOf("Win") >= 0) { + // Windows has extra content. + var expectedValue = "\n" + + expected.replace(/\n/g, '\n') + + "\n\n"; + } + testClipboardValue(mime, expectedValue); + } + function testClipboardValue(mime, expected) { + if (suppressHTMLCheck && mime == "text/html") + return null; + var data = SpecialPowers.wrap(getClipboardData(mime)); + is (data.value == null ? data.value : + data.value.QueryInterface(SpecialPowers.Ci.nsISupportsString).data, + expected, + mime + " value in the clipboard"); + return data.value; + } + function testPasteText(expected) { + textarea.value=""; + textarea.focus(); + textarea.editor.paste(1); + is(textarea.value, expected, "value of the textarea after the paste"); + } + function testPasteHTML(id, expected) { + var contentEditable = $(id); + contentEditable.focus(); + synthesizeKey("v", {accelKey: true}); + is(contentEditable.innerHTML, expected, id+".innerHtml after the paste"); + } + function testSelectionToString(expected) { + is(window.getSelection().toString().replace(/\r\n/g,"\n"), expected, "Selection.toString"); + } + function testInnerHTML(id, expected) { + var value = document.getElementById(id).innerHTML; + is(value, expected, id + ".innerHTML"); + } + function testEmptyChildren(id) { + copyChildrenToClipboard(id); + testSelectionToString(""); + testClipboardValue("text/unicode", null); + testClipboardValue("text/html", null); + testPasteText(""); + } + + copyChildrenToClipboard("draggable"); + testSelectionToString("This is a draggable bit of text."); + testClipboardValue("text/unicode", + "This is a draggable bit of text."); + testHtmlClipboardValue("text/html", + "
This is a draggable bit of text.
"); + testPasteText("This is a draggable bit of text."); + + copyChildrenToClipboard("alist"); + testSelectionToString(" bla\n\n foo\n bar\n\n"); + testClipboardValue("text/unicode", " bla\n\n foo\n bar\n\n"); + testHtmlClipboardValue("text/html", "
\n bla\n
    \n
  • foo
  • \n \n
  • bar
  • \n
\n
"); + testPasteText(" bla\n\n foo\n bar\n\n"); + + copyChildrenToClipboard("blist"); + testSelectionToString(" mozilla\n\n foo\n bar\n\n"); + testClipboardValue("text/unicode", " mozilla\n\n foo\n bar\n\n"); + testHtmlClipboardValue("text/html", "
\n mozilla\n
    \n
  1. foo
  2. \n \n
  3. bar
  4. \n
\n
"); + testPasteText(" mozilla\n\n foo\n bar\n\n"); + + copyChildrenToClipboard("clist"); + testSelectionToString(" mzla\n\n foo\n bazzinga!\n bar\n\n"); + testClipboardValue("text/unicode", " mzla\n\n foo\n bazzinga!\n bar\n\n"); + testHtmlClipboardValue("text/html", "
\n mzla\n
    \n
  • foo
      \n
    • bazzinga!
    • \n
  • \n \n
  • bar
  • \n
\n
"); + testPasteText(" mzla\n\n foo\n bazzinga!\n bar\n\n"); + + copyChildrenToClipboard("div4"); + testSelectionToString(" Tt t t "); + testClipboardValue("text/unicode", " Tt t t "); + if (isXHTML) { + testHtmlClipboardValue("text/html", "
\n T\n
"); + testInnerHTML("div4", "\n T\n"); + } + else { + testHtmlClipboardValue("text/html", "
\n T\n
"); + testInnerHTML("div4", "\n T\n"); + } + testPasteText(" Tt t t "); + + copyChildrenToClipboard("div5"); + testSelectionToString(" T "); + testClipboardValue("text/unicode", " T "); + if (isXHTML) { + testHtmlClipboardValue("text/html", "
\n T\n
"); + testInnerHTML("div5", "\n T\n"); + } + else { + testHtmlClipboardValue("text/html", "
\n T\n
"); + testInnerHTML("div5", "\n T\n"); + } + testPasteText(" T "); + + copyRangeToClipboard($("div6").childNodes[0],0, $("div6").childNodes[1],1,suppressUnicodeCheckIfHidden); + testSelectionToString(""); +// START Disabled due to bug 564688 +if (false) { + testClipboardValue("text/unicode", ""); + testClipboardValue("text/html", ""); +} +// END Disabled due to bug 564688 + testInnerHTML("div6", "div6"); + + copyRangeToClipboard($("div7").childNodes[0],0, $("div7").childNodes[0],4,suppressUnicodeCheckIfHidden); + testSelectionToString(""); +// START Disabled due to bug 564688 +if (false) { + testClipboardValue("text/unicode", ""); + testClipboardValue("text/html", ""); +} +// END Disabled due to bug 564688 + testInnerHTML("div7", "div7"); + + copyRangeToClipboard($("div8").childNodes[0],0, $("div8").childNodes[0],4,suppressUnicodeCheckIfHidden); + testSelectionToString(""); +// START Disabled due to bug 564688 +if (false) { + testClipboardValue("text/unicode", ""); + testClipboardValue("text/html", ""); +} +// END Disabled due to bug 564688 + testInnerHTML("div8", "div8"); + + copyRangeToClipboard($("div9").childNodes[0],0, $("div9").childNodes[0],4,suppressUnicodeCheckIfHidden); + testSelectionToString("div9"); + testClipboardValue("text/unicode", "div9"); + testHtmlClipboardValue("text/html", "div9"); + testInnerHTML("div9", "div9"); + + copyToClipboard($("div10"), suppressUnicodeCheckIfHidden); + testSelectionToString(""); + testInnerHTML("div10", "div10"); + + copyToClipboard($("div10").firstChild, suppressUnicodeCheckIfHidden); + testSelectionToString(""); + + copyRangeToClipboard($("div10").childNodes[0],0, $("div10").childNodes[0],1,suppressUnicodeCheckIfHidden); + testSelectionToString(""); + + copyRangeToClipboard($("div10").childNodes[1],0, $("div10").childNodes[1],1,suppressUnicodeCheckIfHidden); + testSelectionToString(""); + + if (!isXHTML) { + // ============ copy/paste multi-range selection (bug 1123505) + // with text start node + var sel = window.getSelection(); + sel.removeAllRanges(); + var r = document.createRange(); + var ul = $('ul1'); + var parent = ul.parentNode; + r.setStart(parent, 0); + r.setEnd(parent.firstChild, 15); // the end of "Copy..." + sel.addRange(r); + + r = document.createRange(); + r.setStart(ul, 1); // before the space inside the UL + r.setEnd(parent, 2); // after the UL + sel.addRange(r); + copySelectionToClipboard(true); + testPasteHTML('contentEditable1', 'Copy1then Paste'); + + // with text end node + var sel = window.getSelection(); + sel.removeAllRanges(); + var r = document.createRange(); + var ul = $('ul2'); + var parent = ul.parentNode; + r.setStart(parent, 0); + r.setEnd(ul, 1); // after the space + sel.addRange(r); + + r = document.createRange(); + r.setStart(parent.childNodes[1], 0); // the start of "Copy..." + r.setEnd(parent, 2); + sel.addRange(r); + copySelectionToClipboard(true); + testPasteHTML('contentEditable2', 'Copy2then Paste'); + + // with text end node and non-empty start + var sel = window.getSelection(); + sel.removeAllRanges(); + var r = document.createRange(); + var ul = $('ul3'); + var parent = ul.parentNode; + r.setStart(parent, 0); + r.setEnd(ul, 1); // after the space + sel.addRange(r); + + r = document.createRange(); + r.setStart(parent.childNodes[1], 0); // the start of "Copy..." + r.setEnd(parent, 2); + sel.addRange(r); + copySelectionToClipboard(true); + testPasteHTML('contentEditable3', '
  • \n
Copy3then Paste'); + + // with elements of different depth + var sel = window.getSelection(); + sel.removeAllRanges(); + var r = document.createRange(); + var div1 = $('div1s'); + var parent = div1.parentNode; + r.setStart(parent, 0); + r.setEnd(document.getElementById('div1se1'), 1); // after the "inner" DIV + sel.addRange(r); + + r = document.createRange(); + r.setStart(div1.childNodes[1], 0); // the start of "after" + r.setEnd(parent, 1); + sel.addRange(r); + copySelectionToClipboard(true); + testPasteHTML('contentEditable4', '
before
after
'); + + // with elements of different depth, and a text node at the end + var sel = window.getSelection(); + sel.removeAllRanges(); + var r = document.createRange(); + var div1 = $('div2s'); + var parent = div1.parentNode; + r.setStart(parent, 0); + r.setEnd(document.getElementById('div2se1'), 1); // after the "inner" DIV + sel.addRange(r); + + r = document.createRange(); + r.setStart(div1.childNodes[1], 0); // the start of "after" + r.setEnd(parent, 1); + sel.addRange(r); + copySelectionToClipboard(true); + testPasteHTML('contentEditable5', '
before
after
'); + + // crash test for bug 1127835 + var e1 = document.getElementById('1127835crash1'); + var e2 = document.getElementById('1127835crash2'); + var e3 = document.getElementById('1127835crash3'); + var t1 = e1.childNodes[0]; + var t3 = e3.childNodes[0]; + + var sel = window.getSelection(); + sel.removeAllRanges(); + + var r = document.createRange(); + r.setStart(t1, 1); + r.setEnd(e2, 0); + sel.addRange(r); + + r = document.createRange(); + r.setStart(e2, 1); + r.setEnd(t3, 0); + sel.addRange(r); + copySelectionToClipboard(true); + testPasteHTML('contentEditable6', '
\n

'); + } + + // ============ copy/paste test from/to a textarea + + var val = "1\n 2\n 3"; + textarea.value=val; + textarea.select(); + textarea.editor.copy(); + + textarea.value=""; + textarea.editor.paste(1); + is(textarea.value, val); + textarea.value=""; + + // ============ NOSCRIPT should not be copied + + copyChildrenToClipboard("div13"); + testSelectionToString("__"); + testClipboardValue("text/unicode", "__"); + testHtmlClipboardValue("text/html", "
__
"); + testPasteText("__"); + + // ============ converting cell boundaries to tabs in tables + + copyToClipboard($("tr1")); + testClipboardValue("text/unicode", "foo\tbar"); + + if (!isXHTML) { + // ============ spanning multiple rows + + copyRangeToClipboard($("tr2"),0,$("tr3"),0); + testClipboardValue("text/unicode", "1\t2\n3\t4\n"); + testHtmlClipboardValue("text/html", '
12
34
'); + + // ============ spanning multiple rows in multi-range selection + + clear(); + addRange($("tr2"),0,$("tr2"),2); + addRange($("tr3"),0,$("tr3"),2); + copySelectionToClipboard(); + testClipboardValue("text/unicode", "1\t2\n5\t6"); + testHtmlClipboardValue("text/html", '
12
56
'); + } + + // ============ manipulating Selection in oncopy + + copyRangeToClipboard($("div11").childNodes[0],0, $("div11").childNodes[1],2); + testClipboardValue("text/unicode", "Xdiv11"); + testHtmlClipboardValue("text/html", "

Xdiv11

"); + setTimeout(function(){testSelectionToString("div11")},0); + + setTimeout(function(){ + copyRangeToClipboard($("div12").childNodes[0],0, $("div12").childNodes[1],2); + testClipboardValue("text/unicode", "Xdiv12"); + testHtmlClipboardValue("text/html", "

Xdiv12

"); + setTimeout(function(){ + testSelectionToString("div12"); + setTimeout(SimpleTest.finish,0); + },0); + },0); +} diff --git a/dom/base/test/create_file_objects.js b/dom/base/test/create_file_objects.js new file mode 100644 index 000000000..273adc2cd --- /dev/null +++ b/dom/base/test/create_file_objects.js @@ -0,0 +1,10 @@ +Components.utils.importGlobalProperties(['File']); + +addMessageListener("create-file-objects", function(message) { + let files = [] + for (fileName of message.fileNames) { + files.push(File.createFromFileName(fileName)); + } + + sendAsyncMessage("created-file-objects", files); +}); diff --git a/dom/base/test/delayedServerEvents.sjs b/dom/base/test/delayedServerEvents.sjs new file mode 100644 index 000000000..c2d2f5dd9 --- /dev/null +++ b/dom/base/test/delayedServerEvents.sjs @@ -0,0 +1,42 @@ +// this will take strings_to_send.length*500 ms = 5 sec + +var timer = null; +var strings_to_send = ["retry:999999999\ndata\r\n\nda", "ta", ":", "de", "layed1\n\n", + "", + "", + "data:delayed2\n\n", "", ""]; +var resp = null; + +function sendNextString() +{ + if (strings_to_send.length == 0) { + timer.cancel(); + resp.finish(); + timer = null; + resp = null; + return; + } + + resp.write(strings_to_send[0]); + strings_to_send = strings_to_send.splice(1, strings_to_send.length - 1); +} + +function handleRequest(request, response) +{ + var b = 0; + for (var i=0; i < strings_to_send.length; ++i) { + b += strings_to_send[i].length; + } + + response.seizePower(); + response.write("HTTP/1.1 200 OK\r\n") + response.write("Content-Length: " + b + "\r\n"); + response.write("Content-Type: text/event-stream; charset=utf-8\r\n"); + response.write("Cache-Control: no-cache, must-revalidate\r\n"); + response.write("\r\n"); + + resp = response; + + timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer); + timer.initWithCallback(sendNextString, 500, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK); +} diff --git a/dom/base/test/empty.html b/dom/base/test/empty.html new file mode 100644 index 000000000..e69de29bb diff --git a/dom/base/test/eventsource.resource b/dom/base/test/eventsource.resource new file mode 100644 index 000000000..856e3b1af --- /dev/null +++ b/dom/base/test/eventsource.resource @@ -0,0 +1,22 @@ +:this file must be enconded in utf8 +:and its Content-Type must be equal to text/event-stream + +retry:500 +data: 1 +unknow: unknow + +event: other_event_name +retry:500 +data: 1 +unknow: unknow + +event: click +retry:500 + +event: blur +retry:500 + +event:keypress +retry:500 + + diff --git a/dom/base/test/eventsource.resource^headers^ b/dom/base/test/eventsource.resource^headers^ new file mode 100644 index 000000000..6a63b5341 --- /dev/null +++ b/dom/base/test/eventsource.resource^headers^ @@ -0,0 +1,3 @@ +Content-Type: text/event-stream +Cache-Control: no-cache, must-revalidate + diff --git a/dom/base/test/eventsource_redirect.resource b/dom/base/test/eventsource_redirect.resource new file mode 100644 index 000000000..d073527bf --- /dev/null +++ b/dom/base/test/eventsource_redirect.resource @@ -0,0 +1,2 @@ +redirected + diff --git a/dom/base/test/eventsource_redirect.resource^headers^ b/dom/base/test/eventsource_redirect.resource^headers^ new file mode 100644 index 000000000..eb79e2f81 --- /dev/null +++ b/dom/base/test/eventsource_redirect.resource^headers^ @@ -0,0 +1,3 @@ +HTTP 301 Moved Permanently +Location: eventsource_redirect_to.resource + diff --git a/dom/base/test/eventsource_redirect_to.resource b/dom/base/test/eventsource_redirect_to.resource new file mode 100644 index 000000000..1eb4081ac --- /dev/null +++ b/dom/base/test/eventsource_redirect_to.resource @@ -0,0 +1,4 @@ +retry:500 +data: 1 + + diff --git a/dom/base/test/eventsource_redirect_to.resource^headers^ b/dom/base/test/eventsource_redirect_to.resource^headers^ new file mode 100644 index 000000000..6a63b5341 --- /dev/null +++ b/dom/base/test/eventsource_redirect_to.resource^headers^ @@ -0,0 +1,3 @@ +Content-Type: text/event-stream +Cache-Control: no-cache, must-revalidate + diff --git a/dom/base/test/fake_plugin.tst b/dom/base/test/fake_plugin.tst new file mode 100644 index 000000000..b3d41aed8 --- /dev/null +++ b/dom/base/test/fake_plugin.tst @@ -0,0 +1 @@ +This is used in test_object.html to test loading by extension (.tst -> application/x-test). diff --git a/dom/base/test/file_audioLoop.html b/dom/base/test/file_audioLoop.html new file mode 100644 index 000000000..d680c9a58 --- /dev/null +++ b/dom/base/test/file_audioLoop.html @@ -0,0 +1,2 @@ + +