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/browser-element/BrowserElementAudioChannel.cpp | 591 +++++++ dom/browser-element/BrowserElementAudioChannel.h | 97 ++ dom/browser-element/BrowserElementChild.js | 83 + dom/browser-element/BrowserElementChildPreload.js | 1823 ++++++++++++++++++++ dom/browser-element/BrowserElementCopyPaste.js | 125 ++ dom/browser-element/BrowserElementParent.cpp | 317 ++++ dom/browser-element/BrowserElementParent.h | 135 ++ dom/browser-element/BrowserElementParent.js | 1202 +++++++++++++ dom/browser-element/BrowserElementParent.manifest | 2 + .../BrowserElementPromptService.jsm | 685 ++++++++ dom/browser-element/BrowserElementProxy.js | 219 +++ dom/browser-element/BrowserElementProxy.manifest | 2 + dom/browser-element/mochitest/async.js | 78 + dom/browser-element/mochitest/audio.ogg | Bin 0 -> 14293 bytes .../mochitest/browserElementTestHelpers.js | 306 ++++ .../mochitest/browserElement_ActiveStateChange.js | 108 ++ .../mochitest/browserElement_Alert.js | 304 ++++ .../mochitest/browserElement_AlertInFrame.js | 24 + .../mochitest/browserElement_AudioChannel.js | 199 +++ .../browserElement_AudioChannelMutedByDefault.js | 103 ++ .../browserElement_AudioChannelSeeking.js | 128 ++ .../browserElement_AudioChannel_nested.js | 69 + .../mochitest/browserElement_AudioPlayback.js | 75 + .../mochitest/browserElement_Auth.js | 246 +++ .../mochitest/browserElement_BackForward.js | 104 ++ .../mochitest/browserElement_BadScreenshot.js | 71 + .../browserElement_BrowserWindowNamespace.js | 57 + .../browserElement_BrowserWindowResize.js | 51 + .../mochitest/browserElement_Close.js | 24 + .../mochitest/browserElement_CloseFromOpener.js | 33 + .../mochitest/browserElement_ContextmenuEvents.js | 351 ++++ .../browserElement_CookiesNotThirdParty.js | 51 + .../mochitest/browserElement_CopyPaste.js | 339 ++++ .../mochitest/browserElement_DOMRequestError.js | 62 + .../mochitest/browserElement_DataURI.js | 68 + .../mochitest/browserElement_DocumentFirstPaint.js | 69 + .../mochitest/browserElement_Download.js | 37 + .../mochitest/browserElement_ErrorSecurity.js | 58 + .../mochitest/browserElement_ExecuteScript.js | 119 ++ .../mochitest/browserElement_ExposableURI.js | 55 + .../mochitest/browserElement_Find.js | 145 ++ .../mochitest/browserElement_FirstPaint.js | 43 + .../mochitest/browserElement_ForwardName.js | 43 + .../mochitest/browserElement_FrameWrongURI.js | 52 + .../browserElement_GetContentDimensions.js | 66 + .../mochitest/browserElement_GetScreenshot.js | 117 ++ .../mochitest/browserElement_GetScreenshotDppx.js | 107 ++ .../mochitest/browserElement_Iconchange.js | 129 ++ .../mochitest/browserElement_LoadEvents.js | 120 ++ .../mochitest/browserElement_Manifestchange.js | 96 ++ .../mochitest/browserElement_Metachange.js | 177 ++ .../mochitest/browserElement_NextPaint.js | 43 + .../mochitest/browserElement_NoAudioTrack.js | 96 ++ .../mochitest/browserElement_OpenMixedProcess.js | 105 ++ .../mochitest/browserElement_OpenNamed.js | 57 + .../mochitest/browserElement_OpenTab.js | 69 + .../mochitest/browserElement_OpenWindow.js | 58 + .../browserElement_OpenWindowDifferentOrigin.js | 41 + .../mochitest/browserElement_OpenWindowEmpty.js | 31 + .../mochitest/browserElement_OpenWindowInFrame.js | 65 + .../mochitest/browserElement_OpenWindowRejected.js | 44 + .../browserElement_OpenWindowRejected2.js | 47 + .../mochitest/browserElement_Opensearch.js | 109 ++ .../mochitest/browserElement_PrivateBrowsing.js | 49 + .../mochitest/browserElement_PromptCheck.js | 59 + .../mochitest/browserElement_PromptConfirm.js | 87 + .../mochitest/browserElement_Proxy.js | 163 ++ .../mochitest/browserElement_PurgeHistory.js | 87 + .../mochitest/browserElement_Reload.js | 59 + .../mochitest/browserElement_ReloadPostRequest.js | 116 ++ .../browserElement_RemoveBrowserElement.js | 30 + .../mochitest/browserElement_ScrollEvent.js | 27 + .../mochitest/browserElement_SecurityChange.js | 82 + .../mochitest/browserElement_SendEvent.js | 85 + .../browserElement_SetInputMethodActive.js | 323 ++++ .../mochitest/browserElement_SetVisible.js | 75 + .../mochitest/browserElement_SetVisibleFrames.js | 89 + .../mochitest/browserElement_SetVisibleFrames2.js | 55 + .../mochitest/browserElement_Stop.js | 52 + .../mochitest/browserElement_TargetBlank.js | 26 + .../mochitest/browserElement_TargetTop.js | 31 + .../mochitest/browserElement_ThemeColor.js | 85 + .../mochitest/browserElement_Titlechange.js | 68 + .../mochitest/browserElement_TopBarrier.js | 81 + .../mochitest/browserElement_Viewmode.js | 71 + .../mochitest/browserElement_VisibilityChange.js | 42 + .../mochitest/browserElement_XFrameOptions.js | 26 + .../browserElement_XFrameOptionsAllowFrom.js | 60 + .../mochitest/browserElement_XFrameOptionsDeny.js | 63 + .../browserElement_XFrameOptionsSameOrigin.js | 28 + .../mochitest/browserElement_getWebManifest.js | 64 + dom/browser-element/mochitest/chrome.ini | 92 + dom/browser-element/mochitest/createNewTest.py | 126 ++ dom/browser-element/mochitest/file_audio.html | 15 + .../file_browserElement_ActiveStateChange.html | 25 + .../file_browserElement_AlertInFrame.html | 6 + .../file_browserElement_AlertInFrame_Inner.html | 12 + ..._browserElement_AudioChannelMutedByDefault.html | 65 + .../file_browserElement_AudioChannelSeeking.html | 62 + .../file_browserElement_AudioChannel_nested.html | 63 + ...file_browserElement_BrowserWindowNamespace.html | 9 + .../file_browserElement_CloseFromOpener.html | 8 + .../file_browserElement_CookiesNotThirdParty.html | 25 + .../file_browserElement_ExecuteScript.html | 8 + .../mochitest/file_browserElement_ForwardName.html | 15 + .../file_browserElement_FrameWrongURI.html | 5 + .../mochitest/file_browserElement_LoadEvents.html | 14 + .../mochitest/file_browserElement_Metachange.sjs | 7 + .../mochitest/file_browserElement_NextPaint.html | 9 + .../file_browserElement_NoAudioTrack.html | 32 + .../mochitest/file_browserElement_Open1.html | 34 + .../mochitest/file_browserElement_Open2.html | 5 + .../file_browserElement_OpenMixedProcess.html | 22 + .../mochitest/file_browserElement_OpenNamed.html | 7 + .../mochitest/file_browserElement_OpenNamed2.html | 7 + ...e_browserElement_OpenWindowDifferentOrigin.html | 18 + .../file_browserElement_OpenWindowEmpty.html | 7 + .../file_browserElement_OpenWindowInFrame.html | 6 + .../file_browserElement_OpenWindowRejected.html | 16 + .../file_browserElement_PrivateBrowsing.html | 15 + .../file_browserElement_SecurityChange.html | 21 + .../mochitest/file_browserElement_SendEvent.html | 15 + .../file_browserElement_SetInputMethodActive.html | 2 + ...ile_browserElement_SetVisibleFrames2_Outer.html | 25 + ...file_browserElement_SetVisibleFrames_Inner.html | 18 + ...file_browserElement_SetVisibleFrames_Outer.html | 45 + .../mochitest/file_browserElement_TargetBlank.html | 18 + .../mochitest/file_browserElement_TargetTop.html | 12 + .../mochitest/file_browserElement_ThemeColor.html | 8 + .../mochitest/file_browserElement_Viewmode.html | 8 + .../file_browserElement_XFrameOptions.sjs | 9 + ...file_browserElement_XFrameOptionsAllowFrom.html | 43 + .../file_browserElement_XFrameOptionsAllowFrom.sjs | 16 + .../file_browserElement_XFrameOptionsDeny.html | 57 + ...ile_browserElement_XFrameOptionsSameOrigin.html | 5 + dom/browser-element/mochitest/file_bug709759.sjs | 5 + dom/browser-element/mochitest/file_bug741717.sjs | 27 + .../mochitest/file_download_bin.sjs | 4 + dom/browser-element/mochitest/file_empty.html | 14 + dom/browser-element/mochitest/file_empty_script.js | 0 dom/browser-element/mochitest/file_focus.html | 24 + .../mochitest/file_http_401_response.sjs | 16 + .../mochitest/file_http_407_response.sjs | 16 + .../mochitest/file_illegal_web_manifest.html | 7 + .../mochitest/file_post_request.html | 15 + .../mochitest/file_web_manifest.html | 6 + .../mochitest/file_web_manifest.json | 1 + dom/browser-element/mochitest/file_wyciwyg.html | 14 + .../mochitest/iframe_file_audio.html | 5 + dom/browser-element/mochitest/mochitest-oop.ini | 135 ++ dom/browser-element/mochitest/mochitest.ini | 159 ++ dom/browser-element/mochitest/noaudio.webm | Bin 0 -> 105755 bytes dom/browser-element/mochitest/priority/chrome.ini | 19 + .../mochitest/priority/file_Audio.html | 19 + .../mochitest/priority/file_HighPriority.html | 20 + .../mochitest/priority/file_MultipleFrames.html | 14 + .../mochitest/priority/file_NestedFramesOuter.html | 20 + .../mochitest/priority/file_WebGLContextLost.html | 22 + .../mochitest/priority/mochitest.ini | 19 + dom/browser-element/mochitest/priority/silence.ogg | Bin 0 -> 5940 bytes .../mochitest/priority/test_Activity.html | 62 + .../mochitest/priority/test_Audio.html | 53 + .../mochitest/priority/test_Background.html | 53 + .../mochitest/priority/test_HighPriority.html | 133 ++ .../mochitest/priority/test_Keyboard.html | 54 + .../mochitest/priority/test_MultipleFrames.html | 58 + .../mochitest/priority/test_NestedFrames.html | 62 + .../mochitest/priority/test_Preallocated.html | 71 + .../mochitest/priority/test_Simple.html | 59 + .../mochitest/priority/test_Visibility.html | 51 + .../mochitest/priority/test_WebGLContextLost.html | 99 ++ .../mochitest/test_browserElement_NoAttr.html | 46 + .../test_browserElement_NoPermission.html | 49 + .../mochitest/test_browserElement_NoPref.html | 49 + ...st_browserElement_inproc_ActiveStateChange.html | 13 + .../test_browserElement_inproc_Alert.html | 18 + .../test_browserElement_inproc_AlertInFrame.html | 13 + .../test_browserElement_inproc_AudioChannel.html | 13 + ...rElement_inproc_AudioChannelMutedByDefault.html | 13 + ..._browserElement_inproc_AudioChannelSeeking.html | 13 + ..._browserElement_inproc_AudioChannel_nested.html | 13 + .../test_browserElement_inproc_AudioPlayback.html | 18 + .../mochitest/test_browserElement_inproc_Auth.html | 18 + .../test_browserElement_inproc_BackForward.html | 13 + .../test_browserElement_inproc_BadScreenshot.html | 13 + ...owserElement_inproc_BrowserWindowNamespace.html | 13 + ..._browserElement_inproc_BrowserWindowResize.html | 13 + .../test_browserElement_inproc_Close.html | 18 + ...test_browserElement_inproc_CloseFromOpener.html | 18 + ...st_browserElement_inproc_ContextmenuEvents.html | 13 + ...browserElement_inproc_CookiesNotThirdParty.html | 13 + .../test_browserElement_inproc_CopyPaste.html | 18 + ...test_browserElement_inproc_DOMRequestError.html | 19 + .../test_browserElement_inproc_DataURI.html | 18 + ...t_browserElement_inproc_DocumentFirstPaint.html | 13 + .../test_browserElement_inproc_Download.html | 13 + .../test_browserElement_inproc_ErrorSecurity.html | 13 + .../test_browserElement_inproc_ExecuteScript.html | 18 + .../test_browserElement_inproc_ExposableURI.html | 19 + .../mochitest/test_browserElement_inproc_Find.html | 19 + .../test_browserElement_inproc_FirstPaint.html | 13 + .../test_browserElement_inproc_ForwardName.html | 13 + .../test_browserElement_inproc_FrameWrongURI.html | 13 + ...browserElement_inproc_GetContentDimensions.html | 13 + .../test_browserElement_inproc_GetScreenshot.html | 19 + ...st_browserElement_inproc_GetScreenshotDppx.html | 19 + .../test_browserElement_inproc_Iconchange.html | 19 + .../test_browserElement_inproc_LoadEvents.html | 18 + .../test_browserElement_inproc_Manifestchange.html | 19 + .../test_browserElement_inproc_Metachange.html | 19 + .../test_browserElement_inproc_NextPaint.html | 13 + .../test_browserElement_inproc_NoAudioTrack.html | 13 + ...est_browserElement_inproc_OpenMixedProcess.html | 13 + .../test_browserElement_inproc_OpenNamed.html | 13 + .../test_browserElement_inproc_OpenTab.html | 19 + .../test_browserElement_inproc_OpenWindow.html | 13 + ...erElement_inproc_OpenWindowDifferentOrigin.html | 13 + ...test_browserElement_inproc_OpenWindowEmpty.html | 13 + ...st_browserElement_inproc_OpenWindowInFrame.html | 13 + ...t_browserElement_inproc_OpenWindowRejected.html | 13 + ..._browserElement_inproc_OpenWindowRejected2.html | 13 + .../test_browserElement_inproc_Opensearch.html | 19 + ...test_browserElement_inproc_PrivateBrowsing.html | 19 + .../test_browserElement_inproc_PromptCheck.html | 18 + .../test_browserElement_inproc_PromptConfirm.html | 18 + .../test_browserElement_inproc_Proxy.html | 18 + .../test_browserElement_inproc_PurgeHistory.html | 13 + .../test_browserElement_inproc_Reload.html | 13 + ...st_browserElement_inproc_ReloadPostRequest.html | 13 + ...browserElement_inproc_RemoveBrowserElement.html | 18 + .../test_browserElement_inproc_ScrollEvent.html | 18 + .../test_browserElement_inproc_SecurityChange.html | 13 + .../test_browserElement_inproc_SendEvent.html | 18 + ...browserElement_inproc_SetInputMethodActive.html | 14 + .../test_browserElement_inproc_SetVisible.html | 19 + ...est_browserElement_inproc_SetVisibleFrames.html | 13 + ...st_browserElement_inproc_SetVisibleFrames2.html | 13 + .../mochitest/test_browserElement_inproc_Stop.html | 13 + .../test_browserElement_inproc_TargetBlank.html | 13 + .../test_browserElement_inproc_TargetTop.html | 13 + .../test_browserElement_inproc_ThemeColor.html | 19 + .../test_browserElement_inproc_Titlechange.html | 19 + .../test_browserElement_inproc_TopBarrier.html | 21 + .../test_browserElement_inproc_Viewmode.html | 19 + ...est_browserElement_inproc_VisibilityChange.html | 19 + .../test_browserElement_inproc_XFrameOptions.html | 13 + ...owserElement_inproc_XFrameOptionsAllowFrom.html | 13 + ...st_browserElement_inproc_XFrameOptionsDeny.html | 13 + ...wserElement_inproc_XFrameOptionsSameOrigin.html | 13 + .../test_browserElement_inproc_getWebManifest.html | 17 + .../test_browserElement_oop_ActiveStateChange.html | 13 + .../mochitest/test_browserElement_oop_Alert.html | 18 + .../test_browserElement_oop_AlertInFrame.html | 13 + .../test_browserElement_oop_AudioChannel.html | 13 + ...wserElement_oop_AudioChannelMutedByDefault.html | 13 + ...est_browserElement_oop_AudioChannelSeeking.html | 13 + ...est_browserElement_oop_AudioChannel_nested.html | 13 + .../test_browserElement_oop_AudioPlayback.html | 18 + .../mochitest/test_browserElement_oop_Auth.html | 18 + .../test_browserElement_oop_BackForward.html | 13 + .../test_browserElement_oop_BadScreenshot.html | 13 + ...est_browserElement_oop_BrowserWindowResize.html | 13 + .../mochitest/test_browserElement_oop_Close.html | 18 + .../test_browserElement_oop_CloseFromOpener.html | 18 + .../test_browserElement_oop_ContextmenuEvents.html | 13 + ...st_browserElement_oop_CookiesNotThirdParty.html | 13 + .../test_browserElement_oop_CopyPaste.html | 18 + .../test_browserElement_oop_DOMRequestError.html | 19 + .../mochitest/test_browserElement_oop_DataURI.html | 18 + ...test_browserElement_oop_DocumentFirstPaint.html | 13 + .../test_browserElement_oop_Download.html | 13 + .../test_browserElement_oop_ErrorSecurity.html | 13 + .../test_browserElement_oop_ExecuteScript.html | 18 + .../test_browserElement_oop_ExposableURI.html | 19 + .../mochitest/test_browserElement_oop_Find.html | 19 + .../test_browserElement_oop_FirstPaint.html | 13 + .../test_browserElement_oop_ForwardName.html | 13 + .../test_browserElement_oop_FrameWrongURI.html | 13 + ...st_browserElement_oop_GetContentDimensions.html | 13 + .../test_browserElement_oop_GetScreenshot.html | 20 + .../test_browserElement_oop_GetScreenshotDppx.html | 19 + .../test_browserElement_oop_Iconchange.html | 19 + .../test_browserElement_oop_LoadEvents.html | 19 + .../test_browserElement_oop_Manifestchange.html | 19 + .../test_browserElement_oop_Metachange.html | 19 + .../test_browserElement_oop_NextPaint.html | 13 + .../test_browserElement_oop_NoAudioTrack.html | 13 + .../test_browserElement_oop_OpenMixedProcess.html | 13 + .../test_browserElement_oop_OpenNamed.html | 13 + .../mochitest/test_browserElement_oop_OpenTab.html | 19 + .../test_browserElement_oop_OpenWindow.html | 13 + ...owserElement_oop_OpenWindowDifferentOrigin.html | 13 + .../test_browserElement_oop_OpenWindowEmpty.html | 13 + .../test_browserElement_oop_OpenWindowInFrame.html | 13 + ...test_browserElement_oop_OpenWindowRejected.html | 13 + ...est_browserElement_oop_OpenWindowRejected2.html | 13 + .../test_browserElement_oop_Opensearch.html | 19 + .../test_browserElement_oop_PrivateBrowsing.html | 19 + .../test_browserElement_oop_PromptCheck.html | 18 + .../test_browserElement_oop_PromptConfirm.html | 18 + .../mochitest/test_browserElement_oop_Proxy.html | 18 + .../test_browserElement_oop_PurgeHistory.html | 13 + .../mochitest/test_browserElement_oop_Reload.html | 13 + .../test_browserElement_oop_ReloadPostRequest.html | 13 + ...st_browserElement_oop_RemoveBrowserElement.html | 18 + .../test_browserElement_oop_ScrollEvent.html | 18 + .../test_browserElement_oop_SecurityChange.html | 13 + .../test_browserElement_oop_SendEvent.html | 18 + ...st_browserElement_oop_SetInputMethodActive.html | 14 + .../test_browserElement_oop_SetVisible.html | 19 + .../test_browserElement_oop_SetVisibleFrames.html | 13 + .../test_browserElement_oop_SetVisibleFrames2.html | 13 + .../mochitest/test_browserElement_oop_Stop.html | 13 + .../test_browserElement_oop_TargetBlank.html | 13 + .../test_browserElement_oop_TargetTop.html | 13 + .../test_browserElement_oop_ThemeColor.html | 19 + .../test_browserElement_oop_Titlechange.html | 19 + .../test_browserElement_oop_TopBarrier.html | 20 + .../test_browserElement_oop_Viewmode.html | 19 + .../test_browserElement_oop_VisibilityChange.html | 19 + .../test_browserElement_oop_XFrameOptions.html | 13 + ..._browserElement_oop_XFrameOptionsAllowFrom.html | 13 + .../test_browserElement_oop_XFrameOptionsDeny.html | 13 + ...browserElement_oop_XFrameOptionsSameOrigin.html | 13 + .../test_browserElement_oop_getWebManifest.html | 16 + dom/browser-element/moz.build | 60 + dom/browser-element/nsIBrowserElementAPI.idl | 112 ++ 327 files changed, 17433 insertions(+) create mode 100644 dom/browser-element/BrowserElementAudioChannel.cpp create mode 100644 dom/browser-element/BrowserElementAudioChannel.h create mode 100644 dom/browser-element/BrowserElementChild.js create mode 100644 dom/browser-element/BrowserElementChildPreload.js create mode 100644 dom/browser-element/BrowserElementCopyPaste.js create mode 100644 dom/browser-element/BrowserElementParent.cpp create mode 100644 dom/browser-element/BrowserElementParent.h create mode 100644 dom/browser-element/BrowserElementParent.js create mode 100644 dom/browser-element/BrowserElementParent.manifest create mode 100644 dom/browser-element/BrowserElementPromptService.jsm create mode 100644 dom/browser-element/BrowserElementProxy.js create mode 100644 dom/browser-element/BrowserElementProxy.manifest create mode 100644 dom/browser-element/mochitest/async.js create mode 100644 dom/browser-element/mochitest/audio.ogg create mode 100644 dom/browser-element/mochitest/browserElementTestHelpers.js create mode 100644 dom/browser-element/mochitest/browserElement_ActiveStateChange.js create mode 100644 dom/browser-element/mochitest/browserElement_Alert.js create mode 100644 dom/browser-element/mochitest/browserElement_AlertInFrame.js create mode 100644 dom/browser-element/mochitest/browserElement_AudioChannel.js create mode 100644 dom/browser-element/mochitest/browserElement_AudioChannelMutedByDefault.js create mode 100644 dom/browser-element/mochitest/browserElement_AudioChannelSeeking.js create mode 100644 dom/browser-element/mochitest/browserElement_AudioChannel_nested.js create mode 100644 dom/browser-element/mochitest/browserElement_AudioPlayback.js create mode 100644 dom/browser-element/mochitest/browserElement_Auth.js create mode 100644 dom/browser-element/mochitest/browserElement_BackForward.js create mode 100644 dom/browser-element/mochitest/browserElement_BadScreenshot.js create mode 100644 dom/browser-element/mochitest/browserElement_BrowserWindowNamespace.js create mode 100644 dom/browser-element/mochitest/browserElement_BrowserWindowResize.js create mode 100644 dom/browser-element/mochitest/browserElement_Close.js create mode 100644 dom/browser-element/mochitest/browserElement_CloseFromOpener.js create mode 100644 dom/browser-element/mochitest/browserElement_ContextmenuEvents.js create mode 100644 dom/browser-element/mochitest/browserElement_CookiesNotThirdParty.js create mode 100644 dom/browser-element/mochitest/browserElement_CopyPaste.js create mode 100644 dom/browser-element/mochitest/browserElement_DOMRequestError.js create mode 100644 dom/browser-element/mochitest/browserElement_DataURI.js create mode 100644 dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js create mode 100644 dom/browser-element/mochitest/browserElement_Download.js create mode 100644 dom/browser-element/mochitest/browserElement_ErrorSecurity.js create mode 100644 dom/browser-element/mochitest/browserElement_ExecuteScript.js create mode 100644 dom/browser-element/mochitest/browserElement_ExposableURI.js create mode 100644 dom/browser-element/mochitest/browserElement_Find.js create mode 100644 dom/browser-element/mochitest/browserElement_FirstPaint.js create mode 100644 dom/browser-element/mochitest/browserElement_ForwardName.js create mode 100644 dom/browser-element/mochitest/browserElement_FrameWrongURI.js create mode 100644 dom/browser-element/mochitest/browserElement_GetContentDimensions.js create mode 100644 dom/browser-element/mochitest/browserElement_GetScreenshot.js create mode 100644 dom/browser-element/mochitest/browserElement_GetScreenshotDppx.js create mode 100644 dom/browser-element/mochitest/browserElement_Iconchange.js create mode 100644 dom/browser-element/mochitest/browserElement_LoadEvents.js create mode 100644 dom/browser-element/mochitest/browserElement_Manifestchange.js create mode 100644 dom/browser-element/mochitest/browserElement_Metachange.js create mode 100644 dom/browser-element/mochitest/browserElement_NextPaint.js create mode 100644 dom/browser-element/mochitest/browserElement_NoAudioTrack.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenMixedProcess.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenNamed.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenTab.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenWindow.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenWindowDifferentOrigin.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenWindowEmpty.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenWindowInFrame.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenWindowRejected.js create mode 100644 dom/browser-element/mochitest/browserElement_OpenWindowRejected2.js create mode 100644 dom/browser-element/mochitest/browserElement_Opensearch.js create mode 100644 dom/browser-element/mochitest/browserElement_PrivateBrowsing.js create mode 100644 dom/browser-element/mochitest/browserElement_PromptCheck.js create mode 100644 dom/browser-element/mochitest/browserElement_PromptConfirm.js create mode 100644 dom/browser-element/mochitest/browserElement_Proxy.js create mode 100644 dom/browser-element/mochitest/browserElement_PurgeHistory.js create mode 100644 dom/browser-element/mochitest/browserElement_Reload.js create mode 100644 dom/browser-element/mochitest/browserElement_ReloadPostRequest.js create mode 100644 dom/browser-element/mochitest/browserElement_RemoveBrowserElement.js create mode 100644 dom/browser-element/mochitest/browserElement_ScrollEvent.js create mode 100644 dom/browser-element/mochitest/browserElement_SecurityChange.js create mode 100644 dom/browser-element/mochitest/browserElement_SendEvent.js create mode 100644 dom/browser-element/mochitest/browserElement_SetInputMethodActive.js create mode 100644 dom/browser-element/mochitest/browserElement_SetVisible.js create mode 100644 dom/browser-element/mochitest/browserElement_SetVisibleFrames.js create mode 100644 dom/browser-element/mochitest/browserElement_SetVisibleFrames2.js create mode 100644 dom/browser-element/mochitest/browserElement_Stop.js create mode 100644 dom/browser-element/mochitest/browserElement_TargetBlank.js create mode 100644 dom/browser-element/mochitest/browserElement_TargetTop.js create mode 100644 dom/browser-element/mochitest/browserElement_ThemeColor.js create mode 100644 dom/browser-element/mochitest/browserElement_Titlechange.js create mode 100644 dom/browser-element/mochitest/browserElement_TopBarrier.js create mode 100644 dom/browser-element/mochitest/browserElement_Viewmode.js create mode 100644 dom/browser-element/mochitest/browserElement_VisibilityChange.js create mode 100644 dom/browser-element/mochitest/browserElement_XFrameOptions.js create mode 100644 dom/browser-element/mochitest/browserElement_XFrameOptionsAllowFrom.js create mode 100644 dom/browser-element/mochitest/browserElement_XFrameOptionsDeny.js create mode 100644 dom/browser-element/mochitest/browserElement_XFrameOptionsSameOrigin.js create mode 100644 dom/browser-element/mochitest/browserElement_getWebManifest.js create mode 100644 dom/browser-element/mochitest/chrome.ini create mode 100644 dom/browser-element/mochitest/createNewTest.py create mode 100644 dom/browser-element/mochitest/file_audio.html create mode 100644 dom/browser-element/mochitest/file_browserElement_ActiveStateChange.html create mode 100644 dom/browser-element/mochitest/file_browserElement_AlertInFrame.html create mode 100644 dom/browser-element/mochitest/file_browserElement_AlertInFrame_Inner.html create mode 100644 dom/browser-element/mochitest/file_browserElement_AudioChannelMutedByDefault.html create mode 100644 dom/browser-element/mochitest/file_browserElement_AudioChannelSeeking.html create mode 100644 dom/browser-element/mochitest/file_browserElement_AudioChannel_nested.html create mode 100644 dom/browser-element/mochitest/file_browserElement_BrowserWindowNamespace.html create mode 100644 dom/browser-element/mochitest/file_browserElement_CloseFromOpener.html create mode 100644 dom/browser-element/mochitest/file_browserElement_CookiesNotThirdParty.html create mode 100644 dom/browser-element/mochitest/file_browserElement_ExecuteScript.html create mode 100644 dom/browser-element/mochitest/file_browserElement_ForwardName.html create mode 100644 dom/browser-element/mochitest/file_browserElement_FrameWrongURI.html create mode 100644 dom/browser-element/mochitest/file_browserElement_LoadEvents.html create mode 100644 dom/browser-element/mochitest/file_browserElement_Metachange.sjs create mode 100644 dom/browser-element/mochitest/file_browserElement_NextPaint.html create mode 100644 dom/browser-element/mochitest/file_browserElement_NoAudioTrack.html create mode 100644 dom/browser-element/mochitest/file_browserElement_Open1.html create mode 100644 dom/browser-element/mochitest/file_browserElement_Open2.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenMixedProcess.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenNamed.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenNamed2.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenWindowDifferentOrigin.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenWindowEmpty.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenWindowInFrame.html create mode 100644 dom/browser-element/mochitest/file_browserElement_OpenWindowRejected.html create mode 100644 dom/browser-element/mochitest/file_browserElement_PrivateBrowsing.html create mode 100644 dom/browser-element/mochitest/file_browserElement_SecurityChange.html create mode 100644 dom/browser-element/mochitest/file_browserElement_SendEvent.html create mode 100644 dom/browser-element/mochitest/file_browserElement_SetInputMethodActive.html create mode 100644 dom/browser-element/mochitest/file_browserElement_SetVisibleFrames2_Outer.html create mode 100644 dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Inner.html create mode 100644 dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Outer.html create mode 100644 dom/browser-element/mochitest/file_browserElement_TargetBlank.html create mode 100644 dom/browser-element/mochitest/file_browserElement_TargetTop.html create mode 100644 dom/browser-element/mochitest/file_browserElement_ThemeColor.html create mode 100644 dom/browser-element/mochitest/file_browserElement_Viewmode.html create mode 100644 dom/browser-element/mochitest/file_browserElement_XFrameOptions.sjs create mode 100644 dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.html create mode 100644 dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.sjs create mode 100644 dom/browser-element/mochitest/file_browserElement_XFrameOptionsDeny.html create mode 100644 dom/browser-element/mochitest/file_browserElement_XFrameOptionsSameOrigin.html create mode 100644 dom/browser-element/mochitest/file_bug709759.sjs create mode 100644 dom/browser-element/mochitest/file_bug741717.sjs create mode 100644 dom/browser-element/mochitest/file_download_bin.sjs create mode 100644 dom/browser-element/mochitest/file_empty.html create mode 100644 dom/browser-element/mochitest/file_empty_script.js create mode 100644 dom/browser-element/mochitest/file_focus.html create mode 100644 dom/browser-element/mochitest/file_http_401_response.sjs create mode 100644 dom/browser-element/mochitest/file_http_407_response.sjs create mode 100644 dom/browser-element/mochitest/file_illegal_web_manifest.html create mode 100644 dom/browser-element/mochitest/file_post_request.html create mode 100644 dom/browser-element/mochitest/file_web_manifest.html create mode 100644 dom/browser-element/mochitest/file_web_manifest.json create mode 100644 dom/browser-element/mochitest/file_wyciwyg.html create mode 100644 dom/browser-element/mochitest/iframe_file_audio.html create mode 100644 dom/browser-element/mochitest/mochitest-oop.ini create mode 100644 dom/browser-element/mochitest/mochitest.ini create mode 100644 dom/browser-element/mochitest/noaudio.webm create mode 100644 dom/browser-element/mochitest/priority/chrome.ini create mode 100644 dom/browser-element/mochitest/priority/file_Audio.html create mode 100644 dom/browser-element/mochitest/priority/file_HighPriority.html create mode 100644 dom/browser-element/mochitest/priority/file_MultipleFrames.html create mode 100644 dom/browser-element/mochitest/priority/file_NestedFramesOuter.html create mode 100644 dom/browser-element/mochitest/priority/file_WebGLContextLost.html create mode 100644 dom/browser-element/mochitest/priority/mochitest.ini create mode 100644 dom/browser-element/mochitest/priority/silence.ogg create mode 100644 dom/browser-element/mochitest/priority/test_Activity.html create mode 100644 dom/browser-element/mochitest/priority/test_Audio.html create mode 100644 dom/browser-element/mochitest/priority/test_Background.html create mode 100644 dom/browser-element/mochitest/priority/test_HighPriority.html create mode 100644 dom/browser-element/mochitest/priority/test_Keyboard.html create mode 100644 dom/browser-element/mochitest/priority/test_MultipleFrames.html create mode 100644 dom/browser-element/mochitest/priority/test_NestedFrames.html create mode 100644 dom/browser-element/mochitest/priority/test_Preallocated.html create mode 100644 dom/browser-element/mochitest/priority/test_Simple.html create mode 100644 dom/browser-element/mochitest/priority/test_Visibility.html create mode 100644 dom/browser-element/mochitest/priority/test_WebGLContextLost.html create mode 100644 dom/browser-element/mochitest/test_browserElement_NoAttr.html create mode 100644 dom/browser-element/mochitest/test_browserElement_NoPermission.html create mode 100644 dom/browser-element/mochitest/test_browserElement_NoPref.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ActiveStateChange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Alert.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_AlertInFrame.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_AudioChannel.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_AudioChannelMutedByDefault.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_AudioChannelSeeking.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_AudioChannel_nested.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_AudioPlayback.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Auth.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_BackForward.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_BadScreenshot.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_BrowserWindowNamespace.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_BrowserWindowResize.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Close.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_CloseFromOpener.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ContextmenuEvents.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_CookiesNotThirdParty.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_CopyPaste.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_DOMRequestError.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_DataURI.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_DocumentFirstPaint.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Download.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ErrorSecurity.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ExecuteScript.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ExposableURI.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Find.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_FirstPaint.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ForwardName.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_FrameWrongURI.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_GetContentDimensions.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_GetScreenshot.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_GetScreenshotDppx.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Iconchange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_LoadEvents.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Manifestchange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Metachange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_NextPaint.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_NoAudioTrack.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenMixedProcess.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenNamed.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenTab.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenWindow.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenWindowDifferentOrigin.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenWindowEmpty.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenWindowInFrame.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenWindowRejected.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_OpenWindowRejected2.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Opensearch.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_PrivateBrowsing.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_PromptCheck.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_PromptConfirm.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Proxy.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_PurgeHistory.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Reload.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ReloadPostRequest.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_RemoveBrowserElement.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ScrollEvent.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_SecurityChange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_SendEvent.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_SetInputMethodActive.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_SetVisible.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_SetVisibleFrames.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_SetVisibleFrames2.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Stop.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_TargetBlank.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_TargetTop.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_ThemeColor.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Titlechange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_TopBarrier.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_Viewmode.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_VisibilityChange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_XFrameOptions.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_XFrameOptionsAllowFrom.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_XFrameOptionsDeny.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_XFrameOptionsSameOrigin.html create mode 100644 dom/browser-element/mochitest/test_browserElement_inproc_getWebManifest.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ActiveStateChange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Alert.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_AlertInFrame.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_AudioChannel.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_AudioChannelMutedByDefault.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_AudioChannelSeeking.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_AudioChannel_nested.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_AudioPlayback.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Auth.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_BackForward.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_BadScreenshot.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_BrowserWindowResize.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Close.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_CloseFromOpener.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ContextmenuEvents.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_CookiesNotThirdParty.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_CopyPaste.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_DOMRequestError.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_DataURI.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_DocumentFirstPaint.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Download.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ErrorSecurity.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ExecuteScript.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ExposableURI.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Find.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_FirstPaint.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ForwardName.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_FrameWrongURI.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_GetContentDimensions.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_GetScreenshot.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_GetScreenshotDppx.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Iconchange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_LoadEvents.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Manifestchange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Metachange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_NextPaint.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_NoAudioTrack.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenMixedProcess.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenNamed.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenTab.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenWindow.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenWindowDifferentOrigin.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenWindowEmpty.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenWindowInFrame.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenWindowRejected.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_OpenWindowRejected2.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Opensearch.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_PrivateBrowsing.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_PromptCheck.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_PromptConfirm.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Proxy.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_PurgeHistory.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Reload.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ReloadPostRequest.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_RemoveBrowserElement.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ScrollEvent.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_SecurityChange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_SendEvent.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_SetInputMethodActive.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_SetVisible.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_SetVisibleFrames.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_SetVisibleFrames2.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Stop.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_TargetBlank.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_TargetTop.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_ThemeColor.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Titlechange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_TopBarrier.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_Viewmode.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_VisibilityChange.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_XFrameOptions.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_XFrameOptionsAllowFrom.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_XFrameOptionsDeny.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_XFrameOptionsSameOrigin.html create mode 100644 dom/browser-element/mochitest/test_browserElement_oop_getWebManifest.html create mode 100644 dom/browser-element/moz.build create mode 100644 dom/browser-element/nsIBrowserElementAPI.idl (limited to 'dom/browser-element') diff --git a/dom/browser-element/BrowserElementAudioChannel.cpp b/dom/browser-element/BrowserElementAudioChannel.cpp new file mode 100644 index 000000000..c9c29e2ea --- /dev/null +++ b/dom/browser-element/BrowserElementAudioChannel.cpp @@ -0,0 +1,591 @@ +/* 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/. */ + +#include "BrowserElementAudioChannel.h" + +#include "mozilla/Preferences.h" +#include "mozilla/Services.h" +#include "mozilla/dom/BrowserElementAudioChannelBinding.h" +#include "mozilla/dom/DOMRequest.h" +#include "mozilla/dom/Element.h" +#include "mozilla/dom/TabParent.h" +#include "mozilla/dom/ToJSValue.h" +#include "AudioChannelService.h" +#include "nsContentUtils.h" +#include "nsIBrowserElementAPI.h" +#include "nsIDocShell.h" +#include "nsIDOMDOMRequest.h" +#include "nsIObserverService.h" +#include "nsISupportsPrimitives.h" +#include "nsITabParent.h" +#include "nsPIDOMWindow.h" + +namespace mozilla { +namespace dom { + +NS_IMPL_ADDREF_INHERITED(BrowserElementAudioChannel, DOMEventTargetHelper) +NS_IMPL_RELEASE_INHERITED(BrowserElementAudioChannel, DOMEventTargetHelper) + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(BrowserElementAudioChannel) + NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) + NS_INTERFACE_MAP_ENTRY(nsIObserver) +NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper) + +NS_IMPL_CYCLE_COLLECTION_INHERITED(BrowserElementAudioChannel, + DOMEventTargetHelper, + mFrameLoader, + mFrameWindow, + mTabParent, + mBrowserElementAPI) + +/* static */ already_AddRefed +BrowserElementAudioChannel::Create(nsPIDOMWindowInner* aWindow, + nsIFrameLoader* aFrameLoader, + nsIBrowserElementAPI* aAPI, + AudioChannel aAudioChannel, + ErrorResult& aRv) +{ + RefPtr ac = + new BrowserElementAudioChannel(aWindow, aFrameLoader, aAPI, aAudioChannel); + + aRv = ac->Initialize(); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } + + MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug, + ("BrowserElementAudioChannel, Create, channel = %p, type = %d\n", + ac.get(), aAudioChannel)); + + return ac.forget(); +} + +BrowserElementAudioChannel::BrowserElementAudioChannel( + nsPIDOMWindowInner* aWindow, + nsIFrameLoader* aFrameLoader, + nsIBrowserElementAPI* aAPI, + AudioChannel aAudioChannel) + : DOMEventTargetHelper(aWindow) + , mFrameLoader(aFrameLoader) + , mBrowserElementAPI(aAPI) + , mAudioChannel(aAudioChannel) + , mState(eStateUnknown) +{ + MOZ_ASSERT(NS_IsMainThread()); + + nsCOMPtr obs = mozilla::services::GetObserverService(); + if (obs) { + nsAutoString name; + AudioChannelService::GetAudioChannelString(aAudioChannel, name); + + nsAutoCString topic; + topic.Assign("audiochannel-activity-"); + topic.Append(NS_ConvertUTF16toUTF8(name)); + + obs->AddObserver(this, topic.get(), true); + } +} + +BrowserElementAudioChannel::~BrowserElementAudioChannel() +{ + MOZ_ASSERT(NS_IsMainThread()); + + nsCOMPtr obs = mozilla::services::GetObserverService(); + if (obs) { + nsAutoString name; + AudioChannelService::GetAudioChannelString(mAudioChannel, name); + + nsAutoCString topic; + topic.Assign("audiochannel-activity-"); + topic.Append(NS_ConvertUTF16toUTF8(name)); + + obs->RemoveObserver(this, topic.get()); + } +} + +nsresult +BrowserElementAudioChannel::Initialize() +{ + if (!mFrameLoader) { + nsCOMPtr window = GetOwner(); + if (!window) { + return NS_ERROR_FAILURE; + } + + mFrameWindow = window->GetScriptableTop(); + mFrameWindow = mFrameWindow->GetOuterWindow(); + return NS_OK; + } + + nsCOMPtr docShell; + nsresult rv = mFrameLoader->GetDocShell(getter_AddRefs(docShell)); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + if (docShell) { + nsCOMPtr window = docShell->GetWindow(); + if (!window) { + return NS_ERROR_FAILURE; + } + + mFrameWindow = window->GetScriptableTop(); + mFrameWindow = mFrameWindow->GetOuterWindow(); + return NS_OK; + } + + rv = mFrameLoader->GetTabParent(getter_AddRefs(mTabParent)); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + MOZ_ASSERT(mTabParent); + return NS_OK; +} + +JSObject* +BrowserElementAudioChannel::WrapObject(JSContext *aCx, + JS::Handle aGivenProto) +{ + return BrowserElementAudioChannelBinding::Wrap(aCx, this, aGivenProto); +} + +AudioChannel +BrowserElementAudioChannel::Name() const +{ + MOZ_ASSERT(NS_IsMainThread()); + return mAudioChannel; +} + +namespace { + +class BaseRunnable : public Runnable +{ +protected: + nsCOMPtr mParentWindow; + nsCOMPtr mFrameWindow; + RefPtr mRequest; + AudioChannel mAudioChannel; + + virtual void DoWork(AudioChannelService* aService, + JSContext* aCx) = 0; + +public: + BaseRunnable(nsPIDOMWindowInner* aParentWindow, + nsPIDOMWindowOuter* aFrameWindow, + DOMRequest* aRequest, AudioChannel aAudioChannel) + : mParentWindow(aParentWindow) + , mFrameWindow(aFrameWindow) + , mRequest(aRequest) + , mAudioChannel(aAudioChannel) + {} + + NS_IMETHOD Run() override + { + RefPtr service = AudioChannelService::GetOrCreate(); + if (!service) { + return NS_OK; + } + + AutoJSAPI jsapi; + if (!jsapi.Init(mParentWindow)) { + mRequest->FireError(NS_ERROR_FAILURE); + return NS_OK; + } + + DoWork(service, jsapi.cx()); + return NS_OK; + } +}; + +class GetVolumeRunnable final : public BaseRunnable +{ +public: + GetVolumeRunnable(nsPIDOMWindowInner* aParentWindow, + nsPIDOMWindowOuter* aFrameWindow, + DOMRequest* aRequest, AudioChannel aAudioChannel) + : BaseRunnable(aParentWindow, aFrameWindow, aRequest, aAudioChannel) + {} + +protected: + virtual void DoWork(AudioChannelService* aService, JSContext* aCx) override + { + float volume = aService->GetAudioChannelVolume(mFrameWindow, mAudioChannel); + + JS::Rooted value(aCx); + if (!ToJSValue(aCx, volume, &value)) { + mRequest->FireError(NS_ERROR_FAILURE); + return; + } + + mRequest->FireSuccess(value); + } +}; + +class GetMutedRunnable final : public BaseRunnable +{ +public: + GetMutedRunnable(nsPIDOMWindowInner* aParentWindow, + nsPIDOMWindowOuter* aFrameWindow, + DOMRequest* aRequest, AudioChannel aAudioChannel) + : BaseRunnable(aParentWindow, aFrameWindow, aRequest, aAudioChannel) + {} + +protected: + virtual void DoWork(AudioChannelService* aService, JSContext* aCx) override + { + bool muted = aService->GetAudioChannelMuted(mFrameWindow, mAudioChannel); + + JS::Rooted value(aCx); + if (!ToJSValue(aCx, muted, &value)) { + mRequest->FireError(NS_ERROR_FAILURE); + return; + } + + mRequest->FireSuccess(value); + } +}; + +class IsActiveRunnable final : public BaseRunnable +{ + bool mActive; + bool mValueKnown; + +public: + IsActiveRunnable(nsPIDOMWindowInner* aParentWindow, + nsPIDOMWindowOuter* aFrameWindow, + DOMRequest* aRequest, AudioChannel aAudioChannel, + bool aActive) + : BaseRunnable(aParentWindow, aFrameWindow, aRequest, aAudioChannel) + , mActive(aActive) + , mValueKnown(true) + {} + + IsActiveRunnable(nsPIDOMWindowInner* aParentWindow, + nsPIDOMWindowOuter* aFrameWindow, + DOMRequest* aRequest, AudioChannel aAudioChannel) + : BaseRunnable(aParentWindow, aFrameWindow, aRequest, aAudioChannel) + , mActive(true) + , mValueKnown(false) + {} + +protected: + virtual void DoWork(AudioChannelService* aService, JSContext* aCx) override + { + if (!mValueKnown) { + mActive = aService->IsAudioChannelActive(mFrameWindow, mAudioChannel); + } + + JS::Rooted value(aCx); + if (!ToJSValue(aCx, mActive, &value)) { + mRequest->FireError(NS_ERROR_FAILURE); + return; + } + + mRequest->FireSuccess(value); + } +}; + +class FireSuccessRunnable final : public BaseRunnable +{ +public: + FireSuccessRunnable(nsPIDOMWindowInner* aParentWindow, + nsPIDOMWindowOuter* aFrameWindow, + DOMRequest* aRequest, AudioChannel aAudioChannel) + : BaseRunnable(aParentWindow, aFrameWindow, aRequest, aAudioChannel) + {} + +protected: + virtual void DoWork(AudioChannelService* aService, JSContext* aCx) override + { + JS::Rooted value(aCx); + mRequest->FireSuccess(value); + } +}; + +} // anonymous namespace + +already_AddRefed +BrowserElementAudioChannel::GetVolume(ErrorResult& aRv) +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (!mFrameWindow) { + nsCOMPtr request; + aRv = mBrowserElementAPI->GetAudioChannelVolume((uint32_t)mAudioChannel, + getter_AddRefs(request)); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } + + return request.forget().downcast(); + } + + RefPtr domRequest = new DOMRequest(GetOwner()); + + nsCOMPtr runnable = + new GetVolumeRunnable(GetOwner(), mFrameWindow, domRequest, mAudioChannel); + NS_DispatchToMainThread(runnable); + + return domRequest.forget(); +} + +already_AddRefed +BrowserElementAudioChannel::SetVolume(float aVolume, ErrorResult& aRv) +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (!mFrameWindow) { + nsCOMPtr request; + aRv = mBrowserElementAPI->SetAudioChannelVolume((uint32_t)mAudioChannel, + aVolume, + getter_AddRefs(request)); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } + + return request.forget().downcast(); + } + + RefPtr service = AudioChannelService::GetOrCreate(); + if (service) { + service->SetAudioChannelVolume(mFrameWindow, mAudioChannel, aVolume); + } + + RefPtr domRequest = new DOMRequest(GetOwner()); + nsCOMPtr runnable = new FireSuccessRunnable(GetOwner(), + mFrameWindow, + domRequest, + mAudioChannel); + NS_DispatchToMainThread(runnable); + + return domRequest.forget(); +} + +already_AddRefed +BrowserElementAudioChannel::GetMuted(ErrorResult& aRv) +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (!mFrameWindow) { + nsCOMPtr request; + aRv = mBrowserElementAPI->GetAudioChannelMuted((uint32_t)mAudioChannel, + getter_AddRefs(request)); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } + + return request.forget().downcast(); + } + + RefPtr domRequest = new DOMRequest(GetOwner()); + + nsCOMPtr runnable = + new GetMutedRunnable(GetOwner(), mFrameWindow, domRequest, mAudioChannel); + NS_DispatchToMainThread(runnable); + + return domRequest.forget(); +} + +already_AddRefed +BrowserElementAudioChannel::SetMuted(bool aMuted, ErrorResult& aRv) +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (!mFrameWindow) { + nsCOMPtr request; + aRv = mBrowserElementAPI->SetAudioChannelMuted((uint32_t)mAudioChannel, + aMuted, + getter_AddRefs(request)); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } + + return request.forget().downcast(); + } + + RefPtr service = AudioChannelService::GetOrCreate(); + if (service) { + service->SetAudioChannelMuted(mFrameWindow, mAudioChannel, aMuted); + } + + RefPtr domRequest = new DOMRequest(GetOwner()); + nsCOMPtr runnable = new FireSuccessRunnable(GetOwner(), + mFrameWindow, + domRequest, + mAudioChannel); + NS_DispatchToMainThread(runnable); + + return domRequest.forget(); +} + +already_AddRefed +BrowserElementAudioChannel::IsActive(ErrorResult& aRv) +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (mState != eStateUnknown) { + RefPtr domRequest = new DOMRequest(GetOwner()); + + nsCOMPtr runnable = + new IsActiveRunnable(GetOwner(), mFrameWindow, domRequest, mAudioChannel, + mState == eStateActive); + NS_DispatchToMainThread(runnable); + + return domRequest.forget(); + } + + if (!mFrameWindow) { + nsCOMPtr request; + aRv = mBrowserElementAPI->IsAudioChannelActive((uint32_t)mAudioChannel, + getter_AddRefs(request)); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } + + return request.forget().downcast(); + } + + RefPtr domRequest = new DOMRequest(GetOwner()); + + nsCOMPtr runnable = + new IsActiveRunnable(GetOwner(), mFrameWindow, domRequest, mAudioChannel); + NS_DispatchToMainThread(runnable); + + return domRequest.forget(); +} + +NS_IMETHODIMP +BrowserElementAudioChannel::Observe(nsISupports* aSubject, const char* aTopic, + const char16_t* aData) +{ + nsAutoString name; + AudioChannelService::GetAudioChannelString(mAudioChannel, name); + + nsAutoCString topic; + topic.Assign("audiochannel-activity-"); + topic.Append(NS_ConvertUTF16toUTF8(name)); + + if (strcmp(topic.get(), aTopic)) { + return NS_OK; + } + + // Message received from the child. + if (!mFrameWindow) { + if (mTabParent == aSubject) { + ProcessStateChanged(aData); + } + + return NS_OK; + } + + nsCOMPtr wrapper = do_QueryInterface(aSubject); + if (!wrapper) { + bool isNested = false; + nsresult rv = IsFromNestedFrame(aSubject, isNested); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + if (isNested) { + ProcessStateChanged(aData); + } + + return NS_OK; + } + + uint64_t windowID; + nsresult rv = wrapper->GetData(&windowID); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + if (windowID != mFrameWindow->WindowID()) { + return NS_OK; + } + + ProcessStateChanged(aData); + return NS_OK; +} + +void +BrowserElementAudioChannel::ProcessStateChanged(const char16_t* aData) +{ + MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug, + ("BrowserElementAudioChannel, ProcessStateChanged, this = %p, " + "type = %d\n", this, mAudioChannel)); + + nsAutoString value(aData); + mState = value.EqualsASCII("active") ? eStateActive : eStateInactive; + DispatchTrustedEvent(NS_LITERAL_STRING("activestatechanged")); +} + +bool +BrowserElementAudioChannel::IsSystemAppWindow(nsPIDOMWindowOuter* aWindow) const +{ + nsCOMPtr doc = aWindow->GetExtantDoc(); + if (!doc) { + return false; + } + + if (nsContentUtils::IsChromeDoc(doc)) { + return true; + } + + nsAdoptingCString systemAppUrl = + mozilla::Preferences::GetCString("b2g.system_startup_url"); + if (!systemAppUrl) { + return false; + } + + nsCOMPtr principal = doc->NodePrincipal(); + nsCOMPtr uri; + principal->GetURI(getter_AddRefs(uri)); + + if (uri) { + nsAutoCString spec; + uri->GetSpec(spec); + + if (spec.Equals(systemAppUrl)) { + return true; + } + } + + return false; +} + +nsresult +BrowserElementAudioChannel::IsFromNestedFrame(nsISupports* aSubject, + bool& aIsNested) const +{ + aIsNested = false; + nsCOMPtr iTabParent = do_QueryInterface(aSubject); + if (!iTabParent) { + return NS_ERROR_FAILURE; + } + + RefPtr tabParent = TabParent::GetFrom(iTabParent); + if (!tabParent) { + return NS_ERROR_FAILURE; + } + + Element* element = tabParent->GetOwnerElement(); + if (!element) { + return NS_ERROR_FAILURE; + } + + // Since the normal OOP processes are opened out from b2g process, the owner + // of their tabParent are the same - system app window. Therefore, in order + // to find the case of nested MozFrame, we need to exclude this situation. + nsCOMPtr window = element->OwnerDoc()->GetWindow(); + if (window == mFrameWindow && !IsSystemAppWindow(window)) { + aIsNested = true; + return NS_OK; + } + + return NS_OK; +} + +} // dom namespace +} // mozilla namespace diff --git a/dom/browser-element/BrowserElementAudioChannel.h b/dom/browser-element/BrowserElementAudioChannel.h new file mode 100644 index 000000000..237e5edc8 --- /dev/null +++ b/dom/browser-element/BrowserElementAudioChannel.h @@ -0,0 +1,97 @@ +/* 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/. */ + +#ifndef mozilla_dom_BrowserElementAudioChannels_h +#define mozilla_dom_BrowserElementAudioChannels_h + +#include "mozilla/dom/AudioChannelBinding.h" +#include "mozilla/dom/BindingDeclarations.h" +#include "mozilla/DOMEventTargetHelper.h" +#include "mozilla/ErrorResult.h" +#include "nsCycleCollectionParticipant.h" +#include "nsIObserver.h" +#include "nsIFrameLoader.h" +#include "nsWeakReference.h" +#include "nsWrapperCache.h" + +class nsIBrowserElementAPI; +class nsITabParent; +class nsPIDOMWindowOuter; + +namespace mozilla { +namespace dom { + +class DOMRequest; + +class BrowserElementAudioChannel final : public DOMEventTargetHelper + , public nsSupportsWeakReference + , public nsIObserver +{ +public: + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_NSIOBSERVER + + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(BrowserElementAudioChannel, + DOMEventTargetHelper) + + static already_AddRefed + Create(nsPIDOMWindowInner* aWindow, + nsIFrameLoader* aFrameLoader, + nsIBrowserElementAPI* aAPI, + AudioChannel aAudioChannel, + ErrorResult& aRv); + + // WebIDL methods + + virtual JSObject* WrapObject(JSContext *aCx, + JS::Handle aGivenProto) override; + + AudioChannel Name() const; + + already_AddRefed GetVolume(ErrorResult& aRv); + already_AddRefed SetVolume(float aVolume, ErrorResult& aRv); + + already_AddRefed GetMuted(ErrorResult& aRv); + already_AddRefed SetMuted(bool aMuted, ErrorResult& aRv); + + already_AddRefed IsActive(ErrorResult& aRv); + + IMPL_EVENT_HANDLER(activestatechanged); + +private: + BrowserElementAudioChannel(nsPIDOMWindowInner* aWindow, + nsIFrameLoader* aFrameLoader, + nsIBrowserElementAPI* aAPI, + AudioChannel aAudioChannel); + + bool IsSystemAppWindow(nsPIDOMWindowOuter* aWindow) const; + + // This method is used to check whether we're in the nested-mozbrower-frame + // situation, see bug1214148. + nsresult IsFromNestedFrame(nsISupports* aSubject, + bool& aIsNested) const; + + ~BrowserElementAudioChannel(); + + nsresult Initialize(); + + void ProcessStateChanged(const char16_t* aData); + + nsCOMPtr mFrameLoader; + nsCOMPtr mBrowserElementAPI; + nsCOMPtr mTabParent; + nsCOMPtr mFrameWindow; + AudioChannel mAudioChannel; + + enum { + eStateActive, + eStateInactive, + eStateUnknown + } mState; +}; + +} // dom namespace +} // mozilla namespace + +#endif // mozilla_dom_BrowserElementAudioChannels_h diff --git a/dom/browser-element/BrowserElementChild.js b/dom/browser-element/BrowserElementChild.js new file mode 100644 index 000000000..066be66d2 --- /dev/null +++ b/dom/browser-element/BrowserElementChild.js @@ -0,0 +1,83 @@ +/* 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"; + +var { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; +Cu.import("resource://gre/modules/Services.jsm"); + +function debug(msg) { + //dump("BrowserElementChild - " + msg + "\n"); +} + +// NB: this must happen before we process any messages from +// mozbrowser API clients. +docShell.isActive = true; + +function parentDocShell(docshell) { + if (!docshell) { + return null; + } + let treeitem = docshell.QueryInterface(Ci.nsIDocShellTreeItem); + return treeitem.parent ? treeitem.parent.QueryInterface(Ci.nsIDocShell) : null; +} + +function isTopBrowserElement(docShell) { + while (docShell) { + docShell = parentDocShell(docShell); + if (docShell && docShell.isMozBrowserOrApp) { + return false; + } + } + return true; +} + +var BrowserElementIsReady; + +debug(`Might load BE scripts: BEIR: ${BrowserElementIsReady}`); +if (!BrowserElementIsReady) { + debug("Loading BE scripts") + if (!("BrowserElementIsPreloaded" in this)) { + if (isTopBrowserElement(docShell)) { + if (Services.prefs.getBoolPref("dom.mozInputMethod.enabled")) { + try { + Services.scriptloader.loadSubScript("chrome://global/content/forms.js"); + } catch (e) { + } + } + } + + if(Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) { + // general content apps + if (isTopBrowserElement(docShell)) { + Services.scriptloader.loadSubScript("chrome://global/content/BrowserElementCopyPaste.js"); + } + } else { + // rocketbar in system app and other in-process case (ex. B2G desktop client) + Services.scriptloader.loadSubScript("chrome://global/content/BrowserElementCopyPaste.js"); + } + + Services.scriptloader.loadSubScript("chrome://global/content/BrowserElementChildPreload.js"); + } + + function onDestroy() { + removeMessageListener("browser-element-api:destroy", onDestroy); + + if (api) { + api.destroy(); + } + if ("CopyPasteAssistent" in this) { + CopyPasteAssistent.destroy(); + } + + BrowserElementIsReady = false; + } + addMessageListener("browser-element-api:destroy", onDestroy); + + BrowserElementIsReady = true; +} else { + debug("BE already loaded, abort"); +} + +sendAsyncMessage('browser-element-api:call', { 'msg_name': 'hello' }); diff --git a/dom/browser-element/BrowserElementChildPreload.js b/dom/browser-element/BrowserElementChildPreload.js new file mode 100644 index 000000000..780dfa80e --- /dev/null +++ b/dom/browser-element/BrowserElementChildPreload.js @@ -0,0 +1,1823 @@ +/* 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"; + +function debug(msg) { + // dump("BrowserElementChildPreload - " + msg + "\n"); +} + +debug("loaded"); + +var BrowserElementIsReady; + +var { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/BrowserElementPromptService.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); +Cu.import("resource://gre/modules/ExtensionContent.jsm"); + +XPCOMUtils.defineLazyServiceGetter(this, "acs", + "@mozilla.org/audiochannel/service;1", + "nsIAudioChannelService"); +XPCOMUtils.defineLazyModuleGetter(this, "ManifestFinder", + "resource://gre/modules/ManifestFinder.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "ManifestObtainer", + "resource://gre/modules/ManifestObtainer.jsm"); + + +var kLongestReturnedString = 128; + +var Timer = Components.Constructor("@mozilla.org/timer;1", + "nsITimer", + "initWithCallback"); + +function sendAsyncMsg(msg, data) { + // Ensure that we don't send any messages before BrowserElementChild.js + // finishes loading. + if (!BrowserElementIsReady) { + return; + } + + if (!data) { + data = { }; + } + + data.msg_name = msg; + sendAsyncMessage('browser-element-api:call', data); +} + +function sendSyncMsg(msg, data) { + // Ensure that we don't send any messages before BrowserElementChild.js + // finishes loading. + if (!BrowserElementIsReady) { + return; + } + + if (!data) { + data = { }; + } + + data.msg_name = msg; + return sendSyncMessage('browser-element-api:call', data); +} + +var CERTIFICATE_ERROR_PAGE_PREF = 'security.alternate_certificate_error_page'; + +var OBSERVED_EVENTS = [ + 'xpcom-shutdown', + 'audio-playback', + 'activity-done', + 'will-launch-app' +]; + +var LISTENED_EVENTS = [ + { type: "DOMTitleChanged", useCapture: true, wantsUntrusted: false }, + { type: "DOMLinkAdded", useCapture: true, wantsUntrusted: false }, + { type: "MozScrolledAreaChanged", useCapture: true, wantsUntrusted: false }, + { type: "MozDOMFullscreen:Request", useCapture: true, wantsUntrusted: false }, + { type: "MozDOMFullscreen:NewOrigin", useCapture: true, wantsUntrusted: false }, + { type: "MozDOMFullscreen:Exit", useCapture: true, wantsUntrusted: false }, + { type: "DOMMetaAdded", useCapture: true, wantsUntrusted: false }, + { type: "DOMMetaChanged", useCapture: true, wantsUntrusted: false }, + { type: "DOMMetaRemoved", useCapture: true, wantsUntrusted: false }, + { type: "scrollviewchange", useCapture: true, wantsUntrusted: false }, + { type: "click", useCapture: false, wantsUntrusted: false }, + // This listens to unload events from our message manager, but /not/ from + // the |content| window. That's because the window's unload event doesn't + // bubble, and we're not using a capturing listener. If we'd used + // useCapture == true, we /would/ hear unload events from the window, which + // is not what we want! + { type: "unload", useCapture: false, wantsUntrusted: false }, +]; + +// We are using the system group for those events so if something in the +// content called .stopPropagation() this will still be called. +var LISTENED_SYSTEM_EVENTS = [ + { type: "DOMWindowClose", useCapture: false }, + { type: "DOMWindowCreated", useCapture: false }, + { type: "DOMWindowResize", useCapture: false }, + { type: "contextmenu", useCapture: false }, + { type: "scroll", useCapture: false }, +]; + +/** + * The BrowserElementChild implements one half of '; + // For kicks, this test uses a display:none iframe. This shouldn't make a + // difference in anything. + iframe.style.display = 'none'; + document.body.appendChild(iframe); +} + +var numMsgReceived = 0; +function outerIframeLoaded() { + // If you're changing the amount of is() calls in injectedScript, + // also change the number in waitForMessages accordingly + var injectedScript = + "data:,function is(a, b, desc) { \ + if (a == b) { \ + sendAsyncMessage('test:test-pass', desc); \ + } else { \ + sendAsyncMessage('test:test-fail', desc + ' ' + a + ' != ' + b); \ + } \ + } \ + is(content.window.top, content.window, 'top'); \ + is(content.window.content, content.window, 'content'); \ + is(content.window.parent, content.window, 'parent'); \ + is(content.window.frameElement, null, 'frameElement'); \ + var innerIframe = content.document.getElementById('inner-iframe'); \ + var innerWindow = innerIframe.contentWindow; \ + is(innerWindow.top, content.window, 'inner top'); \ + is(innerWindow.content, content.window, 'inner content'); \ + is(innerWindow.parent, content.window, 'inner parent'); \ + is(innerWindow.frameElement, innerIframe, 'inner frameElement');" + + var mm = SpecialPowers.getBrowserFrameMessageManager(iframe); + + function onRecvTestPass(msg) { + numMsgReceived++; + ok(true, msg.json); + } + mm.addMessageListener('test:test-pass', onRecvTestPass); + + function onRecvTestFail(msg) { + numMsgReceived++; + ok(false, msg.json); + } + mm.addMessageListener('test:test-fail', onRecvTestFail); + + mm.loadFrameScript(injectedScript, /* allowDelayedLoad = */ false); + + // 8 is the number of is() calls in injectedScript + waitForMessages(8); +} + +function waitForMessages(num) { + if (numMsgReceived < num) { + SimpleTest.executeSoon(function() { waitForMessages(num); }); + return; + } + + SimpleTest.finish(); +} + +addEventListener('testready', runTest); diff --git a/dom/browser-element/mochitest/browserElement_Viewmode.js b/dom/browser-element/mochitest/browserElement_Viewmode.js new file mode 100644 index 000000000..51627d9a8 --- /dev/null +++ b/dom/browser-element/mochitest/browserElement_Viewmode.js @@ -0,0 +1,71 @@ +/* Any copyright is dedicated to the public domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test that the onmozbrowsermetachange event for viewmode works. +"use strict"; + +SimpleTest.waitForExplicitFinish(); +browserElementTestHelpers.setEnabledPref(true); +browserElementTestHelpers.addPermission(); + +function runTest() { + function loadFrameScript(script) { + SpecialPowers.getBrowserFrameMessageManager(iframe1) + .loadFrameScript('data:,' + script, + /* allowDelayedLoad = */ false); + } + + let iframe1 = document.createElement('iframe'); + iframe1.setAttribute('mozbrowser', 'true'); + iframe1.src = "http://test/tests/dom/browser-element/mochitest/file_browserElement_Viewmode.html"; + iframe1.addEventListener('mozbrowsermetachange', tests); + document.body.appendChild(iframe1); + + let numMetaChanges = 0; + function tests(e) { + let detail = e.detail; + + switch (numMetaChanges++) { + case 0: { + is(detail.name, 'viewmode', 'name matches'); + is(detail.content, 'projection=stereo', 'content matches'); + is(detail.type, 'added', 'type matches'); + + let script = + "var meta = content.document.head.querySelector('meta');" + + "meta.content = 'projection=mono';"; + loadFrameScript(script); + break; + } + + case 1: { + is(detail.name, 'viewmode', 'name matches'); + is(detail.content, 'projection=mono', 'content matches'); + is(detail.type, 'changed', 'type matches'); + + let script = + "var meta = content.document.head.querySelector('meta');" + + "meta.parentNode.removeChild(meta);"; + loadFrameScript(script); + break; + } + + case 2: { + is(detail.name, 'viewmode', 'name matches'); + is(detail.content, 'projection=mono', 'content matches'); + is(detail.type, 'removed', 'type matches'); + + SimpleTest.finish(); + break; + } + + default: { + ok(false, 'Too many metachange events.'); + break; + } + } + }; +} + +window.addEventListener('testready', runTest); + diff --git a/dom/browser-element/mochitest/browserElement_VisibilityChange.js b/dom/browser-element/mochitest/browserElement_VisibilityChange.js new file mode 100644 index 000000000..d7db5f45d --- /dev/null +++ b/dom/browser-element/mochitest/browserElement_VisibilityChange.js @@ -0,0 +1,42 @@ +/* Any copyright is dedicated to the public domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test that the onmozbrowservisibilitychange event works. +'use strict'; + +SimpleTest.waitForExplicitFinish(); +browserElementTestHelpers.setEnabledPref(true); + +var iframe1 = null; +function runTest() { + iframe1 = document.createElement('iframe'); + iframe1.setAttribute('mozbrowser', 'true'); + document.body.appendChild(iframe1); + + iframe1.src = 'data:text/html,Title'; + checkVisibilityFalse(); +} + +function checkVisibilityFalse() { + iframe1.addEventListener('mozbrowservisibilitychange', function onvisibilitychange(e) { + iframe1.removeEventListener(e.type, onvisibilitychange); + + is(e.detail.visible, false, 'Visibility should be false'); + checkVisibilityTrue(); + }); + + iframe1.setVisible(false); +} + +function checkVisibilityTrue() { + iframe1.addEventListener('mozbrowservisibilitychange', function onvisibilitychange(e) { + iframe1.removeEventListener(e.type, onvisibilitychange); + + is(e.detail.visible, true, 'Visibility should be true'); + SimpleTest.finish(); + }); + + iframe1.setVisible(true); +} + +addEventListener('testready', runTest); diff --git a/dom/browser-element/mochitest/browserElement_XFrameOptions.js b/dom/browser-element/mochitest/browserElement_XFrameOptions.js new file mode 100644 index 000000000..391c2cb95 --- /dev/null +++ b/dom/browser-element/mochitest/browserElement_XFrameOptions.js @@ -0,0 +1,26 @@ +/* Any copyright is dedicated to the public domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Bug 770239 - Test that we can load pages with X-Frame-Options: Deny inside +// + + diff --git a/dom/browser-element/mochitest/file_browserElement_AlertInFrame_Inner.html b/dom/browser-element/mochitest/file_browserElement_AlertInFrame_Inner.html new file mode 100644 index 000000000..958413f2d --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_AlertInFrame_Inner.html @@ -0,0 +1,12 @@ + + +I'm file_browserElement_AlertInFrame_Inner.html. + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_AudioChannelMutedByDefault.html b/dom/browser-element/mochitest/file_browserElement_AudioChannelMutedByDefault.html new file mode 100644 index 000000000..ea4f3bde1 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_AudioChannelMutedByDefault.html @@ -0,0 +1,65 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_AudioChannelSeeking.html b/dom/browser-element/mochitest/file_browserElement_AudioChannelSeeking.html new file mode 100644 index 000000000..293f6cadc --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_AudioChannelSeeking.html @@ -0,0 +1,62 @@ + + + + + + \ No newline at end of file diff --git a/dom/browser-element/mochitest/file_browserElement_AudioChannel_nested.html b/dom/browser-element/mochitest/file_browserElement_AudioChannel_nested.html new file mode 100644 index 000000000..c37a642e2 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_AudioChannel_nested.html @@ -0,0 +1,63 @@ + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_BrowserWindowNamespace.html b/dom/browser-element/mochitest/file_browserElement_BrowserWindowNamespace.html new file mode 100644 index 000000000..7903a63b8 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_BrowserWindowNamespace.html @@ -0,0 +1,9 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_CloseFromOpener.html b/dom/browser-element/mochitest/file_browserElement_CloseFromOpener.html new file mode 100644 index 000000000..4a08c2792 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_CloseFromOpener.html @@ -0,0 +1,8 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_CookiesNotThirdParty.html b/dom/browser-element/mochitest/file_browserElement_CookiesNotThirdParty.html new file mode 100644 index 000000000..62f39d8ff --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_CookiesNotThirdParty.html @@ -0,0 +1,25 @@ + + +file_browserElement_CookiesNotThirdParty.html + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_ExecuteScript.html b/dom/browser-element/mochitest/file_browserElement_ExecuteScript.html new file mode 100644 index 000000000..d2c364aeb --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_ExecuteScript.html @@ -0,0 +1,8 @@ + + + + +foo + diff --git a/dom/browser-element/mochitest/file_browserElement_ForwardName.html b/dom/browser-element/mochitest/file_browserElement_ForwardName.html new file mode 100644 index 000000000..60b41bbc6 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_ForwardName.html @@ -0,0 +1,15 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_FrameWrongURI.html b/dom/browser-element/mochitest/file_browserElement_FrameWrongURI.html new file mode 100644 index 000000000..1a6cfde0a --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_FrameWrongURI.html @@ -0,0 +1,5 @@ + diff --git a/dom/browser-element/mochitest/file_browserElement_LoadEvents.html b/dom/browser-element/mochitest/file_browserElement_LoadEvents.html new file mode 100644 index 000000000..7e0705e9d --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_LoadEvents.html @@ -0,0 +1,14 @@ + + + + + +Aloha! My URL is . + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_Metachange.sjs b/dom/browser-element/mochitest/file_browserElement_Metachange.sjs new file mode 100644 index 000000000..c63a047f7 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_Metachange.sjs @@ -0,0 +1,7 @@ +function handleRequest(request, response) +{ + var p = request.queryString.split('|'); + response.setHeader('Content-Language', p[0], false); + response.write(' 1 ? (' lang="' + p[1] + '"') : '') + '>'); +} diff --git a/dom/browser-element/mochitest/file_browserElement_NextPaint.html b/dom/browser-element/mochitest/file_browserElement_NextPaint.html new file mode 100644 index 000000000..d460fc5b9 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_NextPaint.html @@ -0,0 +1,9 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_NoAudioTrack.html b/dom/browser-element/mochitest/file_browserElement_NoAudioTrack.html new file mode 100644 index 000000000..14304e469 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_NoAudioTrack.html @@ -0,0 +1,32 @@ + + + + + + \ No newline at end of file diff --git a/dom/browser-element/mochitest/file_browserElement_Open1.html b/dom/browser-element/mochitest/file_browserElement_Open1.html new file mode 100644 index 000000000..c74415e2e --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_Open1.html @@ -0,0 +1,34 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_Open2.html b/dom/browser-element/mochitest/file_browserElement_Open2.html new file mode 100644 index 000000000..af9d2b6cd --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_Open2.html @@ -0,0 +1,5 @@ + + +
test
+ + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenMixedProcess.html b/dom/browser-element/mochitest/file_browserElement_OpenMixedProcess.html new file mode 100644 index 000000000..873a99f1a --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenMixedProcess.html @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenNamed.html b/dom/browser-element/mochitest/file_browserElement_OpenNamed.html new file mode 100644 index 000000000..7d2a7661c --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenNamed.html @@ -0,0 +1,7 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenNamed2.html b/dom/browser-element/mochitest/file_browserElement_OpenNamed2.html new file mode 100644 index 000000000..6bf37bb53 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenNamed2.html @@ -0,0 +1,7 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenWindowDifferentOrigin.html b/dom/browser-element/mochitest/file_browserElement_OpenWindowDifferentOrigin.html new file mode 100644 index 000000000..dc08f341c --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenWindowDifferentOrigin.html @@ -0,0 +1,18 @@ + + + +
+ + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenWindowEmpty.html b/dom/browser-element/mochitest/file_browserElement_OpenWindowEmpty.html new file mode 100644 index 000000000..fefd6f6ca --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenWindowEmpty.html @@ -0,0 +1,7 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenWindowInFrame.html b/dom/browser-element/mochitest/file_browserElement_OpenWindowInFrame.html new file mode 100644 index 000000000..c1c1cecd3 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenWindowInFrame.html @@ -0,0 +1,6 @@ + + +I'm file_browserElement_OpenInFrame.html. + + + diff --git a/dom/browser-element/mochitest/file_browserElement_OpenWindowRejected.html b/dom/browser-element/mochitest/file_browserElement_OpenWindowRejected.html new file mode 100644 index 000000000..eb6786979 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_OpenWindowRejected.html @@ -0,0 +1,16 @@ + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_PrivateBrowsing.html b/dom/browser-element/mochitest/file_browserElement_PrivateBrowsing.html new file mode 100644 index 000000000..40ff9d8af --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_PrivateBrowsing.html @@ -0,0 +1,15 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_SecurityChange.html b/dom/browser-element/mochitest/file_browserElement_SecurityChange.html new file mode 100644 index 000000000..09c006e7c --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_SecurityChange.html @@ -0,0 +1,21 @@ + + + + + + + +file_browserElement_SecurityChange.html. + + diff --git a/dom/browser-element/mochitest/file_browserElement_SendEvent.html b/dom/browser-element/mochitest/file_browserElement_SendEvent.html new file mode 100644 index 000000000..3c510180d --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_SendEvent.html @@ -0,0 +1,15 @@ + + + diff --git a/dom/browser-element/mochitest/file_browserElement_SetInputMethodActive.html b/dom/browser-element/mochitest/file_browserElement_SetInputMethodActive.html new file mode 100644 index 000000000..5eb17e5f1 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_SetInputMethodActive.html @@ -0,0 +1,2 @@ + +

This is targetted mozbrowser frame.

diff --git a/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames2_Outer.html b/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames2_Outer.html new file mode 100644 index 000000000..c4fa25d26 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames2_Outer.html @@ -0,0 +1,25 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Inner.html b/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Inner.html new file mode 100644 index 000000000..8f9b871d6 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Inner.html @@ -0,0 +1,18 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Outer.html b/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Outer.html new file mode 100644 index 000000000..6abcc6b0c --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_SetVisibleFrames_Outer.html @@ -0,0 +1,45 @@ + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_TargetBlank.html b/dom/browser-element/mochitest/file_browserElement_TargetBlank.html new file mode 100644 index 000000000..860573a3e --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_TargetBlank.html @@ -0,0 +1,18 @@ + + +Click me + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_TargetTop.html b/dom/browser-element/mochitest/file_browserElement_TargetTop.html new file mode 100644 index 000000000..aad06361d --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_TargetTop.html @@ -0,0 +1,12 @@ + + +
+ + + + diff --git a/dom/browser-element/mochitest/file_browserElement_ThemeColor.html b/dom/browser-element/mochitest/file_browserElement_ThemeColor.html new file mode 100644 index 000000000..f8fb9f116 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_ThemeColor.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_Viewmode.html b/dom/browser-element/mochitest/file_browserElement_Viewmode.html new file mode 100644 index 000000000..422279e0a --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_Viewmode.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_XFrameOptions.sjs b/dom/browser-element/mochitest/file_browserElement_XFrameOptions.sjs new file mode 100644 index 000000000..7e2375680 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_XFrameOptions.sjs @@ -0,0 +1,9 @@ +function handleRequest(request, response) +{ + response.setHeader("X-Frame-Options", request.queryString, false); + response.setHeader("Content-Type", "text/html", false); + + // Tests rely on this page not being entirely blank, because they take + // screenshots to determine whether this page was loaded. + response.write("XFrameOptions test"); +} diff --git a/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.html b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.html new file mode 100644 index 000000000..12a6fd31e --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.html @@ -0,0 +1,43 @@ + + + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.sjs b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.sjs new file mode 100644 index 000000000..4a5dbaace --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsAllowFrom.sjs @@ -0,0 +1,16 @@ +function handleRequest(request, response) +{ + var content = 'step 1'; + if (request.queryString == "iframe1") { + response.setHeader("X-Frame-Options", "Allow-From http://mochi.test:8888/") + content = 'finish'; + } else { + response.setHeader("X-Frame-Options", "Allow-From http://example.com") + } + + response.setHeader("Content-Type", "text/html", false); + + // Tests rely on this page not being entirely blank, because they take + // screenshots to determine whether this page was loaded. + response.write("XFrameOptions test"); +} diff --git a/dom/browser-element/mochitest/file_browserElement_XFrameOptionsDeny.html b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsDeny.html new file mode 100644 index 000000000..338275aa3 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsDeny.html @@ -0,0 +1,57 @@ + + + + + + + + + diff --git a/dom/browser-element/mochitest/file_browserElement_XFrameOptionsSameOrigin.html b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsSameOrigin.html new file mode 100644 index 000000000..11e75f141 --- /dev/null +++ b/dom/browser-element/mochitest/file_browserElement_XFrameOptionsSameOrigin.html @@ -0,0 +1,5 @@ + + + + + diff --git a/dom/browser-element/mochitest/file_bug709759.sjs b/dom/browser-element/mochitest/file_bug709759.sjs new file mode 100644 index 000000000..ce78b188b --- /dev/null +++ b/dom/browser-element/mochitest/file_bug709759.sjs @@ -0,0 +1,5 @@ +function handleRequest(request, response) +{ + response.processAsync(); + response.setHeader("Content-Type", "image/jpeg", false); +} \ No newline at end of file diff --git a/dom/browser-element/mochitest/file_bug741717.sjs b/dom/browser-element/mochitest/file_bug741717.sjs new file mode 100644 index 000000000..bde9ddfae --- /dev/null +++ b/dom/browser-element/mochitest/file_bug741717.sjs @@ -0,0 +1,27 @@ +function handleRequest(request, response) +{ + function etag(count) { + return '"anetag' + count + '"'; + } + + var count = parseInt(getState('count')); + if (!count) + count = 0; + + // reload(false) will make a request with If-None-Match headers + var ifNoneMatch = request.hasHeader("If-None-Match") ? + request.getHeader("If-None-Match") : ""; + + if (ifNoneMatch === etag(count)) { + response.setStatusLine(request.httpVersion, "304", "Not Modified"); + return; + } + + count++; + setState('count', count + ''); + + response.setHeader('Content-Type', 'text/html', false); + response.setHeader('Cache-Control', 'public, max-age=3600', false); + response.setHeader("ETag", etag(count), false); + response.write('' + count + ''); +} diff --git a/dom/browser-element/mochitest/file_download_bin.sjs b/dom/browser-element/mochitest/file_download_bin.sjs new file mode 100644 index 000000000..fd394ea0a --- /dev/null +++ b/dom/browser-element/mochitest/file_download_bin.sjs @@ -0,0 +1,4 @@ +function handleRequest(request, response) { + response.setHeader("Content-Type", "application/octet-stream", false); + response.write("BIN"); +} \ No newline at end of file diff --git a/dom/browser-element/mochitest/file_empty.html b/dom/browser-element/mochitest/file_empty.html new file mode 100644 index 000000000..ed21305b9 --- /dev/null +++ b/dom/browser-element/mochitest/file_empty.html @@ -0,0 +1,14 @@ + + + + + +Aloha! My URL is . + + + + + diff --git a/dom/browser-element/mochitest/file_empty_script.js b/dom/browser-element/mochitest/file_empty_script.js new file mode 100644 index 000000000..e69de29bb diff --git a/dom/browser-element/mochitest/file_focus.html b/dom/browser-element/mochitest/file_focus.html new file mode 100644 index 000000000..0bd3f7aa4 --- /dev/null +++ b/dom/browser-element/mochitest/file_focus.html @@ -0,0 +1,24 @@ + + + +Aloha! My URL is . + + + + + diff --git a/dom/browser-element/mochitest/file_http_401_response.sjs b/dom/browser-element/mochitest/file_http_401_response.sjs new file mode 100644 index 000000000..c40a252c3 --- /dev/null +++ b/dom/browser-element/mochitest/file_http_401_response.sjs @@ -0,0 +1,16 @@ +function handleRequest(request, response) +{ + var auth = ""; + try { + auth = request.getHeader("Authorization"); + } catch(e) {} + + if (auth == "Basic aHR0cHVzZXI6aHR0cHBhc3M=") { + response.setStatusLine("1.1", 200, "OK"); + response.write("http auth success"); + } else { + response.setStatusLine("1.1", 401, "Http authentication required"); + response.setHeader("WWW-Authenticate", "Basic realm=\"http_realm\""); + response.write("http auth failed"); + } +} \ No newline at end of file diff --git a/dom/browser-element/mochitest/file_http_407_response.sjs b/dom/browser-element/mochitest/file_http_407_response.sjs new file mode 100644 index 000000000..da2f27620 --- /dev/null +++ b/dom/browser-element/mochitest/file_http_407_response.sjs @@ -0,0 +1,16 @@ +function handleRequest(request, response) +{ + var auth = ""; + try { + auth = request.getHeader("Proxy-Authorization"); + } catch(e) {} + + if (auth == "Basic cHJveHl1c2VyOnByb3h5cGFzcw==") { + response.setStatusLine("1.1", 200, "OK"); + response.write("http auth success"); + } else { + response.setStatusLine("1.1", 407, "Proxy Authentication Required"); + response.setHeader("Proxy-Authenticate", "Basic realm=\"http_realm\""); + response.write("http auth failed"); + } +} diff --git a/dom/browser-element/mochitest/file_illegal_web_manifest.html b/dom/browser-element/mochitest/file_illegal_web_manifest.html new file mode 100644 index 000000000..d9075b3fc --- /dev/null +++ b/dom/browser-element/mochitest/file_illegal_web_manifest.html @@ -0,0 +1,7 @@ + + + + + + +

Support Page for Web Manifest Tests

diff --git a/dom/browser-element/mochitest/file_post_request.html b/dom/browser-element/mochitest/file_post_request.html new file mode 100644 index 000000000..773193067 --- /dev/null +++ b/dom/browser-element/mochitest/file_post_request.html @@ -0,0 +1,15 @@ + + + + + +
+ + +
+ + diff --git a/dom/browser-element/mochitest/file_web_manifest.html b/dom/browser-element/mochitest/file_web_manifest.html new file mode 100644 index 000000000..783da0f47 --- /dev/null +++ b/dom/browser-element/mochitest/file_web_manifest.html @@ -0,0 +1,6 @@ + + + + + +

Support Page for Web Manifest Tests

diff --git a/dom/browser-element/mochitest/file_web_manifest.json b/dom/browser-element/mochitest/file_web_manifest.json new file mode 100644 index 000000000..57d0c3d42 --- /dev/null +++ b/dom/browser-element/mochitest/file_web_manifest.json @@ -0,0 +1 @@ +{"name": "pass"} diff --git a/dom/browser-element/mochitest/file_wyciwyg.html b/dom/browser-element/mochitest/file_wyciwyg.html new file mode 100644 index 000000000..f53216144 --- /dev/null +++ b/dom/browser-element/mochitest/file_wyciwyg.html @@ -0,0 +1,14 @@ + + +test + + + + + diff --git a/dom/browser-element/mochitest/iframe_file_audio.html b/dom/browser-element/mochitest/iframe_file_audio.html new file mode 100644 index 000000000..605ce2870 --- /dev/null +++ b/dom/browser-element/mochitest/iframe_file_audio.html @@ -0,0 +1,5 @@ + + + + + diff --git a/dom/browser-element/mochitest/mochitest-oop.ini b/dom/browser-element/mochitest/mochitest-oop.ini new file mode 100644 index 000000000..70d38c532 --- /dev/null +++ b/dom/browser-element/mochitest/mochitest-oop.ini @@ -0,0 +1,135 @@ +[DEFAULT] +# Both the "inproc" and "oop" versions of OpenMixedProcess open remote frames, +# so we don't run that test on platforms which don't support OOP tests. +skip-if = os == "android" || e10s +support-files = + browserElement_OpenMixedProcess.js + file_browserElement_ExecuteScript.html + file_browserElement_OpenMixedProcess.html + browserElement_ExecuteScript.js + browserElement_Find.js + browserElement_OpenTab.js + +[test_browserElement_oop_AudioChannelSeeking.html] +tags = audiochannel +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Viewmode.html] +[test_browserElement_oop_ThemeColor.html] +[test_browserElement_inproc_ErrorSecurity.html] +[test_browserElement_inproc_OpenMixedProcess.html] +disabled = disabled for bug 1266035 +[test_browserElement_oop_Alert.html] +[test_browserElement_oop_AlertInFrame.html] +[test_browserElement_oop_AudioChannelMutedByDefault.html] +tags = audiochannel +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Auth.html] +[test_browserElement_oop_BackForward.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_BadScreenshot.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_BrowserWindowResize.html] +[test_browserElement_oop_Close.html] +[test_browserElement_oop_CookiesNotThirdParty.html] +[test_browserElement_oop_CopyPaste.html] +subsuite = clipboard +[test_browserElement_oop_DOMRequestError.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_DataURI.html] +[test_browserElement_oop_DocumentFirstPaint.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Download.html] +disabled = bug 1022281 +[test_browserElement_oop_ErrorSecurity.html] +[test_browserElement_oop_ExecuteScript.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Find.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_FirstPaint.html] +[test_browserElement_oop_ForwardName.html] +[test_browserElement_oop_FrameWrongURI.html] +[test_browserElement_oop_GetScreenshot.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_GetScreenshotDppx.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Iconchange.html] +[test_browserElement_oop_LoadEvents.html] +[test_browserElement_oop_Manifestchange.html] +[test_browserElement_oop_Metachange.html] +[test_browserElement_oop_NoAudioTrack.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_AudioPlayback.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_OpenMixedProcess.html] +disabled = disabled for bug 1266035 +[test_browserElement_oop_OpenNamed.html] +[test_browserElement_oop_OpenWindow.html] +[test_browserElement_oop_OpenWindowDifferentOrigin.html] +[test_browserElement_oop_OpenWindowInFrame.html] +[test_browserElement_oop_OpenWindowRejected.html] +[test_browserElement_oop_Opensearch.html] +[test_browserElement_oop_OpenTab.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_PrivateBrowsing.html] +[test_browserElement_oop_PromptCheck.html] +[test_browserElement_oop_PromptConfirm.html] +[test_browserElement_oop_Proxy.html] +[test_browserElement_oop_PurgeHistory.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Reload.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_ReloadPostRequest.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_RemoveBrowserElement.html] +[test_browserElement_oop_ScrollEvent.html] +[test_browserElement_oop_SecurityChange.html] +skip-if = toolkit == 'android' #TIMED_OUT, bug 766586 +[test_browserElement_oop_SendEvent.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_SetInputMethodActive.html] +# skip-if = (os == "android") +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_SetVisible.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_SetVisibleFrames.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_SetVisibleFrames2.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_Stop.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_TargetBlank.html] +[test_browserElement_oop_TargetTop.html] +[test_browserElement_oop_Titlechange.html] +[test_browserElement_oop_TopBarrier.html] +[test_browserElement_oop_VisibilityChange.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_XFrameOptions.html] +[test_browserElement_oop_XFrameOptionsAllowFrom.html] +disabled = Disabling some OOP tests for WebIDL scope changes +# bug 1189592 +skip-if = asan +[test_browserElement_oop_XFrameOptionsDeny.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_XFrameOptionsSameOrigin.html] +# Disabled until bug 930449 makes it stop timing out +[test_browserElement_oop_ContextmenuEvents.html] +disabled = bug 930449 +# Disabled until bug 924771 makes them stop timing out +[test_browserElement_oop_CloseFromOpener.html] +disabled = bug 924771 +[test_browserElement_oop_ExposableURI.html] +disabled = bug 924771 +[test_browserElement_oop_GetContentDimensions.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_AudioChannel.html] +tags = audiochannel +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_AudioChannel_nested.html] +tags = audiochannel +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_getWebManifest.html] +disabled = Disabling some OOP tests for WebIDL scope changes +[test_browserElement_oop_OpenWindowEmpty.html] +[test_browserElement_oop_ActiveStateChange.html] +tags = audiochannel +disabled = Disabling some OOP tests for WebIDL scope changes diff --git a/dom/browser-element/mochitest/mochitest.ini b/dom/browser-element/mochitest/mochitest.ini new file mode 100644 index 000000000..e1799f93f --- /dev/null +++ b/dom/browser-element/mochitest/mochitest.ini @@ -0,0 +1,159 @@ +[DEFAULT] +skip-if = e10s +support-files = + audio.ogg + ../../../dom/media/test/short-video.ogv + async.js + browserElementTestHelpers.js + browserElement_Alert.js + browserElement_AlertInFrame.js + browserElement_Auth.js + browserElement_Viewmode.js + browserElement_ThemeColor.js + browserElement_BrowserWindowNamespace.js + browserElement_BrowserWindowResize.js + browserElement_Close.js + browserElement_CloseFromOpener.js + browserElement_ContextmenuEvents.js + browserElement_CookiesNotThirdParty.js + browserElement_CopyPaste.js + browserElement_DataURI.js + browserElement_Download.js + browserElement_ErrorSecurity.js + browserElement_ExposableURI.js + browserElement_FirstPaint.js + browserElement_ForwardName.js + browserElement_FrameWrongURI.js + browserElement_Iconchange.js + browserElement_LoadEvents.js + browserElement_Manifestchange.js + browserElement_Metachange.js + browserElement_NextPaint.js + browserElement_OpenNamed.js + browserElement_OpenTab.js + browserElement_OpenWindow.js + browserElement_OpenWindowDifferentOrigin.js + browserElement_OpenWindowEmpty.js + browserElement_OpenWindowInFrame.js + browserElement_OpenWindowRejected.js + browserElement_Opensearch.js + browserElement_PrivateBrowsing.js + browserElement_PromptCheck.js + browserElement_PromptConfirm.js + browserElement_Proxy.js + browserElement_Reload.js + browserElement_RemoveBrowserElement.js + browserElement_ScrollEvent.js + browserElement_SecurityChange.js + browserElement_TargetBlank.js + browserElement_TargetTop.js + browserElement_Titlechange.js + browserElement_TopBarrier.js + browserElement_XFrameOptions.js + browserElement_XFrameOptionsAllowFrom.js + browserElement_XFrameOptionsDeny.js + browserElement_XFrameOptionsSameOrigin.js + file_browserElement_AlertInFrame.html + file_browserElement_AlertInFrame_Inner.html + file_browserElement_Viewmode.html + file_browserElement_ThemeColor.html + file_browserElement_BrowserWindowNamespace.html + file_browserElement_CloseFromOpener.html + file_browserElement_CookiesNotThirdParty.html + file_browserElement_ForwardName.html + file_browserElement_FrameWrongURI.html + file_browserElement_LoadEvents.html + file_browserElement_Metachange.sjs + file_browserElement_NextPaint.html + file_browserElement_Open1.html + file_browserElement_Open2.html + file_browserElement_OpenNamed.html + file_browserElement_OpenNamed2.html + file_browserElement_OpenWindowDifferentOrigin.html + file_browserElement_OpenWindowEmpty.html + file_browserElement_OpenWindowInFrame.html + file_browserElement_OpenWindowRejected.html + file_browserElement_PrivateBrowsing.html + file_browserElement_SecurityChange.html + file_browserElement_TargetBlank.html + file_browserElement_TargetTop.html + file_browserElement_XFrameOptions.sjs + file_browserElement_XFrameOptionsAllowFrom.html + file_browserElement_XFrameOptionsAllowFrom.sjs + file_browserElement_XFrameOptionsDeny.html + file_browserElement_XFrameOptionsSameOrigin.html + file_bug741717.sjs + file_download_bin.sjs + file_empty.html + file_empty_script.js + file_focus.html + file_http_401_response.sjs + file_http_407_response.sjs + file_wyciwyg.html + file_audio.html + iframe_file_audio.html + file_web_manifest.html + file_web_manifest.json + file_illegal_web_manifest.html + noaudio.webm + +# Note: browserElementTestHelpers.js looks at the test's filename to determine +# whether the test should be OOP. "_oop_" signals OOP, "_inproc_" signals in +# process. Default is OOP. +[test_browserElement_NoAttr.html] +[test_browserElement_NoPref.html] +[test_browserElement_NoPermission.html] +[test_browserElement_inproc_Alert.html] +[test_browserElement_inproc_Viewmode.html] +[test_browserElement_inproc_ThemeColor.html] +[test_browserElement_inproc_AlertInFrame.html] +[test_browserElement_inproc_Auth.html] +[test_browserElement_inproc_BrowserWindowNamespace.html] +[test_browserElement_inproc_BrowserWindowResize.html] +[test_browserElement_inproc_Close.html] +[test_browserElement_inproc_CloseFromOpener.html] +[test_browserElement_inproc_ContextmenuEvents.html] +[test_browserElement_inproc_CookiesNotThirdParty.html] +[test_browserElement_inproc_CopyPaste.html] +subsuite = clipboard +skip-if = (os == "android") # Disabled on Android, see bug 1230421 +[test_browserElement_inproc_DataURI.html] +[test_browserElement_inproc_Download.html] +disabled = bug 1022281 +[test_browserElement_inproc_ExposableURI.html] +[test_browserElement_inproc_FirstPaint.html] +[test_browserElement_inproc_ForwardName.html] +[test_browserElement_inproc_FrameWrongURI.html] +[test_browserElement_inproc_Iconchange.html] +[test_browserElement_inproc_LoadEvents.html] +[test_browserElement_inproc_Manifestchange.html] +[test_browserElement_inproc_Metachange.html] +[test_browserElement_inproc_OpenNamed.html] +[test_browserElement_inproc_OpenTab.html] +disabled = won't work as Firefox desktop will intercept ctrl-click +[test_browserElement_inproc_OpenWindow.html] +[test_browserElement_inproc_OpenWindowDifferentOrigin.html] +[test_browserElement_inproc_OpenWindowInFrame.html] +[test_browserElement_inproc_OpenWindowRejected.html] +[test_browserElement_inproc_Opensearch.html] +[test_browserElement_inproc_PrivateBrowsing.html] +[test_browserElement_inproc_PromptCheck.html] +[test_browserElement_inproc_PromptConfirm.html] +[test_browserElement_inproc_Proxy.html] +[test_browserElement_inproc_RemoveBrowserElement.html] +[test_browserElement_inproc_ScrollEvent.html] +[test_browserElement_inproc_SecurityChange.html] +[test_browserElement_inproc_TargetBlank.html] +[test_browserElement_inproc_TargetTop.html] +[test_browserElement_inproc_Titlechange.html] +[test_browserElement_inproc_TopBarrier.html] +[test_browserElement_inproc_XFrameOptions.html] +[test_browserElement_inproc_XFrameOptionsAllowFrom.html] +[test_browserElement_inproc_XFrameOptionsDeny.html] +[test_browserElement_inproc_XFrameOptionsSameOrigin.html] +[test_browserElement_oop_NextPaint.html] +# Disabled due to https://bugzilla.mozilla.org/show_bug.cgi?id=774100 +disabled = temp disabling some OOP tests for WebIDL scope changes +[test_browserElement_inproc_Reload.html] +disabled = bug 774100 +[test_browserElement_inproc_OpenWindowEmpty.html] diff --git a/dom/browser-element/mochitest/noaudio.webm b/dom/browser-element/mochitest/noaudio.webm new file mode 100644 index 000000000..9207017fb Binary files /dev/null and b/dom/browser-element/mochitest/noaudio.webm differ diff --git a/dom/browser-element/mochitest/priority/chrome.ini b/dom/browser-element/mochitest/priority/chrome.ini new file mode 100644 index 000000000..e1852f6ff --- /dev/null +++ b/dom/browser-element/mochitest/priority/chrome.ini @@ -0,0 +1,19 @@ +[DEFAULT] +# Good luck running these tests on anything but desktop Linux. +run-if = os == 'linux' && buildapp == 'browser' && !e10s +support-files = + file_Audio.html + file_MultipleFrames.html + file_NestedFramesOuter.html + file_WebGLContextLost.html + silence.ogg + !/dom/browser-element/mochitest/browserElementTestHelpers.js + !/dom/browser-element/mochitest/file_empty.html + +[test_Activity.html] +[test_Audio.html] +[test_Background.html] +[test_Keyboard.html] +[test_MultipleFrames.html] +[test_NestedFrames.html] +[test_Visibility.html] diff --git a/dom/browser-element/mochitest/priority/file_Audio.html b/dom/browser-element/mochitest/priority/file_Audio.html new file mode 100644 index 000000000..97f4dc64d --- /dev/null +++ b/dom/browser-element/mochitest/priority/file_Audio.html @@ -0,0 +1,19 @@ + + + + + +