From cd922d137c91103c521562a9cfdc946374a403b8 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Sat, 13 Jan 2024 00:19:49 +0100 Subject: [PATCH] chore: update browser patches to 03ca0a7 (#28974) --- browser_patches/firefox/UPSTREAM_CONFIG.sh | 2 +- .../firefox/juggler/NetworkObserver.js | 6 +- .../firefox/juggler/protocol/PageHandler.js | 2 +- .../firefox/patches/bootstrap.diff | 186 +- .../firefox/preferences/playwright.cfg | 4 + browser_patches/webkit/UPSTREAM_CONFIG.sh | 2 +- browser_patches/webkit/patches/bootstrap.diff | 2656 +++++++---------- browser_patches/webkit/pw_run.sh | 12 +- 8 files changed, 1165 insertions(+), 1705 deletions(-) diff --git a/browser_patches/firefox/UPSTREAM_CONFIG.sh b/browser_patches/firefox/UPSTREAM_CONFIG.sh index 1d0ae8eca79bf..5436a7ef44e35 100644 --- a/browser_patches/firefox/UPSTREAM_CONFIG.sh +++ b/browser_patches/firefox/UPSTREAM_CONFIG.sh @@ -1,3 +1,3 @@ REMOTE_URL="https://github.com/mozilla/gecko-dev" BASE_BRANCH="release" -BASE_REVISION="bf57fe91c49f319e7f65636ed223e5f7b4b7738a" +BASE_REVISION="7ab3cc0103090dd7bfa02e072a529b9fc784ab4e" diff --git a/browser_patches/firefox/juggler/NetworkObserver.js b/browser_patches/firefox/juggler/NetworkObserver.js index a8a8321974092..b0413d2e2cb13 100644 --- a/browser_patches/firefox/juggler/NetworkObserver.js +++ b/browser_patches/firefox/juggler/NetworkObserver.js @@ -231,8 +231,12 @@ class NetworkRequest { this._expectingResumedRequest = undefined; if (headers) { - for (const header of requestHeaders(this.httpChannel)) + for (const header of requestHeaders(this.httpChannel)) { + // We cannot remove the "host" header. + if (header.name.toLowerCase() === 'host') + continue; this.httpChannel.setRequestHeader(header.name, '', false /* merge */); + } for (const header of headers) this.httpChannel.setRequestHeader(header.name, header.value, false /* merge */); } else if (this._pageNetwork) { diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js index d526e93caaaa2..8bceb0697961e 100644 --- a/browser_patches/firefox/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox/juggler/protocol/PageHandler.js @@ -394,7 +394,7 @@ class PageHandler { 'nsIReferrerInfo', 'init' ); - referrerInfo = new ReferrerInfo(Ci.nsIHttpChannel.REFERRER_POLICY_UNSET, true, referrerURI); + referrerInfo = new ReferrerInfo(Ci.nsIReferrerInfo.UNSAFE_URL, true, referrerURI); } catch (e) { throw new Error(`Invalid referer: "${referer}"`); } diff --git a/browser_patches/firefox/patches/bootstrap.diff b/browser_patches/firefox/patches/bootstrap.diff index a16414d2d7df9..d58ec0332aa75 100644 --- a/browser_patches/firefox/patches/bootstrap.diff +++ b/browser_patches/firefox/patches/bootstrap.diff @@ -57,7 +57,7 @@ index 8e9bf2b413585b5a3db9370eee5d57fb6c6716ed..5a3b194b54e3813c89989f13a214c989 * Return XPCOM wrapper for the internal accessible. */ diff --git a/browser/app/winlauncher/LauncherProcessWin.cpp b/browser/app/winlauncher/LauncherProcessWin.cpp -index 082ada9ea705cf62420c6bd409a23517a591df82..781ac8d8ee9b9b01112b620e8c5c11682cdb9ef1 100644 +index d3fa2a973619ed3dc12d9aac9bc751e21a158406..ab3b84ce0a685d79ef56cbf38b5c4beeb7a1100c 100644 --- a/browser/app/winlauncher/LauncherProcessWin.cpp +++ b/browser/app/winlauncher/LauncherProcessWin.cpp @@ -22,6 +22,7 @@ @@ -68,7 +68,7 @@ index 082ada9ea705cf62420c6bd409a23517a591df82..781ac8d8ee9b9b01112b620e8c5c1168 #include #include -@@ -428,8 +429,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], +@@ -422,8 +423,18 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], HANDLE stdHandles[] = {::GetStdHandle(STD_INPUT_HANDLE), ::GetStdHandle(STD_OUTPUT_HANDLE), ::GetStdHandle(STD_ERROR_HANDLE)}; @@ -89,7 +89,7 @@ index 082ada9ea705cf62420c6bd409a23517a591df82..781ac8d8ee9b9b01112b620e8c5c1168 DWORD creationFlags = CREATE_SUSPENDED | CREATE_UNICODE_ENVIRONMENT; diff --git a/browser/installer/allowed-dupes.mn b/browser/installer/allowed-dupes.mn -index 93e7dbae2281680827abb482f6f34e90076f3b3a..f7045a29c6ed50876775abe2d45a47df7b7a2003 100644 +index bae6d0c5be1ef486b44563b519c5f4aa4b5bc769..636e801c940dea835dee55759cb638a6714a33cd 100644 --- a/browser/installer/allowed-dupes.mn +++ b/browser/installer/allowed-dupes.mn @@ -71,6 +71,12 @@ browser/features/webcompat@mozilla.org/shims/empty-shim.txt @@ -102,14 +102,14 @@ index 93e7dbae2281680827abb482f6f34e90076f3b3a..f7045a29c6ed50876775abe2d45a47df +chrome/juggler/content/server/stream-utils.js +chrome/marionette/content/stream-utils.js + - #ifdef MOZ_EME_WIN32_ARTIFACT - gmp-clearkey/0.1/manifest.json - i686/gmp-clearkey/0.1/manifest.json + # Bug 1496075 - Switch searchplugins to Web Extensions + browser/chrome/browser/search-extensions/amazon/favicon.ico + browser/chrome/browser/search-extensions/amazondotcn/favicon.ico diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in -index 5296d2b4b195d6c5d3f61aa43ea8d1d2fdad053f..f60e585d11167579418592f702788fb0ff6d5db5 100644 +index 1e48dd12b43ed48085f22f6576f8c6696153775f..3b79a0e6e607ae67a00c3c7403ff18261a2419b4 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -197,6 +197,9 @@ +@@ -196,6 +196,9 @@ @RESPATH@/chrome/remote.manifest #endif @@ -167,7 +167,7 @@ index 4236ec2921bd57c58cfffdf1cdcf509d76fca3db..23d0cb1f06bb8c7a1cac8fcec94a99fb const transportProvider = { setListener(upgradeListener) { diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp -index ebf183695a5473c4b01fd2a27682128c9f678349..1180f2334ac46b3a824b2d541e5f7d9dc9f81895 100644 +index e6360a37dcdf0d01353175bb24211e48c54c6ac5..1aeaacb0f91c6bee166ec888196971d3bc957a41 100644 --- a/docshell/base/BrowsingContext.cpp +++ b/docshell/base/BrowsingContext.cpp @@ -114,6 +114,20 @@ struct ParamTraits @@ -233,7 +233,7 @@ index ebf183695a5473c4b01fd2a27682128c9f678349..1180f2334ac46b3a824b2d541e5f7d9d nsString&& aOldValue) { MOZ_ASSERT(IsTop()); diff --git a/docshell/base/BrowsingContext.h b/docshell/base/BrowsingContext.h -index 3c8a11e5dcbb37ad915d63bbd5ad9fa11b3dcac8..92dc6aa8961ba35a9c0c2943f7201be55c29b9da 100644 +index f9129bb2db492c7446a092c744b14f42449dc74c..a2abdfee35289be118b29baa6a5f3385a63f7085 100644 --- a/docshell/base/BrowsingContext.h +++ b/docshell/base/BrowsingContext.h @@ -200,10 +200,10 @@ struct EmbedderColorSchemes { @@ -300,10 +300,10 @@ index 3c8a11e5dcbb37ad915d63bbd5ad9fa11b3dcac8..92dc6aa8961ba35a9c0c2943f7201be5 bool CanSet(FieldIndex, bool, ContentParent*) { diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp -index 2f383a90e6600e051bd5ade5c131b4f54f14eb0f..73c17acec9c187dba8250659fede89ce6360d0dc 100644 +index a6bbc3c7c9a0eaf1b0dcf4a9a68c1d579aa79f70..6de37c24076abcb136e0c2014d1e94e60ea62720 100644 --- a/docshell/base/CanonicalBrowsingContext.cpp +++ b/docshell/base/CanonicalBrowsingContext.cpp -@@ -1467,6 +1467,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, +@@ -1465,6 +1465,12 @@ void CanonicalBrowsingContext::LoadURI(nsIURI* aURI, return; } @@ -317,7 +317,7 @@ index 2f383a90e6600e051bd5ade5c131b4f54f14eb0f..73c17acec9c187dba8250659fede89ce } diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp -index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e38e9e2f6 100644 +index 7669fbacd09a65cda1b06c74aa75f0ef7b625da2..8fd21c46640003c3f6d3cbc79697955ba4437afd 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -15,6 +15,12 @@ @@ -380,7 +380,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e mAllowAuth(mItemType == typeContent), mAllowKeywordFixup(false), mDisableMetaRefreshWhenInactive(false), -@@ -3203,6 +3221,234 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { +@@ -3204,6 +3222,234 @@ nsDocShell::GetMessageManager(ContentFrameMessageManager** aMessageManager) { return NS_OK; } @@ -463,14 +463,14 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e + +static void SetIcuLocale(const nsAString& aLanguageOverride) { + icu::Locale locale(NS_LossyConvertUTF16toASCII(aLanguageOverride).get()); -+ if (icu::Locale::getDefault() == locale) -+ return; -+ UErrorCode error_code = U_ZERO_ERROR; -+ const char* lang = locale.getLanguage(); -+ if (lang != nullptr && *lang != '\0') { -+ icu::Locale::setDefault(locale, error_code); -+ } else { -+ fprintf(stderr, "SetIcuLocale Failed to set the ICU default locale to %s\n", NS_LossyConvertUTF16toASCII(aLanguageOverride).get()); ++ if (icu::Locale::getDefault() != locale) { ++ UErrorCode error_code = U_ZERO_ERROR; ++ const char* lang = locale.getLanguage(); ++ if (lang != nullptr && *lang != '\0') { ++ icu::Locale::setDefault(locale, error_code); ++ } else { ++ fprintf(stderr, "SetIcuLocale Failed to set the ICU default locale to %s\n", NS_LossyConvertUTF16toASCII(aLanguageOverride).get()); ++ } + } + + AutoJSAPI jsapi; @@ -615,7 +615,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e NS_IMETHODIMP nsDocShell::GetIsNavigating(bool* aOut) { *aOut = mIsNavigating; -@@ -4894,7 +5140,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { +@@ -4895,7 +5141,7 @@ nsDocShell::GetVisibility(bool* aVisibility) { } void nsDocShell::ActivenessMaybeChanged() { @@ -624,7 +624,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e if (RefPtr presShell = GetPresShell()) { presShell->ActivenessMaybeChanged(); } -@@ -6829,6 +7075,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, +@@ -6811,6 +7057,10 @@ bool nsDocShell::CanSavePresentation(uint32_t aLoadType, return false; // no entry to save into } @@ -635,7 +635,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e MOZ_ASSERT(!mozilla::SessionHistoryInParent(), "mOSHE cannot be non-null with SHIP"); nsCOMPtr viewer = mOSHE->GetContentViewer(); -@@ -8613,6 +8863,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { +@@ -8595,6 +8845,12 @@ nsresult nsDocShell::PerformRetargeting(nsDocShellLoadState* aLoadState) { true, // aForceNoOpener getter_AddRefs(newBC)); MOZ_ASSERT(!newBC); @@ -648,7 +648,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e return rv; } -@@ -9688,6 +9944,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState, +@@ -9670,6 +9926,16 @@ nsresult nsDocShell::InternalLoad(nsDocShellLoadState* aLoadState, nsINetworkPredictor::PREDICT_LOAD, attrs, nullptr); nsCOMPtr req; @@ -665,7 +665,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e rv = DoURILoad(aLoadState, aCacheKey, getter_AddRefs(req)); if (NS_SUCCEEDED(rv)) { -@@ -12861,6 +13127,9 @@ class OnLinkClickEvent : public Runnable { +@@ -12827,6 +13093,9 @@ class OnLinkClickEvent : public Runnable { mHandler->OnLinkClickSync(mContent, mLoadState, mNoOpenerImplied, mTriggeringPrincipal); } @@ -675,7 +675,7 @@ index 85b49f3d8d380275125ff5bff205b66a587d0071..2dbd5d543a0e688beba81d7ed58e779e return NS_OK; } -@@ -12945,6 +13214,8 @@ nsresult nsDocShell::OnLinkClick( +@@ -12911,6 +13180,8 @@ nsresult nsDocShell::OnLinkClick( nsCOMPtr ev = new OnLinkClickEvent(this, aContent, loadState, noOpenerImplied, aIsTrusted, aTriggeringPrincipal); @@ -804,10 +804,10 @@ index 68f32e968c7e1bc1d0b2b2894320a177a9ae44d2..9e61465ffad927d7b3e972f753940196 * This attempts to save any applicable layout history state (like * scroll position) in the nsISHEntry. This is normally done diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp -index e8788de4fff443ee3dfc0830b759ba5eadd24591..ee7556aa27ea65af6dd0997cbe7fdef376915ed8 100644 +index dbb0e7d060dacf26154b30f67c5980bdebb533c1..eba7dfb80333d3473a2167d8105544d1de46d939 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -3674,6 +3674,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { +@@ -3671,6 +3671,9 @@ void Document::SendToConsole(nsCOMArray& aMessages) { } void Document::ApplySettingsFromCSP(bool aSpeculative) { @@ -817,7 +817,7 @@ index e8788de4fff443ee3dfc0830b759ba5eadd24591..ee7556aa27ea65af6dd0997cbe7fdef3 nsresult rv = NS_OK; if (!aSpeculative) { // 1) apply settings from regular CSP -@@ -3731,6 +3734,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { +@@ -3728,6 +3731,11 @@ nsresult Document::InitCSP(nsIChannel* aChannel) { MOZ_ASSERT(!mScriptGlobalObject, "CSP must be initialized before mScriptGlobalObject is set!"); @@ -829,7 +829,7 @@ index e8788de4fff443ee3dfc0830b759ba5eadd24591..ee7556aa27ea65af6dd0997cbe7fdef3 // If this is a data document - no need to set CSP. if (mLoadedAsData) { return NS_OK; -@@ -4568,6 +4576,10 @@ bool Document::HasFocus(ErrorResult& rv) const { +@@ -4544,6 +4552,10 @@ bool Document::HasFocus(ErrorResult& rv) const { return false; } @@ -840,7 +840,7 @@ index e8788de4fff443ee3dfc0830b759ba5eadd24591..ee7556aa27ea65af6dd0997cbe7fdef3 if (!fm->IsInActiveWindow(bc)) { return false; } -@@ -18552,6 +18564,68 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { +@@ -18535,6 +18547,68 @@ ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { return LookAndFeel::PreferredColorSchemeForContent(); } @@ -910,10 +910,10 @@ index e8788de4fff443ee3dfc0830b759ba5eadd24591..ee7556aa27ea65af6dd0997cbe7fdef3 if (!sLoadingForegroundTopLevelContentDocument) { return false; diff --git a/dom/base/Document.h b/dom/base/Document.h -index 11df804cff46806024f735c5cc907a9554ba1bd6..f6ce23bea6824dcedd545da6d95cde59037f24a6 100644 +index ed73acda064d3c899858b4c4bd6c8df4a5b2a964..5d49feda0146088128d1901d4168ca75d7062aa3 100644 --- a/dom/base/Document.h +++ b/dom/base/Document.h -@@ -4059,6 +4059,9 @@ class Document : public nsINode, +@@ -4066,6 +4066,9 @@ class Document : public nsINode, // color-scheme meta tag. ColorScheme DefaultColorScheme() const; @@ -992,7 +992,7 @@ index f878c11dff3d448dfa2520c7fe7e4e9cb63f7ea7..c1a30391eb31e28e1c22dff82bb9526b dom::MediaCapabilities* MediaCapabilities(); dom::MediaSession* MediaSession(); diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp -index 52650a856f8e69069c857327fb63d27f4be1ccfb..0a125653d377065b79ef8d63a1062ab83525a643 100644 +index 1f9863a8bc538eece4dbf04b2e4bffbad50d5d00..b5cd6be99c8457030db1b23ac307fc2ff40e6e49 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -8554,7 +8554,8 @@ nsresult nsContentUtils::SendMouseEvent( @@ -1062,7 +1062,7 @@ index 52650a856f8e69069c857327fb63d27f4be1ccfb..0a125653d377065b79ef8d63a1062ab8 nsPresContext* presContext = aPresShell->GetPresContext(); if (!presContext) return NS_ERROR_FAILURE; diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h -index b09dacc2be6db55a3c11a7f8b89eee9a131fde91..fbeb1b2fe9f14e63c416b0501d08cd7855d95476 100644 +index 180c7fe15d6acbd68c477a5677a397ef2acc3c6b..b66187e2063b6b7660ae0ef5a0a34b5655b23a97 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -2947,7 +2947,8 @@ class nsContentUtils { @@ -1076,7 +1076,7 @@ index b09dacc2be6db55a3c11a7f8b89eee9a131fde91..fbeb1b2fe9f14e63c416b0501d08cd78 static void FirePageShowEventForFrameLoaderSwap( nsIDocShellTreeItem* aItem, diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp -index 991fe527e558d47ed79b7ae46fe0f6ee12d9fdab..c688fab82de76b00cc8b45dd3d465a7e6fcb6fd5 100644 +index e6762018cce8e4c8691703ed15ea29e709f31cf2..4d0b679c4700e8fe18408a186b7e4d512a71dc30 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -684,6 +684,26 @@ nsDOMWindowUtils::GetPresShellId(uint32_t* aPresShellId) { @@ -1154,10 +1154,10 @@ index 63968c9b7a4e418e4c0de6e7a75fa215a36a9105..decf3ea3833ccdffd49a7aded2d600f9 MOZ_CAN_RUN_SCRIPT nsresult SendTouchEventCommon( diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp -index 141617e93a6bf4d0b15f7461c87124b9d5d2b69d..9bfd6ba7e28a9aeb78993d9c6a7639b176fa4363 100644 +index 1be0c80cd30f8696a9451af1f9d381591f1ba0c0..9f9af9649c2cd55188e085e011819cc5db0fb6dc 100644 --- a/dom/base/nsFocusManager.cpp +++ b/dom/base/nsFocusManager.cpp -@@ -1671,6 +1671,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent, +@@ -1672,6 +1672,10 @@ Maybe nsFocusManager::SetFocusInner(Element* aNewContent, (GetActiveBrowsingContext() == newRootBrowsingContext); } @@ -1168,7 +1168,7 @@ index 141617e93a6bf4d0b15f7461c87124b9d5d2b69d..9bfd6ba7e28a9aeb78993d9c6a7639b1 // Exit fullscreen if a website focuses another window if (StaticPrefs::full_screen_api_exit_on_windowRaise() && !isElementInActiveWindow && (aFlags & FLAG_RAISE)) { -@@ -2942,7 +2946,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, +@@ -2945,7 +2949,9 @@ void nsFocusManager::RaiseWindow(nsPIDOMWindowOuter* aWindow, } } @@ -1180,10 +1180,10 @@ index 141617e93a6bf4d0b15f7461c87124b9d5d2b69d..9bfd6ba7e28a9aeb78993d9c6a7639b1 // care of lowering the present active window. This happens in // a separate runnable to avoid touching multiple windows in diff --git a/dom/base/nsGlobalWindowOuter.cpp b/dom/base/nsGlobalWindowOuter.cpp -index c9a45b8a21e63f344704637d325383d240584fa7..661c41aecad66814690190d8229c30e32a94da21 100644 +index a784fe3c4bf9fe6a74bebca23fdce04524e0f473..100bae14efb8f4cc49238ce808e3f4e7fe1cd61c 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp -@@ -2489,7 +2489,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2490,7 +2490,7 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, &nsGlobalWindowInner::FireOnNewGlobalObject)); } @@ -1192,7 +1192,7 @@ index c9a45b8a21e63f344704637d325383d240584fa7..661c41aecad66814690190d8229c30e3 // We should probably notify. However if this is the, arguably bad, // situation when we're creating a temporary non-chrome-about-blank // document in a chrome docshell, don't notify just yet. Instead wait -@@ -2508,10 +2508,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, +@@ -2509,10 +2509,16 @@ nsresult nsGlobalWindowOuter::SetNewDocument(Document* aDocument, }(); if (!isContentAboutBlankInChromeDocshell) { @@ -1312,10 +1312,10 @@ index 77016f314939bf6ac11b48db1f71d1d3a82d4e83..67440e2643eb3f098e8e790179634216 DOMQuad& aQuad, const GeometryNode& aFrom, const ConvertCoordinateOptions& aOptions, CallerType aCallerType, diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h -index 9554650de24d35077ad20d977b7d3b1f1aa1be36..7a7ab8f2d62605ee80501ef4c26a4f6c5ab7f4b3 100644 +index 73cfa7eb511e1c453b2634fe5a2aa7a042ba0221..759909ce15a5aff520d0d8429ee399a8b4787f11 100644 --- a/dom/base/nsINode.h +++ b/dom/base/nsINode.h -@@ -2201,6 +2201,10 @@ class nsINode : public mozilla::dom::EventTarget { +@@ -2212,6 +2212,10 @@ class nsINode : public mozilla::dom::EventTarget { nsTArray>& aResult, ErrorResult& aRv); @@ -1496,7 +1496,7 @@ index 7e1af00d05fbafa2d828e2c7e4dcc5c82d115f5b..e85af9718d064e4d2865bc944e9d4ba1 ~Geolocation(); diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp -index 75536c2488bdb82f429693506cc412243ab7a49a..4049dd79838cd70ce285d64fd338fdf537dc7e2e 100644 +index c419fb6936dac5cebde8dbaf548d8edd49ffc64a..f5a0cd548721c5d87be6dc719a0183b0a7eeccfe 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -58,6 +58,7 @@ @@ -1552,10 +1552,10 @@ index 4170a79023a2503831d080a6e65d5e143f34f241..3af08d6ea5f1cfbdc373774764a0c45f * touchstart, touchend, touchmove, and touchcancel * diff --git a/dom/ipc/BrowserChild.cpp b/dom/ipc/BrowserChild.cpp -index 9b4096d7126c03bdc1fcc12785d3f05e65212747..13e86cea216314ea77135a397a3cad67247b84e0 100644 +index 996ee2edde76bab0ea409e072b89160a5158d452..7833fe75af2a85666e72627bfd0dd7467a1b8a80 100644 --- a/dom/ipc/BrowserChild.cpp +++ b/dom/ipc/BrowserChild.cpp -@@ -1670,6 +1670,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, +@@ -1668,6 +1668,21 @@ void BrowserChild::HandleRealMouseButtonEvent(const WidgetMouseEvent& aEvent, if (postLayerization) { postLayerization->Register(); } @@ -1955,10 +1955,10 @@ index d10dabb5c5ff8e17851edf2bd2efc08e74584d8e..53c4070c5fde43b27fb8fbfdcf4c23d8 bool IsWorkerGlobal(JSObject* global); diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp -index 574fe73ea8cf29b64a507a390ec8d55a5f8ad498..85eb9e92b2f55f62f8bee797679917eff35963de 100644 +index f7a8cec1ef69778b4579b72c58adeaf91315299e..87c18442e643a980cb07d43b9b1005c90953770b 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp -@@ -709,6 +709,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { +@@ -711,6 +711,18 @@ class UpdateContextOptionsRunnable final : public WorkerControlRunnable { } }; @@ -1977,7 +1977,7 @@ index 574fe73ea8cf29b64a507a390ec8d55a5f8ad498..85eb9e92b2f55f62f8bee797679917ef class UpdateLanguagesRunnable final : public WorkerRunnable { nsTArray mLanguages; -@@ -2004,6 +2016,16 @@ void WorkerPrivate::UpdateContextOptions( +@@ -2006,6 +2018,16 @@ void WorkerPrivate::UpdateContextOptions( } } @@ -1994,7 +1994,7 @@ index 574fe73ea8cf29b64a507a390ec8d55a5f8ad498..85eb9e92b2f55f62f8bee797679917ef void WorkerPrivate::UpdateLanguages(const nsTArray& aLanguages) { AssertIsOnParentThread(); -@@ -5409,6 +5431,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( +@@ -5417,6 +5439,15 @@ void WorkerPrivate::UpdateContextOptionsInternal( } } @@ -2255,17 +2255,17 @@ index dac899f7558b26d6848da8b98ed8a93555c8751a..2a07d67fa1c2840b25085566e84dc3b2 // No boxes to return return; diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp -index 60059ca8e6704f5d9031ced546694de08f63fe77..0f3a96f0c3c95480299a917a60ec5f9924a2f2eb 100644 +index bb625a6dda2475164d3236ed03ee248bfc2f6d66..6e6d5aca3701c4eb2b69e74226cf6ed8b10b65cd 100644 --- a/layout/base/PresShell.cpp +++ b/layout/base/PresShell.cpp -@@ -10913,7 +10913,9 @@ auto PresShell::ComputeActiveness() const -> Activeness { +@@ -10925,7 +10925,9 @@ bool PresShell::ComputeActiveness() const { if (!browserChild->IsVisible()) { MOZ_LOG(gLog, LogLevel::Debug, (" > BrowserChild %p is not visible", browserChild)); -- return {false, inActiveTab}; +- return false; + bool isActive; + root->GetDocShell()->GetForceActiveState(&isActive); -+ return {isActive, inActiveTab}; ++ return isActive; } // If the browser is visible but just due to be preserving layers @@ -2303,10 +2303,10 @@ index 5e4fe65abcc373e6c0fba40458677cebb085266b..9425984faca3579cb90e96ae46ed47e6 bool Gecko_MediaFeatures_PrefersReducedTransparency(const Document* aDocument) { diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js -index a190b6caff8c21fb6bedaf37b9c25c812cd7114a..ac972936eedf5ea9a0f2e3d9d2dc899e848504d4 100644 +index a38a760f9c5ce666ad8d51d46f7685c9ac45d7b3..ed4d6bf2512f2428781e83612643230a5974d80a 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js -@@ -3939,7 +3939,9 @@ pref("devtools.f12_enabled", true); +@@ -3933,7 +3933,9 @@ pref("devtools.f12_enabled", true); // doesn't provide a way to lock the pref pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", false); #else @@ -2318,10 +2318,10 @@ index a190b6caff8c21fb6bedaf37b9c25c812cd7114a..ac972936eedf5ea9a0f2e3d9d2dc899e // Whether sites require the open-protocol-handler permission to open a diff --git a/netwerk/base/LoadInfo.cpp b/netwerk/base/LoadInfo.cpp -index 5f0543bbb117887b8c4438ebf24199ab20f514c2..5dde8690a1699fec0433a0c5a1f396653f00db2e 100644 +index 164a1c1457ef21a6e1019caf9d1e710649e9f754..07fd3ecbabc103599204606024d8e0403345f02e 100644 --- a/netwerk/base/LoadInfo.cpp +++ b/netwerk/base/LoadInfo.cpp -@@ -640,7 +640,8 @@ LoadInfo::LoadInfo(const LoadInfo& rhs) +@@ -641,7 +641,8 @@ LoadInfo::LoadInfo(const LoadInfo& rhs) mUnstrippedURI(rhs.mUnstrippedURI), mInterceptionInfo(rhs.mInterceptionInfo), mHasInjectedCookieForCookieBannerHandling( @@ -2331,7 +2331,7 @@ index 5f0543bbb117887b8c4438ebf24199ab20f514c2..5dde8690a1699fec0433a0c5a1f39665 LoadInfo::LoadInfo( nsIPrincipal* aLoadingPrincipal, nsIPrincipal* aTriggeringPrincipal, -@@ -2320,4 +2321,16 @@ LoadInfo::SetHasInjectedCookieForCookieBannerHandling( +@@ -2321,4 +2322,16 @@ LoadInfo::SetHasInjectedCookieForCookieBannerHandling( return NS_OK; } @@ -2383,10 +2383,10 @@ index 37b0b7bfe516ca69441e4cdd58861de9d595c692..6d3bb900624b6ad9e9449ce6f462a87d } // namespace net } // namespace mozilla diff --git a/netwerk/base/nsILoadInfo.idl b/netwerk/base/nsILoadInfo.idl -index 7c84f976ea52f06b2cc0dfb59bcfe598d98d10e0..6c60b34f78d98046298cb9b8b847da5b8cf779b4 100644 +index 7f3422274f7c075fcd6486ae5b8f5cd073aa1ccc..b667ba1e7dcea7e5d31f27df211553929e069993 100644 --- a/netwerk/base/nsILoadInfo.idl +++ b/netwerk/base/nsILoadInfo.idl -@@ -1504,4 +1504,6 @@ interface nsILoadInfo : nsISupports +@@ -1505,4 +1505,6 @@ interface nsILoadInfo : nsISupports * handle a cookie banner. This is only done for top-level requests. */ [infallible] attribute boolean hasInjectedCookieForCookieBannerHandling; @@ -2406,7 +2406,7 @@ index d72dc570dc82ff9d576942b9e7c23d8a74d68049..a5fcddc4b0e53a862e5a77120b4ccff8 /** * Set the status and reason for the forthcoming synthesized response. diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp -index cd363cacf1fe2222a320996df93b56f94611ed61..5ca0439d2a3e1e64078cfaed7ba87db173826d70 100644 +index ec7f54c1cc7a177e6487f4bc317ef28bfa34f348..8e34230df1183b408a8f6439965c0b48826aa974 100644 --- a/netwerk/ipc/DocumentLoadListener.cpp +++ b/netwerk/ipc/DocumentLoadListener.cpp @@ -165,6 +165,7 @@ static auto CreateDocumentLoadInfo(CanonicalBrowsingContext* aBrowsingContext, @@ -2418,7 +2418,7 @@ index cd363cacf1fe2222a320996df93b56f94611ed61..5ca0439d2a3e1e64078cfaed7ba87db1 return loadInfo.forget(); } diff --git a/netwerk/protocol/http/InterceptedHttpChannel.cpp b/netwerk/protocol/http/InterceptedHttpChannel.cpp -index 6e733cc3601352ec600f69420148c96007cb3f78..c36ee059df0dc648beb074bf673b550a59fe2216 100644 +index 03a2605c5d5591f7656ba4c4ff9a46f2e390c404..717f87b632995cb955fce5995604153ae4084561 100644 --- a/netwerk/protocol/http/InterceptedHttpChannel.cpp +++ b/netwerk/protocol/http/InterceptedHttpChannel.cpp @@ -729,6 +729,14 @@ NS_IMPL_ISUPPORTS(ResetInterceptionHeaderVisitor, nsIHttpHeaderVisitor) @@ -2456,10 +2456,10 @@ index 6e733cc3601352ec600f69420148c96007cb3f78..c36ee059df0dc648beb074bf673b550a if (mPump && mLoadFlags & LOAD_CALL_CONTENT_SNIFFERS) { mPump->PeekStream(CallTypeSniffers, static_cast(this)); diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp -index 177fbd0a496bacd402f2a0594342e5c50e882b4b..82324fed89a80c17fd0160bb8d45e7a07c23c58a 100644 +index b2423f754063dd42ad80a607dc7a39ddc2bf89b3..99ce1ebd141ff1d2f6982b2fa8ed485c658d3abe 100644 --- a/parser/html/nsHtml5TreeOpExecutor.cpp +++ b/parser/html/nsHtml5TreeOpExecutor.cpp -@@ -1370,6 +1370,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta( +@@ -1375,6 +1375,10 @@ void nsHtml5TreeOpExecutor::UpdateReferrerInfoFromMeta( void nsHtml5TreeOpExecutor::AddSpeculationCSP(const nsAString& aCSP) { NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); @@ -2544,7 +2544,7 @@ index 6dfd07d6b676a99993408921de8dea9d561f201d..e3c6794363cd6336effbeac83a179f37 readonly attribute boolean securityCheckDisabled; }; diff --git a/services/settings/Utils.sys.mjs b/services/settings/Utils.sys.mjs -index c2db005b686d2500398c41301613cacd3e44148c..093265e5871e5c9effdad3270015a05f63e2c844 100644 +index d9150337a18c0d41fab89c46a3792049df89bc84..0257ee0899355c315da7f632deec645738732663 100644 --- a/services/settings/Utils.sys.mjs +++ b/services/settings/Utils.sys.mjs @@ -95,7 +95,7 @@ function _isUndefined(value) { @@ -2557,7 +2557,7 @@ index c2db005b686d2500398c41301613cacd3e44148c..093265e5871e5c9effdad3270015a05f : AppConstants.REMOTE_SETTINGS_SERVER_URL; }, diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index 3441dd3a3774231f0aa92486ad0b07dbf98cba8b..f3d8ee86ecea36b6464f3895f40cc537646ac5b7 100644 +index 986c5fe7d8dc07ae71057cb1cd778566184cd137..bf83c7504b457383f02ec4d211c0659ad3ca415b 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs @@ -291,10 +291,15 @@ pub enum ForcedColors { @@ -2639,10 +2639,10 @@ index 654903fadb709be976b72f36f155e23bc0622152..815b3dc24c9fda6b1db6c4666ac68904 int32_t aMaxSelfProgress, int32_t aCurTotalProgress, diff --git a/toolkit/components/windowwatcher/nsWindowWatcher.cpp b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -index 64e6db10f000a44d78ace878ec49c526cbbc007d..c0855bef1fda02643f8df5fa1111ab2bfd684c55 100644 +index 9c8e6a919263899f95bc41b1ca419d5048e50b2a..4b3ad73393c24268b6df62823e56bcf4367cac21 100644 --- a/toolkit/components/windowwatcher/nsWindowWatcher.cpp +++ b/toolkit/components/windowwatcher/nsWindowWatcher.cpp -@@ -1881,7 +1881,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( +@@ -1882,7 +1882,11 @@ uint32_t nsWindowWatcher::CalculateChromeFlagsForContent( // Open a minimal popup. *aIsPopupRequested = true; @@ -2656,10 +2656,10 @@ index 64e6db10f000a44d78ace878ec49c526cbbc007d..c0855bef1fda02643f8df5fa1111ab2b /** diff --git a/toolkit/mozapps/update/UpdateService.sys.mjs b/toolkit/mozapps/update/UpdateService.sys.mjs -index 1043c4bc4e0df857f9e9a8bd83756dbe8b0053bd..964ce8b3ff04dda5856b5d1fa447022b0ddd0066 100644 +index e79ef9a551dd4fd0854bbfae56d4d7ee105a70c7..814c53dcc65faf3441a66d253dbcd59363ee32ac 100644 --- a/toolkit/mozapps/update/UpdateService.sys.mjs +++ b/toolkit/mozapps/update/UpdateService.sys.mjs -@@ -3820,6 +3820,8 @@ UpdateService.prototype = { +@@ -3816,6 +3816,8 @@ UpdateService.prototype = { }, get disabledForTesting() { @@ -2716,7 +2716,7 @@ index 7eb9e1104682d4eb47060654f43a1efa8b2a6bb2..a8315d6decf654b5302bea5beeea3414 // Only run this code if LauncherProcessWin.h was included beforehand, thus // signalling that the hosting process should support launcher mode. diff --git a/uriloader/base/nsDocLoader.cpp b/uriloader/base/nsDocLoader.cpp -index 1215c0e32691e50605787a9af4a511e8958c64c3..3545cd1c7d65da2deffd761ed7abc77fd81a600f 100644 +index f779f0028e87a0fd1d7f633c9c23872f9d840cf6..29a2ec96eb52fd3b09994c63a0d5280437be2854 100644 --- a/uriloader/base/nsDocLoader.cpp +++ b/uriloader/base/nsDocLoader.cpp @@ -828,6 +828,13 @@ void nsDocLoader::DocLoaderIsEmpty(bool aFlushLayout, @@ -2946,7 +2946,7 @@ index 1c25e9d9a101233f71e92288a0f93125b81ac1c5..22cf67b0f6e3ddd2b3ed725a314ba6a9 } #endif diff --git a/widget/MouseEvents.h b/widget/MouseEvents.h -index dafdcf64661112df3bce1d56b4b7a2519aa49838..58916791b1b79093cd2db188116348dc1544ddaa 100644 +index 5e20484e043e070dd8a6d7ee5ecab939435efc2c..f721212f147d01a8824e67c26216f249032254bf 100644 --- a/widget/MouseEvents.h +++ b/widget/MouseEvents.h @@ -204,6 +204,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, @@ -2955,25 +2955,25 @@ index dafdcf64661112df3bce1d56b4b7a2519aa49838..58916791b1b79093cd2db188116348dc mClickCount(0), + mJugglerEventId(0), mIgnoreRootScrollFrame(false), - mUseLegacyNonPrimaryDispatch(false), mClickEventPrevented(false) {} -@@ -216,6 +217,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + +@@ -215,6 +216,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, mReason(aReason), mContextMenuTrigger(eNormal), mClickCount(0), + mJugglerEventId(0), mIgnoreRootScrollFrame(false), - mUseLegacyNonPrimaryDispatch(false), mClickEventPrevented(false) {} -@@ -236,6 +238,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + +@@ -234,6 +236,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, mReason(aReason), mContextMenuTrigger(aContextMenuTrigger), mClickCount(0), + mJugglerEventId(0), mIgnoreRootScrollFrame(false), - mUseLegacyNonPrimaryDispatch(false), mClickEventPrevented(false) { -@@ -285,6 +288,9 @@ class WidgetMouseEvent : public WidgetMouseEventBase, + if (aMessage == eContextMenu) { +@@ -282,6 +285,9 @@ class WidgetMouseEvent : public WidgetMouseEventBase, // Otherwise, this must be 0. uint32_t mClickCount; @@ -2983,19 +2983,19 @@ index dafdcf64661112df3bce1d56b4b7a2519aa49838..58916791b1b79093cd2db188116348dc // Whether the event should ignore scroll frame bounds during dispatch. bool mIgnoreRootScrollFrame; -@@ -301,6 +307,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, +@@ -294,6 +300,7 @@ class WidgetMouseEvent : public WidgetMouseEventBase, mExitFrom = aEvent.mExitFrom; mClickCount = aEvent.mClickCount; + mJugglerEventId = aEvent.mJugglerEventId; mIgnoreRootScrollFrame = aEvent.mIgnoreRootScrollFrame; - mUseLegacyNonPrimaryDispatch = aEvent.mUseLegacyNonPrimaryDispatch; mClickEventPrevented = aEvent.mClickEventPrevented; + } diff --git a/widget/cocoa/NativeKeyBindings.mm b/widget/cocoa/NativeKeyBindings.mm -index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c62b016eec 100644 +index e4bdf715e2fb899e97a5bfeb2e147127460d6047..3554f919480278b7353617481c7ce8050630a1aa 100644 --- a/widget/cocoa/NativeKeyBindings.mm +++ b/widget/cocoa/NativeKeyBindings.mm -@@ -492,6 +492,13 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType, +@@ -528,6 +528,13 @@ break; case KEY_NAME_INDEX_ArrowLeft: if (aEvent.IsAlt()) { @@ -3009,7 +3009,7 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6 break; } if (aEvent.IsMeta() || (aEvent.IsControl() && aEvent.IsShift())) { -@@ -512,6 +519,13 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType, +@@ -550,6 +557,13 @@ break; case KEY_NAME_INDEX_ArrowRight: if (aEvent.IsAlt()) { @@ -3023,7 +3023,7 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6 break; } if (aEvent.IsMeta() || (aEvent.IsControl() && aEvent.IsShift())) { -@@ -532,6 +546,10 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType, +@@ -572,6 +586,10 @@ break; case KEY_NAME_INDEX_ArrowUp: if (aEvent.IsControl()) { @@ -3034,16 +3034,16 @@ index d3e5983259053175584254e7ac01ca9ce024f33a..97f5b851c402fea5477c0ee57af451c6 break; } if (aEvent.IsMeta()) { -@@ -541,7 +559,7 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType, - instance->AppendEditCommandsForSelector( +@@ -582,7 +600,7 @@ !aEvent.IsShift() ? ToObjcSelectorPtr(@selector(moveToBeginningOfDocument:)) -- : ToObjcSelectorPtr(@selector(moveToBegginingOfDocumentAndModifySelection:)), -+ : ToObjcSelectorPtr(@selector(moveToBeginningOfDocumentAndModifySelection:)), + : ToObjcSelectorPtr( +- @selector(moveToBegginingOfDocumentAndModifySelection:)), ++ @selector(moveToBeginningOfDocumentAndModifySelection:)), aCommands); break; } -@@ -564,6 +582,10 @@ void NativeKeyBindings::GetEditCommandsForTests(NativeKeyBindingsType aType, +@@ -609,6 +627,10 @@ break; case KEY_NAME_INDEX_ArrowDown: if (aEvent.IsControl()) { diff --git a/browser_patches/firefox/preferences/playwright.cfg b/browser_patches/firefox/preferences/playwright.cfg index 6c33bd2545180..49976d7fd74e7 100644 --- a/browser_patches/firefox/preferences/playwright.cfg +++ b/browser_patches/firefox/preferences/playwright.cfg @@ -3,6 +3,8 @@ // ================================================================= // THESE ARE THE PROPERTIES THAT MUST BE ENABLED FOR JUGGLER TO WORK // ================================================================= +pref("dom.input_events.security.minNumTicks", 0); +pref("dom.input_events.security.minTimeElapsedInMS", 0); pref("datareporting.policy.dataSubmissionEnabled", false); pref("datareporting.policy.dataSubmissionPolicyAccepted", false); @@ -305,3 +307,5 @@ pref("extensions.blocklist.enabled", false); // Force Firefox Devtools to open in a separate window. pref("devtools.toolbox.host", "window"); +// Disable auto translations +pref("browser.translations.enable", false); diff --git a/browser_patches/webkit/UPSTREAM_CONFIG.sh b/browser_patches/webkit/UPSTREAM_CONFIG.sh index 269f98f234f5c..aa9e856e37b69 100644 --- a/browser_patches/webkit/UPSTREAM_CONFIG.sh +++ b/browser_patches/webkit/UPSTREAM_CONFIG.sh @@ -1,3 +1,3 @@ REMOTE_URL="https://github.com/WebKit/WebKit.git" BASE_BRANCH="main" -BASE_REVISION="3facd67e2518ff15efe1b6cda0810e4c76e9c482" +BASE_REVISION="bc0bc692bc9e368bbd9d530322db73b374cd6268" diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index 15cb218a6c319..e686675ca536f 100644 --- a/browser_patches/webkit/patches/bootstrap.diff +++ b/browser_patches/webkit/patches/bootstrap.diff @@ -1,8 +1,8 @@ diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt -index 4579f72f38f61e1b14f2e5fc13c7cdd3f5e1f6c8..6cdfdfa08cdb7c7193b33ac7400af5cf74d8b06a 100644 +index ebb0626fd9e56c4cbdb17f1723ef8052155cea58..b87e04448c219703d18fc3d04693892423d36de2 100644 --- a/Source/JavaScriptCore/CMakeLists.txt +++ b/Source/JavaScriptCore/CMakeLists.txt -@@ -1418,22 +1418,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS +@@ -1436,22 +1436,27 @@ set(JavaScriptCore_INSPECTOR_DOMAINS ${JAVASCRIPTCORE_DIR}/inspector/protocol/CSS.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Canvas.json ${JAVASCRIPTCORE_DIR}/inspector/protocol/Console.json @@ -132,58 +132,8 @@ index eb25aedee4cd9ebe007e06c2515b37ee095b06f4..badf6559595c8377db1089ca3c25008e static String createIdentifier(); static String requestId(unsigned long identifier); }; -diff --git a/Source/JavaScriptCore/inspector/InjectedScript.cpp b/Source/JavaScriptCore/inspector/InjectedScript.cpp -index 4ce807389f1643cdd6249c645f581641ec3a5c71..555fef137b2ff085089f9e4cbd150dc7555da926 100644 ---- a/Source/JavaScriptCore/inspector/InjectedScript.cpp -+++ b/Source/JavaScriptCore/inspector/InjectedScript.cpp -@@ -90,7 +90,7 @@ void InjectedScript::awaitPromise(const String& promiseObjectId, bool returnByVa - makeAsyncCall(function, WTFMove(callback)); - } - --void InjectedScript::callFunctionOn(Protocol::ErrorString& errorString, const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, RefPtr& result, std::optional& wasThrown) -+void InjectedScript::callFunctionOn(const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, bool awaitPromise, AsyncCallCallback&& callback) - { - ScriptFunctionCall function(globalObject(), injectedScriptObject(), "callFunctionOn"_s, inspectorEnvironment()->functionCallHandler()); - function.appendArgument(objectId); -@@ -98,10 +98,8 @@ void InjectedScript::callFunctionOn(Protocol::ErrorString& errorString, const St - function.appendArgument(arguments); - function.appendArgument(returnByValue); - function.appendArgument(generatePreview); -- -- std::optional savedResultIndex; -- makeEvalCall(errorString, function, result, wasThrown, savedResultIndex); -- ASSERT(!savedResultIndex); -+ function.appendArgument(awaitPromise); -+ makeAsyncCall(function, WTFMove(callback)); - } - - void InjectedScript::evaluateOnCallFrame(Protocol::ErrorString& errorString, JSC::JSValue callFrames, const String& callFrameId, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, bool saveResult, RefPtr& result, std::optional& wasThrown, std::optional& savedResultIndex) -@@ -288,6 +286,10 @@ RefPtr InjectedScript::wrapObject(JSC::JSValue - auto callResult = callFunctionWithEvalEnabled(wrapFunction); - if (!callResult) - return nullptr; -+ auto callResultValue = callResult.value(); -+ // callResultValue could be missing if the execution was terminated -+ if (!callResultValue) -+ return nullptr; - - auto resultValue = toInspectorValue(globalObject(), callResult.value()); - if (!resultValue) -diff --git a/Source/JavaScriptCore/inspector/InjectedScript.h b/Source/JavaScriptCore/inspector/InjectedScript.h -index f09e489283ebf688f73d1e740c3102306173017b..954c8cef9e9a2d3b7c0f128899fa0b2292258186 100644 ---- a/Source/JavaScriptCore/inspector/InjectedScript.h -+++ b/Source/JavaScriptCore/inspector/InjectedScript.h -@@ -64,7 +64,7 @@ public: - void evaluate(Protocol::ErrorString&, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, bool saveResult, RefPtr& result, std::optional& wasThrown, std::optional& savedResultIndex); - void awaitPromise(const String& promiseObjectId, bool returnByValue, bool generatePreview, bool saveResult, AsyncCallCallback&&); - void evaluateOnCallFrame(Protocol::ErrorString&, JSC::JSValue callFrames, const String& callFrameId, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, bool saveResult, RefPtr& result, std::optional& wasThrown, std::optional& savedResultIndex); -- void callFunctionOn(Protocol::ErrorString&, const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, RefPtr& result, std::optional& wasThrown); -+ void callFunctionOn(const String& objectId, const String& expression, const String& arguments, bool returnByValue, bool generatePreview, bool awaitPromise, AsyncCallCallback&&); - void getFunctionDetails(Protocol::ErrorString&, const String& functionId, RefPtr& result); - void functionDetails(Protocol::ErrorString&, JSC::JSValue, RefPtr& result); - void getPreview(Protocol::ErrorString&, const String& objectId, RefPtr& result); diff --git a/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp b/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp -index 14585eabd64a109573bed2336643f4c52e11f180..a1c34d3891405f1c8f6148a031f5045d2fa4d079 100644 +index 731a91727561c1507d074ad27f592d274dfeb324..9320b24579466bb1baa8b68430fe9cbb6c152770 100644 --- a/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp +++ b/Source/JavaScriptCore/inspector/InjectedScriptBase.cpp @@ -84,7 +84,10 @@ static RefPtr jsToInspectorValue(JSC::JSGlobalObject* globalObject, @@ -198,86 +148,6 @@ index 14585eabd64a109573bed2336643f4c52e11f180..a1c34d3891405f1c8f6148a031f5045d if (!inspectorValue) return nullptr; inspectorObject->setValue(name.string(), inspectorValue.releaseNonNull()); -diff --git a/Source/JavaScriptCore/inspector/InjectedScriptSource.js b/Source/JavaScriptCore/inspector/InjectedScriptSource.js -index 25d86b6deecce7fb5f0b0d0a0031c0bf737531ae..f9a9a09d5659824697cb11eebf69192002bceacf 100644 ---- a/Source/JavaScriptCore/inspector/InjectedScriptSource.js -+++ b/Source/JavaScriptCore/inspector/InjectedScriptSource.js -@@ -172,7 +172,7 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase - return; - } - -- if (!(promiseObject instanceof @Promise)) { -+ if (InjectedScriptHost.internalConstructorName(promiseObject) !== 'Promise') { - callback("Object with given id is not a Promise"); - return; - } -@@ -207,14 +207,16 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase - return this._evaluateAndWrap(callFrame.evaluateWithScopeExtension, callFrame, expression, objectGroup, isEvalOnCallFrame, includeCommandLineAPI, returnByValue, generatePreview, saveResult); - } - -- callFunctionOn(objectId, expression, args, returnByValue, generatePreview) -+ callFunctionOn(objectId, expression, args, returnByValue, generatePreview, awaitPromise, callback) - { - let parsedObjectId = this._parseObjectId(objectId); - let object = this._objectForId(parsedObjectId); - let objectGroupName = this._idToObjectGroupName[parsedObjectId.id]; - -- if (!isDefined(object)) -- return "Could not find object with given id"; -+ if (!isDefined(object)) { -+ callback(this._createThrownValue("Could not find object with given id", objectGroupName)); -+ return ; -+ } - - let resolvedArgs = @createArrayWithoutPrototype(); - if (args) { -@@ -223,22 +225,37 @@ let InjectedScript = class InjectedScript extends PrototypelessObjectBase - try { - resolvedArgs[i] = this._resolveCallArgument(callArgs[i]); - } catch (e) { -- return @String(e); -+ callback(this._createThrownValue(e, objectGroupName)); -+ return; - } - } - } - - try { - let func = InjectedScriptHost.evaluate("(" + expression + ")"); -- if (typeof func !== "function") -- return "Given expression does not evaluate to a function"; -- -- return @createObjectWithoutPrototype( -- "wasThrown", false, -- "result", RemoteObject.create(func.@apply(object, resolvedArgs), objectGroupName, returnByValue, generatePreview), -- ); -+ if (typeof func !== "function") { -+ callback(this._createThrownValue("Given expression does not evaluate to a function", objectGroupName)); -+ return; -+ } -+ let result = func.@apply(object, resolvedArgs); -+ if (awaitPromise && isDefined(result) && (InjectedScriptHost.internalConstructorName(result) === 'Promise')) { -+ result.then(value => { -+ callback({ -+ wasThrown: false, -+ result: RemoteObject.create(value, objectGroupName, returnByValue, generatePreview), -+ }); -+ }, reason => { -+ callback(this._createThrownValue(reason, objectGroupName)); -+ }); -+ } else { -+ callback({ -+ wasThrown: false, -+ result: RemoteObject.create(result, objectGroupName, returnByValue, generatePreview) -+ }); -+ } - } catch (e) { -- return this._createThrownValue(e, objectGroupName); -+ callback(this._createThrownValue(e, objectGroupName)); -+ return; - } - } - diff --git a/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp b/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp index 820a08fc660633e09675d0e647bd0c50d2fa905a..5ca5ee5a6897b7ef332d906018b457122096df98 100644 --- a/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp @@ -400,94 +270,44 @@ index 6e573c4dfd1f356b76ef9b46dcee4254e9a28f27..8855604064f5130211baab6caa89318c void warnUnimplemented(const String& method); void internalAddMessage(MessageType, MessageLevel, JSC::JSGlobalObject*, Ref&&); diff --git a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp -index 8b8ca251a7fde9bfa0462f8316eb083f8a3a03dd..846d75708c33ff6aa478e03d722770cedd878d00 100644 +index 4c0b84a3ce88997372b05e54761fbd1d16350c84..5a8da96c4772f998efb188043484c6ba26f73cf0 100644 --- a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp +++ b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp -@@ -177,41 +177,43 @@ void InspectorRuntimeAgent::awaitPromise(const Protocol::Runtime::RemoteObjectId - }); - } - --Protocol::ErrorStringOr, std::optional /* wasThrown */>> InspectorRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture) -+void InspectorRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&& callback) - { - InjectedScript injectedScript = m_injectedScriptManager.injectedScriptForObjectId(objectId); -- if (injectedScript.hasNoValue()) -- return makeUnexpected("Missing injected script for given objectId"_s); -+ if (injectedScript.hasNoValue()) { -+ callback->sendFailure("Missing injected script for given objectId"_s); -+ return; -+ } - -- return callFunctionOn(injectedScript, objectId, functionDeclaration, WTFMove(arguments), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(emulateUserGesture)); -+ callFunctionOn(injectedScript, objectId, functionDeclaration, WTFMove(arguments), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(emulateUserGesture), WTFMove(awaitPromise), WTFMove(callback)); - } - --Protocol::ErrorStringOr, std::optional /* wasThrown */>> InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& /* emulateUserGesture */) -+void InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& /* emulateUserGesture */, std::optional&& awaitPromise, Ref&& callback) +@@ -191,9 +191,8 @@ void InspectorRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObject + void InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const Protocol::Runtime::RemoteObjectId& objectId, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& /* emulateUserGesture */, std::optional&& awaitPromise, Ref&& callback) { ASSERT(!injectedScript.hasNoValue()); - -- Protocol::ErrorString errorString; -- -- RefPtr result; -- std::optional wasThrown; -- -+ JSC::Debugger::TemporarilyDisableExceptionBreakpoints temporarilyDisableExceptionBreakpoints(m_debugger); - + bool pauseAndMute = doNotPauseOnExceptionsAndMuteConsole.value_or(false); if (pauseAndMute) { temporarilyDisableExceptionBreakpoints.replace(); - muteConsole(); - } -- -- injectedScript.callFunctionOn(errorString, objectId, functionDeclaration, arguments ? arguments->toJSONString() : nullString(), returnByValue.value_or(false), generatePreview.value_or(false), result, wasThrown); -+ -+ injectedScript.callFunctionOn(objectId, functionDeclaration, arguments ? arguments->toJSONString() : nullString(), returnByValue.value_or(false), generatePreview.value_or(false), awaitPromise.value_or(false), [callback=WTFMove(callback)] (Protocol::ErrorString& errorString, RefPtr&& result, std::optional&& wasThrown, std::optional&&) { -+ if (!result) -+ callback->sendFailure(errorString); -+ else -+ callback->sendSuccess(result.releaseNonNull(), WTFMove(wasThrown)); -+ }); - - if (pauseAndMute) +@@ -212,6 +211,11 @@ void InspectorRuntimeAgent::callFunctionOn(InjectedScript& injectedScript, const unmuteConsole(); -+} + } -- if (!result) -- return makeUnexpected(errorString); -- -- return { { result.releaseNonNull(), WTFMove(wasThrown) } }; +Protocol::ErrorStringOr InspectorRuntimeAgent::addBinding(const String&) +{ + return makeUnexpected("Not implemented in this type of agent."_s); - } - ++} ++ Protocol::ErrorStringOr> InspectorRuntimeAgent::getPreview(const Protocol::Runtime::RemoteObjectId& objectId) + { + Protocol::ErrorString errorString; diff --git a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h -index 1db64831b835df816130be4e7d42b7b213625656..11e6a6a9b027f2e4ea904e796019ee2a698509cf 100644 +index 5c3488200ab2df6dfc914ff780f05eba7ffd92a2..11e6a6a9b027f2e4ea904e796019ee2a698509cf 100644 --- a/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h +++ b/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h -@@ -62,7 +62,8 @@ public: - Protocol::ErrorStringOr>> parse(const String& expression) final; +@@ -63,6 +63,7 @@ public: Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture) override; void awaitPromise(const Protocol::Runtime::RemoteObjectId&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, Ref&&) final; -- Protocol::ErrorStringOr, std::optional /* wasThrown */>> callFunctionOn(const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture) override; -+ void callFunctionOn(const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&) override; + void callFunctionOn(const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&) override; + Protocol::ErrorStringOr addBinding(const String& name) override; Protocol::ErrorStringOr releaseObject(const Protocol::Runtime::RemoteObjectId&) final; Protocol::ErrorStringOr> getPreview(const Protocol::Runtime::RemoteObjectId&) final; Protocol::ErrorStringOr>, RefPtr>>> getProperties(const Protocol::Runtime::RemoteObjectId&, std::optional&& ownProperties, std::optional&& fetchStart, std::optional&& fetchCount, std::optional&& generatePreview) final; -@@ -82,7 +83,7 @@ protected: - InspectorRuntimeAgent(AgentContext&); - - Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(InjectedScript&, const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture); -- Protocol::ErrorStringOr, std::optional /* wasThrown */>> callFunctionOn(InjectedScript&, const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture); -+ void callFunctionOn(InjectedScript&, const Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&); - - InjectedScriptManager& injectedScriptManager() { return m_injectedScriptManager; } - diff --git a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp b/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp index 508eb02ec95c52408384a1e2b77648afd426dd9d..93d6757e170272cda8c346bf51578d2b5f8aafaa 100644 --- a/Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp @@ -1016,7 +836,7 @@ index 96af27ece2ac200e11c4311b3ca0d9d3b5a048da..3168f7806fcbdabec07acc5e304bae1e ], "events": [ diff --git a/Source/JavaScriptCore/inspector/protocol/Page.json b/Source/JavaScriptCore/inspector/protocol/Page.json -index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b394a9dfcd6 100644 +index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..7e6c8b8954ed3d5d4ac77dfe51d0e08c56a7a5fc 100644 --- a/Source/JavaScriptCore/inspector/protocol/Page.json +++ b/Source/JavaScriptCore/inspector/protocol/Page.json @@ -20,7 +20,14 @@ @@ -1129,17 +949,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 { "name": "overrideSetting", "description": "Allows the frontend to override the inspected page's settings.", -@@ -226,7 +299,8 @@ - "name": "setBootstrapScript", - "targetTypes": ["page"], - "parameters": [ -- { "name": "source", "type": "string", "optional": true, "description": "If `source` is provided (and not empty), it will be injected into all future global objects as soon as they're created. Omitting `source` will stop this from happening." } -+ { "name": "source", "type": "string", "optional": true, "description": "If `source` is provided (and not empty), it will be injected into all future global objects as soon as they're created. Omitting `source` will stop this from happening." }, -+ { "name": "worldName", "type": "string", "optional": true, "description": "Isolated world name to evaluate the script in. If not specified main world will be used." } - ] - }, - { -@@ -283,6 +357,28 @@ +@@ -283,6 +356,28 @@ { "name": "media", "type": "string", "description": "Media type to emulate. Empty string disables the override." } ] }, @@ -1168,7 +978,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 { "name": "snapshotNode", "description": "Capture a snapshot of the specified node that does not include unrelated layers.", -@@ -303,7 +399,8 @@ +@@ -303,7 +398,8 @@ { "name": "y", "type": "integer", "description": "Y coordinate" }, { "name": "width", "type": "integer", "description": "Rectangle width" }, { "name": "height", "type": "integer", "description": "Rectangle height" }, @@ -1178,7 +988,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 ], "returns": [ { "name": "dataURL", "type": "string", "description": "Base64-encoded image data (PNG)." } -@@ -321,12 +418,92 @@ +@@ -321,12 +417,71 @@ { "name": "setScreenSizeOverride", "description": "Overrides screen size exposed to DOM and used in media queries for testing with provided values.", @@ -1197,17 +1007,6 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 + ] + }, + { -+ "name": "setComposition", -+ "description": "Set the current IME composition.", -+ "parameters": [ -+ { "name": "text", "type": "string" }, -+ { "name": "selectionStart", "type": "integer" }, -+ { "name": "selectionLength", "type": "integer" }, -+ { "name": "replacementStart", "type": "integer", "optional": true }, -+ { "name": "replacementLength", "type": "integer", "optional": true } -+ ] -+ }, -+ { + "name": "accessibilitySnapshot", + "description": "Serializes and returns all of the accessibility nodes of the page.", + "parameters": [ @@ -1257,22 +1056,12 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 + ] + }, + { -+ "name": "setVisibleContentRects", -+ "targetTypes": ["page"], -+ "parameters": [ -+ { "name": "unobscuredContentRect", "$ref": "DOM.Rect", "optional": true }, -+ { "name": "contentInsets", "$ref": "Insets", "optional": true }, -+ { "name": "obscuredInsets", "$ref": "Insets", "optional": true }, -+ { "name": "unobscuredInsets", "$ref": "Insets", "optional": true } -+ ] -+ }, -+ { + "name": "updateScrollingState", + "description": "Ensures that the scroll regions are up to date." } ], "events": [ -@@ -334,14 +511,16 @@ +@@ -334,14 +489,16 @@ "name": "domContentEventFired", "targetTypes": ["page"], "parameters": [ @@ -1291,7 +1080,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 ] }, { -@@ -351,6 +530,14 @@ +@@ -351,6 +508,14 @@ { "name": "frame", "$ref": "Frame", "description": "Frame object." } ] }, @@ -1306,7 +1095,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 { "name": "frameDetached", "description": "Fired when frame has been detached from its parent.", -@@ -379,7 +566,8 @@ +@@ -379,7 +544,8 @@ "targetTypes": ["page"], "parameters": [ { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has scheduled a navigation." }, @@ -1316,7 +1105,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 ] }, { -@@ -390,6 +578,22 @@ +@@ -390,6 +556,22 @@ { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has cleared its scheduled navigation." } ] }, @@ -1339,7 +1128,7 @@ index b5e2bb2eb58765ec20392b36bf5ef1ac35857a69..5a7b2e4d3bd7cb99f182c543da756b39 { "name": "defaultUserPreferencesDidChange", "description": "Fired when the default value of a user preference changes at the system level.", -@@ -397,6 +601,42 @@ +@@ -397,6 +579,42 @@ "parameters": [ { "name": "preferences", "type": "array", "items": { "$ref": "UserPreference" }, "description": "List of user preferences that can be overriden and their new system (default) values." } ] @@ -1696,34 +1485,24 @@ index 0000000000000000000000000000000000000000..978d6f92b18498633c982969299f0683 + ] +} diff --git a/Source/JavaScriptCore/inspector/protocol/Runtime.json b/Source/JavaScriptCore/inspector/protocol/Runtime.json -index dfbe4eece1af3748408b5fd968331799aa9e1d30..0e2ae5d96b3cdcc20ecc95ddc7b49538dcb3c302 100644 +index 301b88eb1607b0975c3fa81d91045eb5403378ec..0e2ae5d96b3cdcc20ecc95ddc7b49538dcb3c302 100644 --- a/Source/JavaScriptCore/inspector/protocol/Runtime.json +++ b/Source/JavaScriptCore/inspector/protocol/Runtime.json -@@ -263,12 +263,21 @@ - { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state." }, - { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." }, - { "name": "generatePreview", "type": "boolean", "optional": true, "description": "Whether preview should be generated for the result." }, -- { "name": "emulateUserGesture", "type": "boolean", "optional": true, "description": "Whether the expression should be considered to be in a user gesture or not." } -+ { "name": "emulateUserGesture", "type": "boolean", "optional": true, "description": "Whether the expression should be considered to be in a user gesture or not." }, -+ { "name": "awaitPromise", "type": "boolean", "optional": true, "description": "Whether to automatically await returned promise." } +@@ -272,6 +272,13 @@ ], - "returns": [ - { "name": "result", "$ref": "RemoteObject", "description": "Call result." }, - { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." } -- ] -+ ], -+ "async": true -+ }, + "async": true + }, + { + "name": "addBinding", + "description": "Adds binding with the given name on the global objects of all inspected contexts. Each binding function call produces Runtime.bindingCalled event.", + "parameters": [ + { "name": "name", "type": "string", "description": "Name of the bound function." } + ] - }, ++ }, { "name": "getPreview", -@@ -406,6 +415,15 @@ + "description": "Returns a preview for the given object.", +@@ -408,6 +415,15 @@ "parameters": [ { "name": "context", "$ref": "ExecutionContextDescription", "description": "A newly created execution context." } ] @@ -1855,31 +1634,8 @@ index 52920cded24a9c6b0ef6fb4e518664955db4f9fa..bbbabc4e7259088b9404e8cc07eecd6f ] }, { -diff --git a/Source/JavaScriptCore/inspector/protocol/Worker.json b/Source/JavaScriptCore/inspector/protocol/Worker.json -index 638612413466efc87b737e8a81042ed07ca12703..6f9e518ff0bfa2a6228675d25b6b785f1ed3022a 100644 ---- a/Source/JavaScriptCore/inspector/protocol/Worker.json -+++ b/Source/JavaScriptCore/inspector/protocol/Worker.json -@@ -16,7 +16,7 @@ - "description": "Sent after the frontend has sent all initialization messages and can resume this worker. This command is required to allow execution in the worker.", - "parameters": [ - { "name": "workerId", "type": "string" } -- ] -+ ] - }, - { - "name": "sendMessageToWorker", -@@ -33,7 +33,8 @@ - "parameters": [ - { "name": "workerId", "type": "string" }, - { "name": "url", "type": "string" }, -- { "name": "name", "type": "string" } -+ { "name": "name", "type": "string" }, -+ { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame this worker belongs to." } - ] - }, - { diff --git a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp -index 4fccf72d231285ff2c3f250990b86506303c9ec8..8472ba00fcada5c80fa0356c15b6683c4c6ceb5d 100644 +index e91e5ed0b72d5a3a4c8455ce1da31647f63b2011..7ebd9a28c78ad4c2296ed3c603ff81723719fdbd 100644 --- a/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp +++ b/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp @@ -28,7 +28,6 @@ @@ -1929,11 +1685,24 @@ index 0c300bedc697024ca511e43d480f3b7205df3ed6..e54875b46c558903a6b6157833b82ec8 Source/third_party/libyuv/include Source/third_party/opus/src/celt Source/third_party/opus/src/include +diff --git a/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig b/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig +index 8f79bffda497f6144e9e82c23397a182a6745cf3..d22f4fd1b54d535288994c44a5bd61405a1791cb 100644 +--- a/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig ++++ b/Source/ThirdParty/libwebrtc/Configurations/Base-libwebrtc.xcconfig +@@ -21,7 +21,7 @@ + // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom; ++HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom Source/third_party/libwebm/mkvmuxer Source/third_party/libvpx/source/libvpx/third_party/libwebm; + USE_HEADERMAP = NO; + + WARNING_CFLAGS = -Wno-deprecated-declarations $(inherited); diff --git a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp -index c3ba9e19caff72011010471c8c46c91b53a22498..d47a93e1f7fe9f4d52376dcc4dcc924231fdd108 100644 +index eed4780db5dd82c4946ef9662f91ec259150b598..1cdfac1540b8dc06a5ad0dbc40b63087520c6f70 100644 --- a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp +++ b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp -@@ -389,3 +389,24 @@ __ZN3rtc7NetworkC1ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEES5_RKNS_9I +@@ -386,3 +386,24 @@ __ZN3rtc7NetworkC1ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEES5_RKNS_9I __ZN6webrtc18callback_list_impl21CallbackListReceiversC1Ev __ZNK6webrtc32webrtc_sequence_checker_internal19SequenceCheckerImpl19ExpectationToStringEv __ZN3rtc16InterfaceAddressaSERKS0_ @@ -1958,19 +1727,6 @@ index c3ba9e19caff72011010471c8c46c91b53a22498..d47a93e1f7fe9f4d52376dcc4dcc9242 +_vpx_codec_iface_name +_vpx_codec_version_str +_vpx_codec_vp8_cx -diff --git a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig -index 4d9ece9ff41411d2f1812671ff210289f4b2da01..b5b3f73accea435a4d0434b06787a4d945417807 100644 ---- a/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig -+++ b/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig -@@ -37,7 +37,7 @@ DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_ = $(NORMAL_UMBRELLA_FRAMEWORK - DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_YES = @loader_path/../../../; - - GCC_WARN_64_TO_32_BIT_CONVERSION = NO; --HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom; -+HEADER_SEARCH_PATHS = Source Source/third_party/libsrtp/crypto/include Source/third_party/libsrtp/include Source/third_party/boringssl/src/include Source/third_party/libyuv/include Source/webrtc/sdk/objc/Framework/Headers Source/webrtc/common_audio/signal_processing/include Source/webrtc/modules/audio_coding/codecs/isac/main/include Source/third_party/opus/src/celt Source/third_party/opus/src/include Source/third_party/opus/src/src Source/webrtc/modules/audio_device/mac Source/webrtc/modules/audio_device/ios Source/webrtc Source/webrtc/sdk/objc Source/webrtc/sdk/objc/base Source/webrtc/sdk/objc/Framework/Classes Source/third_party/libsrtp/config Source/webrtc/sdk/objc/Framework/Classes/Common Source/webrtc/sdk/objc/Framework/Classes/Video Source/webrtc/sdk/objc/Framework/Classes/PeerConnection Source/third_party/abseil-cpp Source/third_party/libvpx/source/libvpx Source/third_party/libwebm/webm_parser/include Source/third_party/crc32c/config Source/third_party/crc32c/include Source/third_party/crc32c/src/include Source/third_party/libaom/source/libaom Source/third_party/libwebm/mkvmuxer Source/third_party/libvpx/source/libvpx/third_party/libwebm; - - PUBLIC_HEADERS_FOLDER_PREFIX = $(WK_LIBRARY_HEADERS_FOLDER_PATH); - INSTALL_PUBLIC_HEADER_PREFIX = $(INSTALL_PATH_PREFIX)$(PUBLIC_HEADERS_FOLDER_PREFIX); diff --git a/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc b/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc index bcd9e02bc019e17799fe812d7d9a4c7c316b3456..909bbac68574129ea60af831f30de59edf3c28b8 100644 --- a/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc @@ -1993,12 +1749,12 @@ index bcd9e02bc019e17799fe812d7d9a4c7c316b3456..909bbac68574129ea60af831f30de59e rtt = CompactNtpRttToTimeDelta( receive_time_ntp - block.delay_since_last_sr() - block.last_sr()); diff --git a/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj b/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj -index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e091097e30 100644 +index e05e49446506e8e7adff5854798471b6c9a72a76..b61126bd44324aecd9295affe1d02b9b08fafe98 100644 --- a/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj +++ b/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj -@@ -6,6 +6,20 @@ - objectVersion = 52; - objects = { +@@ -28,6 +28,20 @@ + }; + /* End PBXAggregateTarget section */ +/* Begin PBXAggregateTarget section */ + F31720AC27FE215900EEE407 /* Copy libvpx headers */ = { @@ -2017,7 +1773,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 /* Begin PBXBuildFile section */ 2D6BFF60280A93DF00A1A74F /* video_coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4131C45B234C81710028A615 /* video_coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2D6BFF61280A93EC00A1A74F /* video_codec_initializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4131C45E234C81720028A615 /* video_codec_initializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; -@@ -4952,6 +4966,9 @@ +@@ -5028,6 +5042,9 @@ DDF30D9127C5C725006A526F /* receive_side_congestion_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF30D9027C5C725006A526F /* receive_side_congestion_controller.h */; }; DDF30D9527C5C756006A526F /* bwe_defines.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF30D9327C5C756006A526F /* bwe_defines.h */; }; DDF30D9627C5C756006A526F /* remote_bitrate_estimator.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF30D9427C5C756006A526F /* remote_bitrate_estimator.h */; }; @@ -2027,7 +1783,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 /* End PBXBuildFile section */ /* Begin PBXBuildRule section */ -@@ -5230,6 +5247,13 @@ +@@ -5418,6 +5435,13 @@ remoteGlobalIDString = DDF30D0527C5C003006A526F; remoteInfo = absl; }; @@ -2041,7 +1797,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ -@@ -10593,6 +10617,9 @@ +@@ -10837,6 +10861,9 @@ DDF30D9027C5C725006A526F /* receive_side_congestion_controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = receive_side_congestion_controller.h; sourceTree = ""; }; DDF30D9327C5C756006A526F /* bwe_defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bwe_defines.h; sourceTree = ""; }; DDF30D9427C5C756006A526F /* remote_bitrate_estimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remote_bitrate_estimator.h; sourceTree = ""; }; @@ -2051,7 +1807,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 FB39D0D11200F0E300088E69 /* libwebrtc.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libwebrtc.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ -@@ -18919,6 +18946,7 @@ +@@ -19415,6 +19442,7 @@ isa = PBXGroup; children = ( CDFD2F9224C4B2F90048DAC3 /* common */, @@ -2059,7 +1815,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 CDEBB19224C0191800ADBD44 /* webm_parser */, ); path = libwebm; -@@ -19360,6 +19388,16 @@ +@@ -19849,6 +19877,16 @@ path = include; sourceTree = ""; }; @@ -2076,7 +1832,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 FB39D06E1200ED9200088E69 = { isa = PBXGroup; children = ( -@@ -22287,6 +22325,7 @@ +@@ -22941,6 +22979,7 @@ ); dependencies = ( 410B3827292B73E90003E515 /* PBXTargetDependency */, @@ -2084,15 +1840,15 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 DD2E76E827C6B69A00F2A74C /* PBXTargetDependency */, CDEBB4CC24C01AB400ADBD44 /* PBXTargetDependency */, 411ED040212E0811004320BA /* PBXTargetDependency */, -@@ -22351,6 +22390,7 @@ - DDF30D0527C5C003006A526F /* absl */, - 448D48332AB0BDB00065014C /* fuzz-libvpx-vp8 */, - 44C20E892AB39FA80046C6A8 /* fuzz-libvpx-vp9 */, +@@ -23016,6 +23055,7 @@ + 446359B62AEA108C00551EEE /* vp8_replay_fuzzer */, + 44C20E892AB39FA80046C6A8 /* vp9_dec_fuzzer */, + 444A6EF02AEADFC9005FE121 /* vp9_replay_fuzzer */, + F31720AC27FE215900EEE407 /* Copy libvpx headers */, ); }; /* End PBXProject section */ -@@ -22433,6 +22473,23 @@ +@@ -23098,6 +23138,23 @@ shellPath = /bin/sh; shellScript = "\"${SRCROOT}/Scripts/create-symlink-to-altroot.sh\"\n"; }; @@ -2116,7 +1872,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ -@@ -24200,6 +24257,9 @@ +@@ -24956,6 +25013,9 @@ 5CDD865E1E43B8B500621E92 /* min_max_operations.c in Sources */, 4189395B242A71F5007FDC41 /* min_video_bitrate_experiment.cc in Sources */, 41B8D8FB28CB85CB00E5FA37 /* missing_mandatory_parameter_cause.cc in Sources */, @@ -2126,7 +1882,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 4131C387234B957D0028A615 /* moving_average.cc in Sources */, 41FCBB1521B1F7AA00A5DF27 /* moving_average.cc in Sources */, 5CD286101E6A64C90094FDC8 /* moving_max.cc in Sources */, -@@ -24919,6 +24979,11 @@ +@@ -25755,6 +25815,11 @@ target = DDF30D0527C5C003006A526F /* absl */; targetProxy = DD2E76E727C6B69A00F2A74C /* PBXContainerItemProxy */; }; @@ -2138,7 +1894,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ -@@ -25176,6 +25241,27 @@ +@@ -26204,6 +26269,27 @@ }; name = Production; }; @@ -2166,7 +1922,7 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 FB39D0711200ED9200088E69 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */; -@@ -25328,6 +25414,16 @@ +@@ -26436,6 +26522,16 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Production; }; @@ -2184,18 +1940,18 @@ index c6fde0910102421de6c77e1d1dbc52ffe7ed7098..cb122ff5f30d68fc168fbf80367c85e0 isa = XCConfigurationList; buildConfigurations = ( diff --git a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml -index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de14311725aa5 100644 +index bd465484eab340e7b8ef01030fdc245cae2f48b6..950a84ad3a0ad06bb4206f9e9a73f7c69224c99c 100644 --- a/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml +++ b/Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml -@@ -590,6 +590,7 @@ AspectRatioOfImgFromWidthAndHeightEnabled: - default: true +@@ -553,6 +553,7 @@ AriaTextRoleEnabled: + default: false # FIXME: This is on by default in WebKit2 PLATFORM(COCOA). Perhaps we should consider turning it on for WebKitLegacy as well. +# Playwright: enable on all platforms to align with Safari. AsyncClipboardAPIEnabled: type: bool status: mature -@@ -600,7 +601,7 @@ AsyncClipboardAPIEnabled: +@@ -563,7 +564,7 @@ AsyncClipboardAPIEnabled: default: false WebKit: "PLATFORM(COCOA) || PLATFORM(GTK)" : true @@ -2204,15 +1960,19 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 WebCore: default: false -@@ -1953,6 +1954,7 @@ CrossOriginEmbedderPolicyEnabled: +@@ -1887,9 +1888,10 @@ CrossOriginEmbedderPolicyEnabled: WebCore: default: false +# Playwright: disable setting. CrossOriginOpenerPolicyEnabled: type: bool - status: stable -@@ -1963,7 +1965,7 @@ CrossOriginOpenerPolicyEnabled: +- status: stable ++ status: preview + category: security + humanReadableName: "Cross-Origin-Opener-Policy (COOP) header" + humanReadableDescription: "Support for Cross-Origin-Opener-Policy (COOP) header" +@@ -1897,7 +1899,7 @@ CrossOriginOpenerPolicyEnabled: WebKitLegacy: default: false WebKit: @@ -2221,7 +1981,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 WebCore: default: false -@@ -1993,7 +1995,7 @@ CustomPasteboardDataEnabled: +@@ -1927,7 +1929,7 @@ CustomPasteboardDataEnabled: WebKitLegacy: default: false WebKit: @@ -2230,7 +1990,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 default: false DNSPrefetchingEnabled: -@@ -2038,6 +2040,7 @@ DOMAudioSessionFullEnabled: +@@ -1972,6 +1974,7 @@ DOMAudioSessionFullEnabled: WebCore: default: false @@ -2238,7 +1998,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 DOMPasteAccessRequestsEnabled: type: bool status: internal -@@ -2049,7 +2052,7 @@ DOMPasteAccessRequestsEnabled: +@@ -1983,7 +1986,7 @@ DOMPasteAccessRequestsEnabled: default: false WebKit: "PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(VISION)": true @@ -2247,7 +2007,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 WebCore: default: false -@@ -3474,6 +3477,7 @@ InspectorAttachmentSide: +@@ -3339,6 +3342,7 @@ InspectorAttachmentSide: WebKit: default: 0 @@ -2255,7 +2015,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 InspectorStartsAttached: type: bool status: embedder -@@ -3481,7 +3485,7 @@ InspectorStartsAttached: +@@ -3346,7 +3350,7 @@ InspectorStartsAttached: exposed: [ WebKit ] defaultValue: WebKit: @@ -2264,15 +2024,19 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 InspectorWindowFrame: type: String -@@ -3849,6 +3853,7 @@ LayoutViewportHeightExpansionFactor: +@@ -3701,9 +3705,10 @@ LayoutViewportHeightExpansionFactor: WebCore: default: 0 +# Playwright: disable setting. LazyIframeLoadingEnabled: type: bool - status: stable -@@ -3859,9 +3864,9 @@ LazyIframeLoadingEnabled: +- status: stable ++ status: preview + category: html + humanReadableName: "Lazy iframe loading" + humanReadableDescription: "Enable lazy iframe loading support" +@@ -3711,9 +3716,9 @@ LazyIframeLoadingEnabled: WebKitLegacy: default: true WebKit: @@ -2284,7 +2048,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 LazyImageLoadingEnabled: type: bool -@@ -5193,6 +5198,19 @@ PluginsEnabled: +@@ -5049,6 +5054,19 @@ PluginsEnabled: WebCore: default: false @@ -2304,7 +2068,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 PopoverAttributeEnabled: type: bool status: stable -@@ -6877,6 +6895,7 @@ UseCGDisplayListsForDOMRendering: +@@ -6715,6 +6733,7 @@ UseCGDisplayListsForDOMRendering: WebKit: default: true @@ -2312,7 +2076,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 UseGPUProcessForCanvasRenderingEnabled: type: bool status: stable -@@ -6889,7 +6908,7 @@ UseGPUProcessForCanvasRenderingEnabled: +@@ -6727,7 +6746,7 @@ UseGPUProcessForCanvasRenderingEnabled: defaultValue: WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true @@ -2321,7 +2085,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 default: false UseGPUProcessForDOMRenderingEnabled: -@@ -6931,6 +6950,7 @@ UseGPUProcessForMediaEnabled: +@@ -6769,6 +6788,7 @@ UseGPUProcessForMediaEnabled: "ENABLE(GPU_PROCESS_BY_DEFAULT)": true default: false @@ -2329,7 +2093,7 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 UseGPUProcessForWebGLEnabled: type: bool status: internal -@@ -6942,7 +6962,7 @@ UseGPUProcessForWebGLEnabled: +@@ -6780,7 +6800,7 @@ UseGPUProcessForWebGLEnabled: default: false WebKit: "ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true @@ -2339,10 +2103,10 @@ index 96f1cf72103b3fd8d12a6fa1d46e22951364065c..1649bb242b75b7f794c93928803de143 WebCore: "ENABLE(GPU_PROCESS_BY_DEFAULT) && ENABLE(GPU_PROCESS_WEBGL_BY_DEFAULT)": true diff --git a/Source/WTF/wtf/PlatformEnable.h b/Source/WTF/wtf/PlatformEnable.h -index 7dc33dacc7a295c7465857f8b0097d719c563eab..c7628dab1a62dad072ff79ccda1b8e0ae94a9598 100644 +index 672f34c1d4a9b6af9453a91427c6a5fd311e3c8a..4861aeb7e723dbd2cfcbb2c55625fe61762d8dd9 100644 --- a/Source/WTF/wtf/PlatformEnable.h +++ b/Source/WTF/wtf/PlatformEnable.h -@@ -467,7 +467,7 @@ +@@ -459,7 +459,7 @@ // ORIENTATION_EVENTS should never get enabled on Desktop, only Mobile. #if !defined(ENABLE_ORIENTATION_EVENTS) @@ -2351,7 +2115,7 @@ index 7dc33dacc7a295c7465857f8b0097d719c563eab..c7628dab1a62dad072ff79ccda1b8e0a #endif #if !defined(ENABLE_OVERFLOW_SCROLLING_TOUCH) -@@ -584,7 +584,7 @@ +@@ -576,7 +576,7 @@ #endif #if !defined(ENABLE_TOUCH_EVENTS) @@ -2361,10 +2125,10 @@ index 7dc33dacc7a295c7465857f8b0097d719c563eab..c7628dab1a62dad072ff79ccda1b8e0a #if !defined(ENABLE_TOUCH_ACTION_REGIONS) diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h -index 78311045d08888229f8a7fe833eac18d95ac4a1c..bb872fce96aa326e02d7ec282d3bc748c3fe9b20 100644 +index e30d25bd8505fcf6ba86dbb3e87761286a068e51..ccd89e82ccd96f386fd03140e441731a18c8dbc8 100644 --- a/Source/WTF/wtf/PlatformHave.h +++ b/Source/WTF/wtf/PlatformHave.h -@@ -419,7 +419,7 @@ +@@ -415,7 +415,7 @@ #define HAVE_FOUNDATION_WITH_SAME_SITE_COOKIE_SUPPORT 1 #endif @@ -2373,7 +2137,7 @@ index 78311045d08888229f8a7fe833eac18d95ac4a1c..bb872fce96aa326e02d7ec282d3bc748 #define HAVE_OS_DARK_MODE_SUPPORT 1 #endif -@@ -1276,7 +1276,8 @@ +@@ -1257,7 +1257,8 @@ #endif #if PLATFORM(MAC) @@ -2384,10 +2148,10 @@ index 78311045d08888229f8a7fe833eac18d95ac4a1c..bb872fce96aa326e02d7ec282d3bc748 #if !defined(HAVE_LOCKDOWN_MODE_PDF_ADDITIONS) && \ diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make -index 7f92dbc826915e61c6bd3cd6b056cc0a3489f401..74a3bbf87faa9961e71b155a4997d742d967a535 100644 +index 043742495941e4cc10c811bbaa225357a9aaa9ea..7b30d5e2539c05408873ae700aa2df4fb59c196e 100644 --- a/Source/WebCore/DerivedSources.make +++ b/Source/WebCore/DerivedSources.make -@@ -1117,6 +1117,10 @@ JS_BINDING_IDLS := \ +@@ -1130,6 +1130,10 @@ JS_BINDING_IDLS := \ $(WebCore)/dom/Slotable.idl \ $(WebCore)/dom/StaticRange.idl \ $(WebCore)/dom/StringCallback.idl \ @@ -2398,7 +2162,7 @@ index 7f92dbc826915e61c6bd3cd6b056cc0a3489f401..74a3bbf87faa9961e71b155a4997d742 $(WebCore)/dom/Text.idl \ $(WebCore)/dom/TextDecoder.idl \ $(WebCore)/dom/TextDecoderStream.idl \ -@@ -1691,9 +1695,6 @@ ADDITIONAL_BINDING_IDLS = \ +@@ -1710,9 +1714,6 @@ ADDITIONAL_BINDING_IDLS = \ GestureEvent.idl \ Internals+Additions.idl \ InternalsAdditions.idl \ @@ -2424,7 +2188,7 @@ index 9dfd25d4160011d576e9c636e4c805bfd486fd26..573edcb686440ea8426e3a59540250a5 } diff --git a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm -index 316aa5b17c5346b2d3e420e7262e7e76e254f427..c2beed6bd1e83257095252146ee3506ce5c92b07 100644 +index 506ebb25fa290f27a75674a6fe5506fc311910d6..07d34c567b42aca08b188243c3f036f64a8da0c4 100644 --- a/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm +++ b/Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm @@ -195,6 +195,7 @@ - (void)sendEndIfNeeded @@ -2472,10 +2236,10 @@ index 99db9b2a0693bddab0b783b47746460cd0b7ffd9..74cbf2811a6f8dbcf631c8a218ad4a13 set(CSS_VALUE_PLATFORM_DEFINES "HAVE_OS_DARK_MODE_SUPPORT=1") diff --git a/Source/WebCore/SourcesCocoa.txt b/Source/WebCore/SourcesCocoa.txt -index 0bec3d28a9ff13276abdd498c7e8ff210261d503..e1b90be0fed408da79c1a14432345d78fe4715a0 100644 +index 2b1def2b2a7bc1083fd2611eb6fc180f39dcca0a..1724fc2550d0ce4690ceb7674f92999f1d9ff007 100644 --- a/Source/WebCore/SourcesCocoa.txt +++ b/Source/WebCore/SourcesCocoa.txt -@@ -694,3 +694,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify +@@ -700,3 +700,9 @@ platform/graphics/angle/GraphicsContextGLANGLE.cpp @no-unify platform/graphics/cocoa/ANGLEUtilitiesCocoa.cpp @no-unify platform/graphics/cocoa/GraphicsContextGLCocoa.mm @no-unify platform/graphics/cv/GraphicsContextGLCVCocoa.cpp @no-unify @@ -2486,10 +2250,10 @@ index 0bec3d28a9ff13276abdd498c7e8ff210261d503..e1b90be0fed408da79c1a14432345d78 +JSTouchList.cpp +// Playwright end diff --git a/Source/WebCore/SourcesGTK.txt b/Source/WebCore/SourcesGTK.txt -index c18097a3a2747bcc5133467b7905779cbbab702e..3c28c6c2590e260f827464f6ce4dca4cc833dc2d 100644 +index 4f3db3c7900ed6873487be379cb9cde693d536e1..9cb0f67b8bd5b5d98bbb595dcf60b950fe140be9 100644 --- a/Source/WebCore/SourcesGTK.txt +++ b/Source/WebCore/SourcesGTK.txt -@@ -123,3 +123,10 @@ platform/text/hyphen/HyphenationLibHyphen.cpp +@@ -122,3 +122,10 @@ platform/text/hyphen/HyphenationLibHyphen.cpp platform/unix/LoggingUnix.cpp platform/xdg/MIMETypeRegistryXdg.cpp @@ -2532,10 +2296,10 @@ index 06c923a3227befac7680faf2cdb44abd657d6e5f..adcf594fc399b93772c1c962b283bef1 +JSSpeechSynthesisEventInit.cpp +// Playwright: end. diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b9afd85e3 100644 +index 4fcc73780444062e38182cbeb43b8d41bb423b94..4034be971d8c0dd868521d38dd33ac43c9d03747 100644 --- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj -@@ -6104,6 +6104,13 @@ +@@ -6144,6 +6144,13 @@ EDE3A5000C7A430600956A37 /* ColorMac.h in Headers */ = {isa = PBXBuildFile; fileRef = EDE3A4FF0C7A430600956A37 /* ColorMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; EDEC98030AED7E170059137F /* WebCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = EDEC98020AED7E170059137F /* WebCorePrefix.h */; }; EFCC6C8F20FE914400A2321B /* CanvasActivityRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = EFCC6C8D20FE914000A2321B /* CanvasActivityRecord.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -2549,7 +2313,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b F12171F616A8CF0B000053CA /* WebVTTElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F12171F416A8BC63000053CA /* WebVTTElement.h */; }; F32BDCD92363AACA0073B6AE /* UserGestureEmulationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = F32BDCD72363AACA0073B6AE /* UserGestureEmulationScope.h */; }; F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F344C7121125B82C00F26EEE /* InspectorFrontendClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; -@@ -19701,6 +19708,14 @@ +@@ -19848,6 +19855,14 @@ EDEC98020AED7E170059137F /* WebCorePrefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCorePrefix.h; sourceTree = ""; tabWidth = 4; usesTabs = 0; }; EFB7287B2124C73D005C2558 /* CanvasActivityRecord.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasActivityRecord.cpp; sourceTree = ""; }; EFCC6C8D20FE914000A2321B /* CanvasActivityRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasActivityRecord.h; sourceTree = ""; }; @@ -2564,7 +2328,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b F12171F316A8BC63000053CA /* WebVTTElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebVTTElement.cpp; sourceTree = ""; }; F12171F416A8BC63000053CA /* WebVTTElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVTTElement.h; sourceTree = ""; }; F32BDCD52363AAC90073B6AE /* UserGestureEmulationScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserGestureEmulationScope.cpp; sourceTree = ""; }; -@@ -27198,6 +27213,11 @@ +@@ -27408,6 +27423,11 @@ BC4A5324256055590028C592 /* TextDirectionSubmenuInclusionBehavior.h */, 2D4F96F11A1ECC240098BF88 /* TextIndicator.cpp */, 2D4F96F21A1ECC240098BF88 /* TextIndicator.h */, @@ -2576,7 +2340,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b F48570A42644C76D00C05F71 /* TranslationContextMenuInfo.h */, F4E1965F21F26E4E00285078 /* UndoItem.cpp */, 2ECDBAD521D8906300F00ECD /* UndoItem.h */, -@@ -33398,6 +33418,8 @@ +@@ -33646,6 +33666,8 @@ 29E4D8DF16B0940F00C84704 /* PlatformSpeechSynthesizer.h */, 1AD8F81A11CAB9E900E93E54 /* PlatformStrategies.cpp */, 1AD8F81911CAB9E900E93E54 /* PlatformStrategies.h */, @@ -2585,7 +2349,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b 0FD7C21D23CE41E30096D102 /* PlatformWheelEvent.cpp */, 935C476A09AC4D4F00A6AAB4 /* PlatformWheelEvent.h */, F491A66A2A9FEFA300F96146 /* PlatformWheelEvent.serialization.in */, -@@ -35987,6 +36009,7 @@ +@@ -36243,6 +36265,7 @@ AD6E71AB1668899D00320C13 /* DocumentSharedObjectPool.h */, 6BDB5DC1227BD3B800919770 /* DocumentStorageAccess.cpp */, 6BDB5DC0227BD3B800919770 /* DocumentStorageAccess.h */, @@ -2593,7 +2357,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b 7CE7FA5B1EF882300060C9D6 /* DocumentTouch.cpp */, 7CE7FA591EF882300060C9D6 /* DocumentTouch.h */, A8185F3209765765005826D9 /* DocumentType.cpp */, -@@ -40619,6 +40642,8 @@ +@@ -40909,6 +40932,8 @@ 1AD8F81B11CAB9E900E93E54 /* PlatformStrategies.h in Headers */, 0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */, 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */, @@ -2602,7 +2366,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b CDD08ABD277E542600EA3755 /* PlatformTrackConfiguration.h in Headers */, CD1F9B022700323D00617EB6 /* PlatformVideoColorPrimaries.h in Headers */, CD1F9B01270020B700617EB6 /* PlatformVideoColorSpace.h in Headers */, -@@ -41863,6 +41888,7 @@ +@@ -42160,6 +42185,7 @@ 0F54DD081881D5F5003EEDBB /* Touch.h in Headers */, 71B7EE0D21B5C6870031C1EF /* TouchAction.h in Headers */, 0F54DD091881D5F5003EEDBB /* TouchEvent.h in Headers */, @@ -2610,7 +2374,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b 0F54DD0A1881D5F5003EEDBB /* TouchList.h in Headers */, 070334D71459FFD5008D8D45 /* TrackBase.h in Headers */, BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */, -@@ -42976,6 +43002,8 @@ +@@ -43275,6 +43301,8 @@ 2D22830323A8470700364B7E /* CursorMac.mm in Sources */, 5CBD59592280E926002B22AA /* CustomHeaderFields.cpp in Sources */, 07E4BDBF2A3A5FAB000D5509 /* DictationCaretAnimator.cpp in Sources */, @@ -2619,7 +2383,7 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b 7CE6CBFD187F394900D46BF5 /* FormatConverter.cpp in Sources */, 4667EA3E2968D9DA00BAB1E2 /* GameControllerHapticEffect.mm in Sources */, 46FE73D32968E52000B8064C /* GameControllerHapticEngines.mm in Sources */, -@@ -43059,6 +43087,9 @@ +@@ -43358,6 +43386,9 @@ CE88EE262414467B007F29C2 /* TextAlternativeWithRange.mm in Sources */, BE39137129B267F500FA5D4F /* TextTransformCocoa.cpp in Sources */, 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */, @@ -2630,10 +2394,10 @@ index f69cbc9c58a85d6c4625b8297f4ca9a1df6246c4..517e26635f3653841c9471cadaea482b 538EC8021F96AF81004D22A8 /* UnifiedSource1.cpp in Sources */, 538EC8051F96AF81004D22A8 /* UnifiedSource2-mm.mm in Sources */, diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp -index 7d0f55b409086d4bee10f9b18f91d4584d74748c..cdfac5546dc5cb4d2826bfc306cd4319d4915d6b 100644 +index 92f1fc9f5f2fb42795b3e07c325711685d9587c8..bf0fb33e0002aae3c86af4228f1d386c75222384 100644 --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityObject.cpp -@@ -64,6 +64,7 @@ +@@ -65,6 +65,7 @@ #include "HTMLParserIdioms.h" #include "HTMLTextAreaElement.h" #include "HitTestResult.h" @@ -2641,7 +2405,7 @@ index 7d0f55b409086d4bee10f9b18f91d4584d74748c..cdfac5546dc5cb4d2826bfc306cd4319 #include "LocalFrame.h" #include "LocalizedStrings.h" #include "MathMLNames.h" -@@ -3946,9 +3947,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const +@@ -3989,9 +3990,14 @@ AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const if (roleValue() == AccessibilityRole::ApplicationDialog) return AccessibilityObjectInclusion::IncludeObject; @@ -2659,10 +2423,10 @@ index 7d0f55b409086d4bee10f9b18f91d4584d74748c..cdfac5546dc5cb4d2826bfc306cd4319 { AXComputedObjectAttributeCache* attributeCache = nullptr; diff --git a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -index c1132158c6c0fa9c5c94c5a5202d5a142709af19..6c4a0d436ddef50b382cfb926a4441b3c73c3886 100644 +index 5c48a13f02c1489923abf2c57e495ff22a0d56fe..4c6fbfc670c65d4aca7f7f3bf688e8dbbb1f6fd5 100644 --- a/Source/WebCore/bindings/js/WebCoreBuiltinNames.h +++ b/Source/WebCore/bindings/js/WebCoreBuiltinNames.h -@@ -176,6 +176,8 @@ namespace WebCore { +@@ -177,6 +177,8 @@ namespace WebCore { macro(DecompressionStreamTransform) \ macro(DelayNode) \ macro(DeprecationReportBody) \ @@ -2672,7 +2436,7 @@ index c1132158c6c0fa9c5c94c5a5202d5a142709af19..6c4a0d436ddef50b382cfb926a4441b3 macro(DynamicsCompressorNode) \ macro(ElementInternals) \ diff --git a/Source/WebCore/css/query/MediaQueryFeatures.cpp b/Source/WebCore/css/query/MediaQueryFeatures.cpp -index 2be61c75b61bc0ef524f2f32c149921dec7e8de1..86ef8f70cbe268f455353be85a0c1259b2a41301 100644 +index 98d40553e12efe44330ddc755636e535dc2e2cf7..103d80febe931e688f8c020e8a58d8aec467a66b 100644 --- a/Source/WebCore/css/query/MediaQueryFeatures.cpp +++ b/Source/WebCore/css/query/MediaQueryFeatures.cpp @@ -370,7 +370,11 @@ const FeatureSchema& forcedColors() @@ -2688,7 +2452,7 @@ index 2be61c75b61bc0ef524f2f32c149921dec7e8de1..86ef8f70cbe268f455353be85a0c1259 return MatchingIdentifiers { CSSValueNone }; } }; -@@ -553,6 +557,9 @@ const FeatureSchema& prefersReducedMotion() +@@ -549,6 +553,9 @@ const FeatureSchema& prefersReducedMotion() [](auto& context) { bool userPrefersReducedMotion = [&] { auto& frame = *context.document.frame(); @@ -2699,7 +2463,7 @@ index 2be61c75b61bc0ef524f2f32c149921dec7e8de1..86ef8f70cbe268f455353be85a0c1259 case ForcedAccessibilityValue::On: return true; diff --git a/Source/WebCore/dom/DataTransfer.cpp b/Source/WebCore/dom/DataTransfer.cpp -index b14fe9d1ba75d1f6aee2b5fbe60552e0eefd9875..5a22c89dc468511d6ab7862e9025ea16b142ed72 100644 +index f002bd12fd70e17ebc9a2136096b274ff0cf893d..11f39bacb91643c489663bf003aff52177f00020 100644 --- a/Source/WebCore/dom/DataTransfer.cpp +++ b/Source/WebCore/dom/DataTransfer.cpp @@ -510,6 +510,14 @@ Ref DataTransfer::createForDrag(const Document& document) @@ -2718,10 +2482,10 @@ index b14fe9d1ba75d1f6aee2b5fbe60552e0eefd9875..5a22c89dc468511d6ab7862e9025ea16 { auto dataTransfer = adoptRef(*new DataTransfer(StoreMode::ReadWrite, makeUnique(), Type::DragAndDropData)); diff --git a/Source/WebCore/dom/DataTransfer.h b/Source/WebCore/dom/DataTransfer.h -index fb2decfc7dfc6c8a4e5a7dd79c0e23798f6d83b8..ba5f16cf2b443167b8307510f06e985698353319 100644 +index a6d2e7f3152e48028fff00c8090527ba68a9802c..2b99ebd3b1d5fd26f72edd8602e29953c2227a8d 100644 --- a/Source/WebCore/dom/DataTransfer.h +++ b/Source/WebCore/dom/DataTransfer.h -@@ -90,6 +90,9 @@ public: +@@ -91,6 +91,9 @@ public: #if ENABLE(DRAG_SUPPORT) static Ref createForDrag(const Document&); @@ -2891,7 +2655,7 @@ index e56223a885097ff60f8db1eef5cca4aa4ad0511d..60c5ad6b8795b2985249833a8d1143eb #endif diff --git a/Source/WebCore/editing/libwpe/EditorLibWPE.cpp b/Source/WebCore/editing/libwpe/EditorLibWPE.cpp -index 7813532cc52d582c42aebc979a1ecd1137765f08..125b3aa4cb35eff2b117a46c1e126de129b60c04 100644 +index 7813532cc52d582c42aebc979a1ecd1137765f08..c01cbd53ad2430a6ffab9a80fc73e74a8523800a 100644 --- a/Source/WebCore/editing/libwpe/EditorLibWPE.cpp +++ b/Source/WebCore/editing/libwpe/EditorLibWPE.cpp @@ -34,6 +34,7 @@ @@ -2910,15 +2674,15 @@ index 7813532cc52d582c42aebc979a1ecd1137765f08..125b3aa4cb35eff2b117a46c1e126de1 +{ + WebContentReader reader(*document().frame(), context, allowPlainText); + pasteboard.read(reader); -+ chosePlainText = reader.madeFragmentFromPlainText; -+ return WTFMove(reader.fragment); ++ chosePlainText = reader.madeFragmentFromPlainText(); ++ return reader.takeFragment(); +} + } // namespace WebCore #endif // USE(LIBWPE) diff --git a/Source/WebCore/html/FileInputType.cpp b/Source/WebCore/html/FileInputType.cpp -index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef071681230 100644 +index 823c70952937214681611e01421d0f1791aaa79f..84873071ca3226d9372de4e7c5363110fb393ec1 100644 --- a/Source/WebCore/html/FileInputType.cpp +++ b/Source/WebCore/html/FileInputType.cpp @@ -37,6 +37,7 @@ @@ -2929,7 +2693,7 @@ index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef0 #include "LocalFrame.h" #include "LocalizedStrings.h" #include "MIMETypeRegistry.h" -@@ -205,6 +206,11 @@ void FileInputType::handleDOMActivateEvent(Event& event) +@@ -209,6 +210,11 @@ void FileInputType::handleDOMActivateEvent(Event& event) if (input.isDisabledFormControl()) return; @@ -2941,7 +2705,7 @@ index 161a668d55aa0d3de7d7acb9ea752119c06130de..80d9a99b4346cbbbc23d7647fe6ebef0 if (!UserGestureIndicator::processingUserGesture()) return; -@@ -378,7 +384,9 @@ void FileInputType::setFiles(RefPtr&& files, RequestIcon shouldRequest +@@ -387,7 +393,9 @@ void FileInputType::setFiles(RefPtr&& files, RequestIcon shouldRequest pathsChanged = true; else { for (unsigned i = 0; i < length; ++i) { @@ -3459,7 +3223,7 @@ index f032b90453a44b40c03786f660f105d94ccfab65..51aebd842948754785c25e99980594d4 { return context ? instrumentingAgents(*context) : nullptr; diff --git a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp -index 30dee14fcf9001418a453f54a4b0bf85976a48ed..d2567ba1fe2baa21ef47b5561781dbcdaf89032d 100644 +index b4056c49e3b3362c5117213fc660e49cb2517431..29eef538962e724361bd1467f5ff8ad3fc3113b3 100644 --- a/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorDOMAgent.cpp @@ -61,10 +61,14 @@ @@ -4003,10 +3767,10 @@ index dc7e574ee6e9256a1f75ea838d20ca7f5e9190de..5dd4464256e0f5d652fa51fd611286dd // InspectorInstrumentation void willRecalculateStyle(); diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp -index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76bef66caca 100644 +index 1cb48a48ae6ab976e8938d7e03ddc7e3cf58be4c..dbf78f734691588907f047011c164993cda588d5 100644 --- a/Source/WebCore/inspector/agents/InspectorPageAgent.cpp +++ b/Source/WebCore/inspector/agents/InspectorPageAgent.cpp -@@ -32,19 +32,27 @@ +@@ -32,19 +32,26 @@ #include "config.h" #include "InspectorPageAgent.h" @@ -4014,7 +3778,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b +#include "BackForwardController.h" #include "CachedResource.h" #include "CachedResourceLoader.h" -+#include "CompositionHighlight.h" #include "Cookie.h" #include "CookieJar.h" +#include "CustomHeaderFields.h" @@ -4034,7 +3797,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b #include "HTMLNames.h" #include "ImageBuffer.h" #include "InspectorClient.h" -@@ -55,10 +63,13 @@ +@@ -55,10 +62,13 @@ #include "LocalFrame.h" #include "LocalFrameView.h" #include "MIMETypeRegistry.h" @@ -4049,7 +3812,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b #include "ScriptController.h" #include "ScriptSourceCode.h" #include "SecurityOrigin.h" -@@ -66,11 +77,18 @@ +@@ -66,11 +76,18 @@ #include "StyleScope.h" #include "Theme.h" #include @@ -4068,7 +3831,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b #include #include #include -@@ -83,11 +101,15 @@ +@@ -83,11 +100,15 @@ #include "LegacyWebArchive.h" #endif @@ -4085,7 +3848,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b static bool decodeBuffer(const uint8_t* buffer, unsigned size, const String& textEncodingName, String* result) { if (buffer) { -@@ -334,6 +356,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien +@@ -334,6 +355,7 @@ InspectorPageAgent::InspectorPageAgent(PageAgentContext& context, InspectorClien , m_frontendDispatcher(makeUnique(context.frontendRouter)) , m_backendDispatcher(Inspector::PageBackendDispatcher::create(context.backendDispatcher, this)) , m_inspectedPage(context.inspectedPage) @@ -4093,7 +3856,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b , m_client(client) , m_overlay(overlay) { -@@ -363,12 +386,20 @@ Protocol::ErrorStringOr InspectorPageAgent::enable() +@@ -363,12 +385,20 @@ Protocol::ErrorStringOr InspectorPageAgent::enable() defaultUserPreferencesDidChange(); @@ -4114,7 +3877,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b setShowPaintRects(false); #if !PLATFORM(IOS_FAMILY) -@@ -420,6 +451,22 @@ Protocol::ErrorStringOr InspectorPageAgent::reload(std::optional&& i +@@ -420,6 +450,22 @@ Protocol::ErrorStringOr InspectorPageAgent::reload(std::optional&& i return { }; } @@ -4137,7 +3900,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b Protocol::ErrorStringOr InspectorPageAgent::navigate(const String& url) { auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame()); -@@ -443,6 +490,13 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideUserAgent(const String +@@ -443,6 +489,13 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideUserAgent(const String return { }; } @@ -4151,7 +3914,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page::Setting setting, std::optional&& value) { auto& inspectedPageSettings = m_inspectedPage.settings(); -@@ -456,6 +510,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page +@@ -456,6 +509,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page inspectedPageSettings.setAuthorAndUserStylesEnabledInspectorOverride(value); return { }; @@ -4164,7 +3927,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b case Protocol::Page::Setting::ICECandidateFilteringEnabled: inspectedPageSettings.setICECandidateFilteringEnabledInspectorOverride(value); return { }; -@@ -481,6 +541,38 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page +@@ -481,6 +540,38 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page inspectedPageSettings.setNeedsSiteSpecificQuirksInspectorOverride(value); return { }; @@ -4203,7 +3966,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b case Protocol::Page::Setting::ScriptEnabled: inspectedPageSettings.setScriptEnabledInspectorOverride(value); return { }; -@@ -493,6 +585,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page +@@ -493,6 +584,12 @@ Protocol::ErrorStringOr InspectorPageAgent::overrideSetting(Protocol::Page inspectedPageSettings.setShowRepaintCounterInspectorOverride(value); return { }; @@ -4216,23 +3979,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b case Protocol::Page::Setting::WebSecurityEnabled: inspectedPageSettings.setWebSecurityEnabledInspectorOverride(value); return { }; -@@ -785,9 +883,13 @@ Protocol::ErrorStringOr> InspectorP - return { { content, base64Encoded } }; - } - --Protocol::ErrorStringOr InspectorPageAgent::setBootstrapScript(const String& source) -+Protocol::ErrorStringOr InspectorPageAgent::setBootstrapScript(const String& source, const String& worldName) - { -- m_bootstrapScript = source; -+ String key = worldName.isNull() ? emptyString() : worldName; -+ if (source.isEmpty()) -+ m_worldNameToBootstrapScript.remove(key); -+ else -+ m_worldNameToBootstrapScript.set(key, source); - - return { }; - } -@@ -893,15 +995,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show) +@@ -893,15 +990,16 @@ Protocol::ErrorStringOr InspectorPageAgent::setShowPaintRects(bool show) return { }; } @@ -4254,7 +4001,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b } void InspectorPageAgent::frameNavigated(LocalFrame& frame) -@@ -909,13 +1012,25 @@ void InspectorPageAgent::frameNavigated(LocalFrame& frame) +@@ -909,13 +1007,25 @@ void InspectorPageAgent::frameNavigated(LocalFrame& frame) m_frontendDispatcher->frameNavigated(buildObjectForFrame(&frame)); } @@ -4283,7 +4030,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b } Frame* InspectorPageAgent::frameForId(const Protocol::Network::FrameId& frameId) -@@ -927,20 +1042,17 @@ String InspectorPageAgent::frameId(Frame* frame) +@@ -927,20 +1037,17 @@ String InspectorPageAgent::frameId(Frame* frame) { if (!frame) return emptyString(); @@ -4309,7 +4056,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b } LocalFrame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, const Protocol::Network::FrameId& frameId) -@@ -951,11 +1063,6 @@ LocalFrame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, +@@ -951,11 +1058,6 @@ LocalFrame* InspectorPageAgent::assertFrame(Protocol::ErrorString& errorString, return frame; } @@ -4321,7 +4068,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b void InspectorPageAgent::frameStartedLoading(LocalFrame& frame) { m_frontendDispatcher->frameStartedLoading(frameId(&frame)); -@@ -966,9 +1073,9 @@ void InspectorPageAgent::frameStoppedLoading(LocalFrame& frame) +@@ -966,9 +1068,9 @@ void InspectorPageAgent::frameStoppedLoading(LocalFrame& frame) m_frontendDispatcher->frameStoppedLoading(frameId(&frame)); } @@ -4333,7 +4080,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b } void InspectorPageAgent::frameClearedScheduledNavigation(Frame& frame) -@@ -1023,6 +1130,12 @@ void InspectorPageAgent::defaultUserPreferencesDidChange() +@@ -1015,6 +1117,12 @@ void InspectorPageAgent::defaultUserPreferencesDidChange() m_frontendDispatcher->defaultUserPreferencesDidChange(WTFMove(defaultUserPreferences)); } @@ -4346,36 +4093,17 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b #if ENABLE(DARK_MODE_CSS) || HAVE(OS_DARK_MODE_SUPPORT) void InspectorPageAgent::defaultAppearanceDidChange() { -@@ -1032,13 +1145,25 @@ void InspectorPageAgent::defaultAppearanceDidChange() - - void InspectorPageAgent::didClearWindowObjectInWorld(LocalFrame& frame, DOMWrapperWorld& world) - { -- if (&world != &mainThreadNormalWorld()) -+ if (m_worldNameToBootstrapScript.isEmpty()) +@@ -1028,6 +1136,9 @@ void InspectorPageAgent::didClearWindowObjectInWorld(LocalFrame& frame, DOMWrapp return; -- if (m_bootstrapScript.isEmpty()) -+ if (world.name().isEmpty() && &world != &mainThreadNormalWorld()) + if (m_bootstrapScript.isEmpty()) + return; + -+ String worldName = world.name(); -+ // Null string cannot be used as a key. -+ if (worldName.isNull()) -+ worldName = emptyString(); -+ -+ if (!m_worldNameToBootstrapScript.contains(worldName)) - return; - -- frame.script().evaluateIgnoringException(ScriptSourceCode(m_bootstrapScript, JSC::SourceTaintedOrigin::Untainted, URL { "web-inspector://bootstrap.js"_str })); + if (m_ignoreDidClearWindowObject) -+ return; -+ -+ String bootstrapScript = m_worldNameToBootstrapScript.get(worldName); -+ frame.script().evaluateInWorldIgnoringException(ScriptSourceCode(bootstrapScript, JSC::SourceTaintedOrigin::Untainted, URL { "web-inspector://bootstrap.js"_str }), world); - } + return; - void InspectorPageAgent::didPaint(RenderObject& renderer, const LayoutRect& rect) -@@ -1086,6 +1211,51 @@ void InspectorPageAgent::didRecalculateStyle() + frame.script().evaluateIgnoringException(ScriptSourceCode(m_bootstrapScript, JSC::SourceTaintedOrigin::Untainted, URL { "web-inspector://bootstrap.js"_str })); +@@ -1078,6 +1189,51 @@ void InspectorPageAgent::didRecalculateStyle() m_overlay->update(); } @@ -4427,7 +4155,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b Ref InspectorPageAgent::buildObjectForFrame(LocalFrame* frame) { ASSERT_ARG(frame, frame); -@@ -1183,6 +1353,12 @@ void InspectorPageAgent::applyUserAgentOverride(String& userAgent) +@@ -1175,6 +1331,12 @@ void InspectorPageAgent::applyUserAgentOverride(String& userAgent) userAgent = m_userAgentOverride; } @@ -4440,7 +4168,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b void InspectorPageAgent::applyEmulatedMedia(AtomString& media) { if (!m_emulatedMedia.isEmpty()) -@@ -1210,11 +1386,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM:: +@@ -1202,11 +1364,13 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotNode(Protocol::DOM:: return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes); } @@ -4455,7 +4183,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b IntRect rectangle(x, y, width, height); auto* localMainFrame = dynamicDowncast(m_inspectedPage.mainFrame()); -@@ -1228,6 +1406,43 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i +@@ -1220,6 +1384,43 @@ Protocol::ErrorStringOr InspectorPageAgent::snapshotRect(int x, int y, i return snapshot->toDataURL("image/png"_s, std::nullopt, PreserveResolution::Yes); } @@ -4499,7 +4227,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b #if ENABLE(WEB_ARCHIVE) && USE(CF) Protocol::ErrorStringOr InspectorPageAgent::archive() { -@@ -1244,7 +1459,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive() +@@ -1236,7 +1437,6 @@ Protocol::ErrorStringOr InspectorPageAgent::archive() } #endif @@ -4507,14 +4235,14 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::optional&& width, std::optional&& height) { if (width.has_value() != height.has_value()) -@@ -1262,6 +1476,626 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt +@@ -1254,6 +1454,511 @@ Protocol::ErrorStringOr InspectorPageAgent::setScreenSizeOverride(std::opt localMainFrame->setOverrideScreenSize(FloatSize(width.value_or(0), height.value_or(0))); return { }; } + +Protocol::ErrorStringOr InspectorPageAgent::insertText(const String& text) +{ -+ UserGestureIndicator indicator { ProcessingUserGesture }; ++ UserGestureIndicator indicator { IsProcessingUserGesture::Yes }; + LocalFrame& frame = m_inspectedPage.focusController().focusedOrMainFrame(); + + if (frame.editor().hasComposition()) { @@ -4526,24 +4254,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return { }; +} + -+Protocol::ErrorStringOr InspectorPageAgent::setComposition(const String& text, int selectionStart, int selectionLength, std::optional&& replacementStart, std::optional&& replacementLength) -+{ -+ LocalFrame& frame = m_inspectedPage.focusController().focusedOrMainFrame(); -+ -+ UserGestureIndicator indicator { ProcessingUserGesture }; -+ -+ if (!frame.selection().selection().isContentEditable()) -+ return { }; -+ if (replacementStart) { -+ WebCore::CharacterRange range { static_cast(*replacementStart), replacementLength ? static_cast(*replacementLength) : 0 }; -+ auto* element = frame.selection().rootEditableElementOrDocumentElement(); -+ if (element) -+ frame.selection().setSelection(VisibleSelection(resolveCharacterRange(makeRangeSelectingNodeContents(*element), range))); -+ } -+ frame.editor().setComposition(text, { }, { }, { }, static_cast(selectionStart), selectionStart + selectionLength); -+ return { }; -+} -+ +static String roleFromObject(RefPtr axObject) +{ + String computedRoleString = axObject->computedRoleString(); @@ -4551,8 +4261,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return computedRoleString; + AccessibilityRole role = axObject->roleValue(); + switch(role) { -+ case AccessibilityRole::Annotation: -+ return "Annotation"_s; + case AccessibilityRole::Application: + return "Application"_s; + case AccessibilityRole::ApplicationAlert: @@ -4577,10 +4285,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Audio"_s; + case AccessibilityRole::Blockquote: + return "Blockquote"_s; -+ case AccessibilityRole::Browser: -+ return "Browser"_s; -+ case AccessibilityRole::BusyIndicator: -+ return "BusyIndicator"_s; + case AccessibilityRole::Button: + return "Button"_s; + case AccessibilityRole::Canvas: @@ -4589,7 +4293,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Caption"_s; + case AccessibilityRole::Cell: + return "Cell"_s; -+ case AccessibilityRole::CheckBox: ++ case AccessibilityRole::Checkbox: + return "CheckBox"_s; + case AccessibilityRole::Code: + return "Code"_s; @@ -4615,8 +4319,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Details"_s; + case AccessibilityRole::Directory: + return "Directory"_s; -+ case AccessibilityRole::DisclosureTriangle: -+ return "DisclosureTriangle"_s; + case AccessibilityRole::Document: + return "Document"_s; + case AccessibilityRole::DocumentArticle: @@ -4625,10 +4327,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "DocumentMath"_s; + case AccessibilityRole::DocumentNote: + return "DocumentNote"_s; -+ case AccessibilityRole::Drawer: -+ return "Drawer"_s; -+ case AccessibilityRole::EditableText: -+ return "EditableText"_s; + case AccessibilityRole::Feed: + return "Feed"_s; + case AccessibilityRole::Figure: @@ -4653,12 +4351,8 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "GridCell"_s; + case AccessibilityRole::Group: + return "Group"_s; -+ case AccessibilityRole::GrowArea: -+ return "GrowArea"_s; + case AccessibilityRole::Heading: + return "Heading"_s; -+ case AccessibilityRole::HelpTag: -+ return "HelpTag"_s; + case AccessibilityRole::HorizontalRule: + return "HorizontalRule"_s; + case AccessibilityRole::Ignored: @@ -4711,8 +4405,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Mark"_s; + case AccessibilityRole::MathElement: + return "MathElement"_s; -+ case AccessibilityRole::Matte: -+ return "Matte"_s; + case AccessibilityRole::Menu: + return "Menu"_s; + case AccessibilityRole::MenuBar: @@ -4733,8 +4425,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Meter"_s; + case AccessibilityRole::Model: + return "Model"_s; -+ case AccessibilityRole::Outline: -+ return "Outline"_s; + case AccessibilityRole::Paragraph: + return "Paragraph"_s; + case AccessibilityRole::PopUpButton: @@ -4765,18 +4455,12 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "RubyRun"_s; + case AccessibilityRole::RubyText: + return "RubyText"_s; -+ case AccessibilityRole::Ruler: -+ return "Ruler"_s; -+ case AccessibilityRole::RulerMarker: -+ return "RulerMarker"_s; + case AccessibilityRole::ScrollArea: + return "ScrollArea"_s; + case AccessibilityRole::ScrollBar: + return "ScrollBar"_s; + case AccessibilityRole::SearchField: + return "SearchField"_s; -+ case AccessibilityRole::Sheet: -+ return "Sheet"_s; + case AccessibilityRole::Slider: + return "Slider"_s; + case AccessibilityRole::SliderThumb: @@ -4785,8 +4469,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "SpinButton"_s; + case AccessibilityRole::SpinButtonPart: + return "SpinButtonPart"_s; -+ case AccessibilityRole::SplitGroup: -+ return "SplitGroup"_s; + case AccessibilityRole::Splitter: + return "Splitter"_s; + case AccessibilityRole::StaticText: @@ -4801,8 +4483,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Superscript"_s; + case AccessibilityRole::Switch: + return "Switch"_s; -+ case AccessibilityRole::SystemWide: -+ return "SystemWide"_s; + case AccessibilityRole::SVGRoot: + return "SVGRoot"_s; + case AccessibilityRole::SVGText: @@ -4847,8 +4527,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "Unknown"_s; + case AccessibilityRole::UserInterfaceTooltip: + return "UserInterfaceTooltip"_s; -+ case AccessibilityRole::ValueIndicator: -+ return "ValueIndicator"_s; + case AccessibilityRole::Video: + return "Video"_s; + case AccessibilityRole::WebApplication: @@ -4857,8 +4535,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b + return "WebArea"_s; + case AccessibilityRole::WebCoreLink: + return "WebCoreLink"_s; -+ case AccessibilityRole::Window: -+ return "Window"_s; + }; + return "Unknown"_s; +} @@ -5061,69 +4737,6 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b #endif +} + -+static std::optional parseInsets(RefPtr&& insets) -+{ -+ std::optional top = insets->getDouble("top"_s); -+ std::optional right = insets->getDouble("right"_s); -+ std::optional bottom = insets->getDouble("bottom"_s); -+ std::optional left = insets->getDouble("left"_s); -+ if (top && right && bottom && left) -+ return FloatBoxExtent(static_cast(*top), static_cast(*right), static_cast(*bottom), static_cast(*left)); -+ return std::optional(); -+} -+ -+static std::optional parseRect(RefPtr&& insets) -+{ -+ std::optional x = insets->getDouble("x"_s); -+ std::optional y = insets->getDouble("y"_s); -+ std::optional width = insets->getDouble("width"_s); -+ std::optional height = insets->getDouble("height"_s); -+ if (x && y && width && height) -+ return FloatRect(static_cast(*x), static_cast(*y), static_cast(*width), static_cast(*height)); -+ return std::optional(); -+} -+ -+Protocol::ErrorStringOr InspectorPageAgent::setVisibleContentRects(RefPtr&& unobscuredContentRect, RefPtr&& contentInsets, RefPtr&& obscuredInsets, RefPtr&& unobscuredInsets) -+{ -+ auto* localFrame = dynamicDowncast(m_inspectedPage.mainFrame()); -+ LocalFrameView* view = localFrame ? localFrame->view() : nullptr; -+ if (!view) -+ return makeUnexpected("Internal error: No frame view to set content rects for"_s); -+ -+ if (unobscuredContentRect) { -+ std::optional ucr = parseRect(WTFMove(unobscuredContentRect)); -+ if (!ucr) -+ return makeUnexpected("Invalid unobscured content rect"_s); -+ -+ view->setUnobscuredContentSize(FloatSize(ucr->width(), ucr->height())); -+ } -+ -+ if (contentInsets) { -+ std::optional ci = parseInsets(WTFMove(contentInsets)); -+ if (!ci) -+ return makeUnexpected("Invalid content insets"_s); -+ -+ m_inspectedPage.setContentInsets(*ci); -+ } -+ -+ if (obscuredInsets) { -+ std::optional oi = parseInsets(WTFMove(obscuredInsets)); -+ if (!oi) -+ return makeUnexpected("Invalid obscured insets"_s); -+ -+ m_inspectedPage.setObscuredInsets(*oi); -+ } -+ -+ if (unobscuredInsets) { -+ std::optional ui = parseInsets(WTFMove(unobscuredInsets)); -+ if (!ui) -+ return makeUnexpected("Invalid unobscured insets"_s); -+ -+ m_inspectedPage.setUnobscuredSafeAreaInsets(*ui); -+ } -+ return {}; -+} -+ +Protocol::ErrorStringOr InspectorPageAgent::updateScrollingState() +{ + auto* scrollingCoordinator = m_inspectedPage.scrollingCoordinator(); @@ -5135,7 +4748,7 @@ index cbf8e17e8faec3b6687483006d0a85b7341185a7..f734ba6ffed5cacc892ae027296cf76b } // namespace WebCore diff --git a/Source/WebCore/inspector/agents/InspectorPageAgent.h b/Source/WebCore/inspector/agents/InspectorPageAgent.h -index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3ef8fce289 100644 +index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..83d793622a71b441afe5962bd7c94ad85a12263f 100644 --- a/Source/WebCore/inspector/agents/InspectorPageAgent.h +++ b/Source/WebCore/inspector/agents/InspectorPageAgent.h @@ -32,8 +32,10 @@ @@ -5186,16 +4799,7 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3e Inspector::Protocol::ErrorStringOr overrideSetting(Inspector::Protocol::Page::Setting, std::optional&& value); Inspector::Protocol::ErrorStringOr overrideUserPreference(Inspector::Protocol::Page::UserPreferenceName, std::optional&&); Inspector::Protocol::ErrorStringOr>> getCookies(); -@@ -107,7 +118,7 @@ public: - Inspector::Protocol::ErrorStringOr deleteCookie(const String& cookieName, const String& url); - Inspector::Protocol::ErrorStringOr> getResourceTree(); - Inspector::Protocol::ErrorStringOr> getResourceContent(const Inspector::Protocol::Network::FrameId&, const String& url); -- Inspector::Protocol::ErrorStringOr setBootstrapScript(const String& source); -+ Inspector::Protocol::ErrorStringOr setBootstrapScript(const String& source, const String& worldName); - Inspector::Protocol::ErrorStringOr>> searchInResource(const Inspector::Protocol::Network::FrameId&, const String& url, const String& query, std::optional&& caseSensitive, std::optional&& isRegex, const Inspector::Protocol::Network::RequestId&); - Inspector::Protocol::ErrorStringOr>> searchInResources(const String&, std::optional&& caseSensitive, std::optional&& isRegex); - #if !PLATFORM(IOS_FAMILY) -@@ -115,45 +126,68 @@ public: +@@ -115,45 +126,66 @@ public: #endif Inspector::Protocol::ErrorStringOr setShowPaintRects(bool); Inspector::Protocol::ErrorStringOr setEmulatedMedia(const String&); @@ -5213,7 +4817,6 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3e -#endif + + Inspector::Protocol::ErrorStringOr insertText(const String& text); -+ Inspector::Protocol::ErrorStringOr setComposition(const String& text, int selectionStart, int selectionLength, std::optional&& replacementStart, std::optional&& replacementLength); + Inspector::Protocol::ErrorStringOr> accessibilitySnapshot(const String& objectId); + Inspector::Protocol::ErrorStringOr setInterceptFileChooserDialog(bool enabled); + Inspector::Protocol::ErrorStringOr setDefaultBackgroundColorOverride(RefPtr&&); @@ -5221,7 +4824,6 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3e + Inspector::Protocol::ErrorStringOr setBypassCSP(bool); + Inspector::Protocol::ErrorStringOr crash(); + Inspector::Protocol::ErrorStringOr setOrientationOverride(std::optional&& angle); -+ Inspector::Protocol::ErrorStringOr setVisibleContentRects(RefPtr&& unobscuredContentRect, RefPtr&& contentInsets, RefPtr&& obscuredInsets, RefPtr&& unobscuredInsets); + Inspector::Protocol::ErrorStringOr updateScrollingState(); // InspectorInstrumentation @@ -5271,7 +4873,7 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3e static bool mainResourceContent(LocalFrame*, bool withBase64Encode, String* result); static bool dataContent(const uint8_t* data, unsigned size, const String& textEncodingName, bool withBase64Encode, String* result); -@@ -169,17 +203,22 @@ private: +@@ -169,17 +201,21 @@ private: RefPtr m_backendDispatcher; Page& m_inspectedPage; @@ -5282,7 +4884,6 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3e - WeakHashMap m_frameToIdentifier; MemoryCompactRobinHoodHashMap> m_identifierToFrame; - HashMap m_loaderToIdentifier; -+ HashMap m_worldNameToBootstrapScript; String m_userAgentOverride; + String m_platformOverride; AtomString m_emulatedMedia; @@ -5296,58 +4897,8 @@ index f270cb7c3bcc1b5d7d646d9c6e6bda7063cf82e3..e85f09290c40f3c9a203e1ffd69dea3e }; } // namespace WebCore -diff --git a/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp b/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp -index bbed7e5e9aeab664743b7751ae6c4f1367cc6deb..88153c5a5e493e086245f0a48988ac7a2d6a43b8 100644 ---- a/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp -+++ b/Source/WebCore/inspector/agents/InspectorWorkerAgent.cpp -@@ -27,7 +27,9 @@ - #include "InspectorWorkerAgent.h" - - #include "Document.h" -+#include "FrameDestructionObserverInlines.h" - #include "InstrumentingAgents.h" -+#include "InspectorPageAgent.h" - #include "Page.h" - #include - #include -@@ -168,7 +170,11 @@ void InspectorWorkerAgent::connectToWorkerInspectorProxy(WorkerInspectorProxy& p - - m_connectedProxies.set(proxy.identifier(), proxy); - -- m_frontendDispatcher->workerCreated(proxy.identifier(), proxy.url().string(), proxy.name()); -+ ASSERT(is(proxy.scriptExecutionContext())); -+ Document& document = downcast(*proxy.scriptExecutionContext()); -+ auto* pageAgent = m_instrumentingAgents.enabledPageAgent(); -+ m_frontendDispatcher->workerCreated(proxy.identifier(), proxy.url().string(), proxy.name(), -+ pageAgent ? pageAgent->frameId(document.frame()) : emptyString()); - } - - void InspectorWorkerAgent::disconnectFromWorkerInspectorProxy(WorkerInspectorProxy& proxy) -diff --git a/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp b/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp -index 242aea89da38d22a2c2b314f337e6aa4f3becdb8..51f978caae1a6a76fb1833fbfef76837a79406ea 100644 ---- a/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp -+++ b/Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp -@@ -37,6 +37,7 @@ - #include "Document.h" - #include "InspectorPageAgent.h" - #include "InstrumentingAgents.h" -+#include "JSDOMWindowBase.h" - #include "JSExecState.h" - #include "JSLocalDOMWindowCustom.h" - #include "LocalFrame.h" -@@ -74,7 +75,9 @@ Protocol::ErrorStringOr, std::op - if (injectedScript.hasNoValue()) - return makeUnexpected("Missing injected script for given callFrameId"_s); - -- UserGestureEmulationScope userGestureScope(m_inspectedPage, emulateUserGesture.value_or(false), dynamicDowncast(executionContext(injectedScript.globalObject()))); -+ JSC::JSGlobalObject* globalObject = injectedScript.globalObject(); -+ Document* document = globalObject ? activeDOMWindow(*globalObject).document() : nullptr; -+ UserGestureEmulationScope userGestureScope(m_inspectedPage, emulateUserGesture.value_or(false), document); - return WebDebuggerAgent::evaluateOnCallFrame(injectedScript, callFrameId, expression, objectGroup, WTFMove(includeCommandLineAPI), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(saveResult), WTFMove(emulateUserGesture)); - } - diff --git a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp -index 77b093ba149993094dc059d6cf8348095500bcb7..fe0a9a641dfb497dcd95aa4c9fc962784157a964 100644 +index 8452f240f0a95a8b8e8b94876cc1e4486fd1b756..e1595905b04fb6e4525afada87d203b71eb0bb54 100644 --- a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp +++ b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp @@ -34,6 +34,7 @@ @@ -5421,7 +4972,7 @@ index 77b093ba149993094dc059d6cf8348095500bcb7..fe0a9a641dfb497dcd95aa4c9fc96278 + if (!m_bindingNames.add(name).isNewEntry) + return {}; + -+ m_inspectedPage.forEachFrame([&](LocalFrame& frame) { ++ m_inspectedPage.forEachLocalFrame([&](LocalFrame& frame) { + if (!frame.script().canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript)) + return; + @@ -5470,46 +5021,15 @@ index 77b093ba149993094dc059d6cf8348095500bcb7..fe0a9a641dfb497dcd95aa4c9fc96278 @@ -139,9 +220,6 @@ void PageRuntimeAgent::reportExecutionContextCreation() return; - m_inspectedPage.forEachFrame([&](LocalFrame& frame) { + m_inspectedPage.forEachLocalFrame([&](LocalFrame& frame) { - if (!frame.script().canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript)) - return; - auto frameId = pageAgent->frameId(&frame); // Always send the main world first. -@@ -200,18 +278,24 @@ Protocol::ErrorStringOr, std::op - if (injectedScript.hasNoValue()) - return makeUnexpected(errorString); - -- UserGestureEmulationScope userGestureScope(m_inspectedPage, emulateUserGesture.value_or(false), dynamicDowncast(executionContext(injectedScript.globalObject()))); -+ JSC::JSGlobalObject* globalObject = injectedScript.globalObject(); -+ Document* document = globalObject ? activeDOMWindow(*globalObject).document() : nullptr; -+ UserGestureEmulationScope userGestureScope(m_inspectedPage, emulateUserGesture.value_or(false), document); - return InspectorRuntimeAgent::evaluate(injectedScript, expression, objectGroup, WTFMove(includeCommandLineAPI), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(saveResult), WTFMove(emulateUserGesture)); - } - --Protocol::ErrorStringOr, std::optional /* wasThrown */>> PageRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObjectId& objectId, const String& expression, RefPtr&& optionalArguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture) -+void PageRuntimeAgent::callFunctionOn(const Protocol::Runtime::RemoteObjectId& objectId, const String& expression, RefPtr&& optionalArguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&& callback) - { - auto injectedScript = injectedScriptManager().injectedScriptForObjectId(objectId); -- if (injectedScript.hasNoValue()) -- return makeUnexpected("Missing injected script for given objectId"_s); -+ if (injectedScript.hasNoValue()) { -+ callback->sendFailure("Missing injected script for given objectId"_s); -+ return; -+ } - -- UserGestureEmulationScope userGestureScope(m_inspectedPage, emulateUserGesture.value_or(false), dynamicDowncast(executionContext(injectedScript.globalObject()))); -- return InspectorRuntimeAgent::callFunctionOn(injectedScript, objectId, expression, WTFMove(optionalArguments), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(emulateUserGesture)); -+ JSC::JSGlobalObject* globalObject = injectedScript.globalObject(); -+ Document* document = globalObject ? activeDOMWindow(*globalObject).document() : nullptr; -+ UserGestureEmulationScope userGestureScope(m_inspectedPage, emulateUserGesture.value_or(false), document); -+ return InspectorRuntimeAgent::callFunctionOn(objectId, expression, WTFMove(optionalArguments), WTFMove(doNotPauseOnExceptionsAndMuteConsole), WTFMove(returnByValue), WTFMove(generatePreview), WTFMove(emulateUserGesture), WTFMove(awaitPromise), WTFMove(callback)); - } - - } // namespace WebCore diff --git a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.h b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.h -index fe3de3ee1ff4b61f66cc92bc0b9c2136c05769a3..3206e3ae64611c02abcfd6cc2e2a7b6f939eb560 100644 +index 9501fc840e35f3badc701e7622555dba394cae9b..1391c73d9b3ba250ad3a831bfe7c92c98de0c93c 100644 --- a/Source/WebCore/inspector/agents/page/PageRuntimeAgent.h +++ b/Source/WebCore/inspector/agents/page/PageRuntimeAgent.h @@ -37,6 +37,7 @@ @@ -5520,19 +5040,11 @@ index fe3de3ee1ff4b61f66cc92bc0b9c2136c05769a3..3206e3ae64611c02abcfd6cc2e2a7b6f } namespace WebCore { -@@ -54,28 +55,31 @@ public: - ~PageRuntimeAgent(); - - // RuntimeBackendDispatcherHandler -- Inspector::Protocol::ErrorStringOr enable(); -- Inspector::Protocol::ErrorStringOr disable(); -- Inspector::Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture); -- Inspector::Protocol::ErrorStringOr, std::optional /* wasThrown */>> callFunctionOn(const Inspector::Protocol::Runtime::RemoteObjectId&, const String& expression, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture); -+ Inspector::Protocol::ErrorStringOr enable() override; -+ Inspector::Protocol::ErrorStringOr disable() override; -+ Inspector::Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture) override; -+ void callFunctionOn(const Inspector::Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&) override; -+ Inspector::Protocol::ErrorStringOr addBinding(const String& name) final; +@@ -58,10 +59,13 @@ public: + Inspector::Protocol::ErrorStringOr disable(); + Inspector::Protocol::ErrorStringOr, std::optional /* wasThrown */, std::optional /* savedResultIndex */>> evaluate(const String& expression, const String& objectGroup, std::optional&& includeCommandLineAPI, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&&, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& saveResult, std::optional&& emulateUserGesture); + void callFunctionOn(const Inspector::Protocol::Runtime::RemoteObjectId&, const String& functionDeclaration, RefPtr&& arguments, std::optional&& doNotPauseOnExceptionsAndMuteConsole, std::optional&& returnByValue, std::optional&& generatePreview, std::optional&& emulateUserGesture, std::optional&& awaitPromise, Ref&&); ++ Inspector::Protocol::ErrorStringOr addBinding(const String& name); // InspectorInstrumentation void frameNavigated(LocalFrame&); @@ -5541,18 +5053,8 @@ index fe3de3ee1ff4b61f66cc92bc0b9c2136c05769a3..3206e3ae64611c02abcfd6cc2e2a7b6f + void bindingCalled(JSC::JSGlobalObject* globalObject, const String& name, const String& arg); private: -- Inspector::InjectedScript injectedScriptForEval(Inspector::Protocol::ErrorString&, std::optional&&); -- void muteConsole(); -- void unmuteConsole(); -+ Inspector::InjectedScript injectedScriptForEval(Inspector::Protocol::ErrorString&, std::optional&&) override; -+ void muteConsole() override; -+ void unmuteConsole() override; - void reportExecutionContextCreation(); - void notifyContextCreated(const Inspector::Protocol::Network::FrameId&, JSC::JSGlobalObject*, const DOMWrapperWorld&, SecurityOrigin* = nullptr); - - std::unique_ptr m_frontendDispatcher; - RefPtr m_backendDispatcher; -- + Inspector::InjectedScript injectedScriptForEval(Inspector::Protocol::ErrorString&, std::optional&&); +@@ -76,6 +80,7 @@ private: InstrumentingAgents& m_instrumentingAgents; Page& m_inspectedPage; @@ -5583,10 +5085,10 @@ index 7efc7c39d4ea689063c3371c9d9f5d25e433b3ae..c18f0b38ef9a22b594b60287d6c205b1 protected: static SameSiteInfo sameSiteInfo(const Document&, IsForDOMCookieAccess = IsForDOMCookieAccess::No); diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp -index c4cb8010b9f631f8d03f2251726c31b8d7eec2e5..fef684a8c4b63de4415db9ce156ee62acaefb303 100644 +index 4e0baece02ae7ec1c6860d94678b840824d8409f..e6cfe18c89c3efbcec174e64a594d9cc38534cef 100644 --- a/Source/WebCore/loader/DocumentLoader.cpp +++ b/Source/WebCore/loader/DocumentLoader.cpp -@@ -767,8 +767,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc +@@ -764,8 +764,10 @@ void DocumentLoader::willSendRequest(ResourceRequest&& newRequest, const Resourc if (!didReceiveRedirectResponse) return completionHandler(WTFMove(newRequest)); @@ -5597,7 +5099,7 @@ index c4cb8010b9f631f8d03f2251726c31b8d7eec2e5..fef684a8c4b63de4415db9ce156ee62a switch (navigationPolicyDecision) { case NavigationPolicyDecision::IgnoreLoad: case NavigationPolicyDecision::LoadWillContinueInAnotherProcess: -@@ -1551,8 +1553,6 @@ void DocumentLoader::detachFromFrame() +@@ -1546,8 +1548,6 @@ void DocumentLoader::detachFromFrame(LoadWillContinueInAnotherProcess) if (!m_frame) return; @@ -5607,12 +5109,12 @@ index c4cb8010b9f631f8d03f2251726c31b8d7eec2e5..fef684a8c4b63de4415db9ce156ee62a } diff --git a/Source/WebCore/loader/DocumentLoader.h b/Source/WebCore/loader/DocumentLoader.h -index 4c9176db0a582a075fb3d68c921dcd960c271e86..3363380982c54cea74bd853e2682068b5e8ea95a 100644 +index 68970ca45127aa96a96a1bb224a6a8b2f34e5724..6c3187aab3ec6cf6cdf21d8f3562783f2ae7ffdd 100644 --- a/Source/WebCore/loader/DocumentLoader.h +++ b/Source/WebCore/loader/DocumentLoader.h -@@ -187,9 +187,13 @@ public: +@@ -188,9 +188,13 @@ public: - WEBCORE_EXPORT virtual void detachFromFrame(); + WEBCORE_EXPORT virtual void detachFromFrame(LoadWillContinueInAnotherProcess); + virtual void replacedByFragmentNavigation(LocalFrame&) { } + @@ -5625,44 +5127,44 @@ index 4c9176db0a582a075fb3d68c921dcd960c271e86..3363380982c54cea74bd853e2682068b DocumentWriter& writer() const { return m_writer; } diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp -index 9328921ba26573b39baad48e2aa711a6319d2a67..380ffe9398057e8d0de5c700d8af6264a7f6a1df 100644 +index 7bfcb7b610c7b61250bb342ad654e634976c0cda..cc2d93e2e3cea8964eb4e4572b926d58f9f7a10c 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp -@@ -1210,6 +1210,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat +@@ -1238,6 +1238,7 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr stat } m_client->dispatchDidNavigateWithinPage(); + InspectorInstrumentation::didNavigateWithinPage(m_frame); - m_frame.document()->statePopped(stateObject ? stateObject.releaseNonNull() : SerializedScriptValue::nullValue()); + document->statePopped(stateObject ? stateObject.releaseNonNull() : SerializedScriptValue::nullValue()); m_client->dispatchDidPopStateWithinPage(); -@@ -1666,6 +1667,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1689,6 +1690,8 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t const String& httpMethod = loader->request().httpMethod(); if (shouldPerformFragmentNavigation(isFormSubmission, httpMethod, policyChecker().loadType(), newURL)) { + loader->replacedByFragmentNavigation(m_frame); + - RefPtr oldDocumentLoader = m_documentLoader; - NavigationAction action { *m_frame.document(), loader->request(), InitiatedByMainFrame::Unknown, policyChecker().loadType(), isFormSubmission }; + RefPtr oldDocumentLoader = m_documentLoader; + NavigationAction action { frame->protectedDocument().releaseNonNull(), loader->request(), InitiatedByMainFrame::Unknown, policyChecker().loadType(), isFormSubmission }; action.setIsRequestFromClientOrUserInput(loader->isRequestFromClientOrUserInput()); -@@ -1698,7 +1701,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t +@@ -1721,7 +1724,9 @@ void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType t } RELEASE_ASSERT(!isBackForwardLoadType(policyChecker().loadType()) || history().provisionalItem()); + InspectorInstrumentation::willCheckNavigationPolicy(m_frame); - policyChecker().checkNavigationPolicy(ResourceRequest(loader->request()), ResourceResponse { } /* redirectResponse */, loader, WTFMove(formState), [this, protectedFrame = Ref { m_frame }, allowNavigationToInvalidURL, completionHandler = completionHandlerCaller.release()] (const ResourceRequest& request, WeakPtr&& formState, NavigationPolicyDecision navigationPolicyDecision) mutable { + policyChecker().checkNavigationPolicy(ResourceRequest(loader->request()), ResourceResponse { } /* redirectResponse */, loader, WTFMove(formState), [this, frame, allowNavigationToInvalidURL, completionHandler = completionHandlerCaller.release()] (const ResourceRequest& request, WeakPtr&& formState, NavigationPolicyDecision navigationPolicyDecision) mutable { + InspectorInstrumentation::didCheckNavigationPolicy(m_frame, navigationPolicyDecision != NavigationPolicyDecision::ContinueLoad); continueLoadAfterNavigationPolicy(request, formState.get(), navigationPolicyDecision, allowNavigationToInvalidURL); completionHandler(); }, PolicyDecisionMode::Asynchronous); -@@ -2951,14 +2956,19 @@ String FrameLoader::userAgent(const URL& url) const +@@ -2960,14 +2965,19 @@ String FrameLoader::userAgent(const URL& url) const String FrameLoader::navigatorPlatform() const { + String platform; + - if (auto* localFrame = dynamicDowncast(m_frame.mainFrame())) { - if (auto* documentLoader = localFrame->loader().activeDocumentLoader()) { + if (RefPtr localFrame = dynamicDowncast(m_frame->mainFrame())) { + if (RefPtr documentLoader = localFrame->loader().activeDocumentLoader()) { auto& customNavigatorPlatform = documentLoader->customNavigatorPlatform(); if (!customNavigatorPlatform.isEmpty()) - return customNavigatorPlatform; @@ -5677,44 +5179,44 @@ index 9328921ba26573b39baad48e2aa711a6319d2a67..380ffe9398057e8d0de5c700d8af6264 } void FrameLoader::dispatchOnloadEvents() -@@ -3386,6 +3396,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) +@@ -3397,6 +3407,8 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error) checkCompleted(); - if (m_frame.page()) + if (frame->page()) checkLoadComplete(); + + InspectorInstrumentation::didReceiveMainResourceError(m_frame, error); } void FrameLoader::continueFragmentScrollAfterNavigationPolicy(const ResourceRequest& request, const SecurityOrigin* requesterOrigin, bool shouldContinue) -@@ -4221,9 +4233,6 @@ String FrameLoader::referrer() const +@@ -4233,9 +4245,6 @@ String FrameLoader::referrer() const void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() { -- if (!m_frame.script().canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript)) +- if (!protectedFrame()->checkedScript()->canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript)) - return; - Vector> worlds; ScriptController::getAllWorlds(worlds); for (auto& world : worlds) -@@ -4232,13 +4241,13 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() - +@@ -4245,13 +4254,12 @@ void FrameLoader::dispatchDidClearWindowObjectsInAllWorlds() void FrameLoader::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld& world) { -- if (!m_frame.script().canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript) || !m_frame.windowProxy().existingJSWindowProxy(world)) + Ref frame = m_frame.get(); +- if (!frame->checkedScript()->canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript) || !frame->windowProxy().existingJSWindowProxy(world)) - return; -+ if (m_frame.windowProxy().existingJSWindowProxy(world)) { -+ if (m_frame.script().canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript)) -+ m_client->dispatchDidClearWindowObjectInWorld(world); - +- - m_client->dispatchDidClearWindowObjectInWorld(world); - -- if (Page* page = m_frame.page()) -- page->inspectorController().didClearWindowObjectInWorld(m_frame, world); -+ if (Page* page = m_frame.page()) +- if (CheckedPtr page = frame->page()) +- page->inspectorController().didClearWindowObjectInWorld(frame, world); ++ if (frame->windowProxy().existingJSWindowProxy(world)) { ++ if (frame->script().canExecuteScripts(ReasonForCallingCanExecuteScripts::NotAboutToExecuteScript)) ++ m_client->dispatchDidClearWindowObjectInWorld(world); ++ if (Page* page = frame->page()) + page->inspectorController().didClearWindowObjectInWorld(m_frame, world); + } - InspectorInstrumentation::didClearWindowObjectInWorld(m_frame, world); + InspectorInstrumentation::didClearWindowObjectInWorld(frame, world); } diff --git a/Source/WebCore/loader/LoaderStrategy.h b/Source/WebCore/loader/LoaderStrategy.h index 91340dc21042f545592b442bc42dbceed06219b2..f3591fe333761b10a25ddaf4a4f8d72170dfe336 100644 @@ -5729,10 +5231,10 @@ index 91340dc21042f545592b442bc42dbceed06219b2..f3591fe333761b10a25ddaf4a4f8d721 virtual bool shouldPerformSecurityChecks() const { return false; } virtual bool havePerformedSecurityChecks(const ResourceResponse&) const { return false; } diff --git a/Source/WebCore/loader/NavigationScheduler.cpp b/Source/WebCore/loader/NavigationScheduler.cpp -index f2fd6e524daa7ec31bddf7b692777dccd1f62585..8252ebf7fdf96b44db3ea6f9c47a9ce8180ea3bd 100644 +index f356dd377950801b95ec0b9a6b4c93624fc0dcda..95e86435868b4e2937aa0dd799f9c23403c4f114 100644 --- a/Source/WebCore/loader/NavigationScheduler.cpp +++ b/Source/WebCore/loader/NavigationScheduler.cpp -@@ -682,7 +682,7 @@ void NavigationScheduler::startTimer() +@@ -684,7 +684,7 @@ void NavigationScheduler::startTimer() Seconds delay = 1_s * m_redirect->delay(); m_timer.startOneShot(delay); @@ -5742,10 +5244,10 @@ index f2fd6e524daa7ec31bddf7b692777dccd1f62585..8252ebf7fdf96b44db3ea6f9c47a9ce8 } diff --git a/Source/WebCore/loader/PolicyChecker.cpp b/Source/WebCore/loader/PolicyChecker.cpp -index 900ac50c29df6cfdbb9d66edee57eb2e213a2b92..fc8ed6120a4f7a030af0c3d55706f582ef7144dd 100644 +index a0898687ef06dc03fd085e1913c0eeb6f9825a99..9c8d10a43a87b5b8d1d18ca8c0a01d1fd883a719 100644 --- a/Source/WebCore/loader/PolicyChecker.cpp +++ b/Source/WebCore/loader/PolicyChecker.cpp -@@ -43,6 +43,7 @@ +@@ -44,6 +44,7 @@ #include "HTMLFormElement.h" #include "HTMLFrameOwnerElement.h" #include "HTMLPlugInElement.h" @@ -5776,10 +5278,10 @@ index 273f7815c6fd1553b78a117c78eaa460085d1272..ccf6e96daebad01d5bfabe5062d29c3a void ProgressTracker::incrementProgress(ResourceLoaderIdentifier identifier, const ResourceResponse& response) diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp -index cc2916050d7bff5290dd8079d5b77c68c6dd4649..94622e922f4624a4d07896a9983901e4c91d1a79 100644 +index 572b79810788c792af10b5e51cce7a5ff88bf401..2fc289c5af45e5d8ec55c93c7f1938a31fecb703 100644 --- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp +++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp -@@ -1025,8 +1025,11 @@ ResourceErrorOr> CachedResourceLoader::requ +@@ -1021,8 +1021,11 @@ ResourceErrorOr> CachedResourceLoader::requ request.updateReferrerPolicy(document() ? document()->referrerPolicy() : ReferrerPolicy::Default); @@ -5793,7 +5295,7 @@ index cc2916050d7bff5290dd8079d5b77c68c6dd4649..94622e922f4624a4d07896a9983901e4 auto& page = *frame.page(); -@@ -1678,8 +1681,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const +@@ -1629,8 +1632,9 @@ Vector> CachedResourceLoader::allCachedSVGImages() const ResourceErrorOr> CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest&& request) { @@ -5806,10 +5308,10 @@ index cc2916050d7bff5290dd8079d5b77c68c6dd4649..94622e922f4624a4d07896a9983901e4 ASSERT(m_document); if (request.charset().isEmpty() && m_document && (type == CachedResource::Type::Script || type == CachedResource::Type::CSSStyleSheet)) diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h -index 33293f37310d019dbd755d067797a5bb4b3a56cf..c28b5ccb4bd4f179f850efc5c1a1eae18528da64 100644 +index 4b2ec877f96a384b80709ee24d204cc12f59b178..33b94b530772de73d269a40055744d773a4b2087 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h -@@ -325,7 +325,7 @@ public: +@@ -328,7 +328,7 @@ public: #endif #if ENABLE(ORIENTATION_EVENTS) @@ -5819,200 +5321,49 @@ index 33293f37310d019dbd755d067797a5bb4b3a56cf..c28b5ccb4bd4f179f850efc5c1a1eae1 #if ENABLE(INPUT_TYPE_COLOR) diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp -index 2428fc773b39011a7d642d4036a7e78386ebeb68..4af98fa0726d89e32135e7b99343897e3eb31d8f 100644 +index 9a5b33498e58e12cd2702c6baa44276e5cb2cc52..f60bfa86739a58d87243f882ee7dbba280832542 100644 --- a/Source/WebCore/page/EventHandler.cpp +++ b/Source/WebCore/page/EventHandler.cpp -@@ -147,6 +147,7 @@ - - #if ENABLE(TOUCH_EVENTS) && !ENABLE(IOS_TOUCH_EVENTS) - #include "PlatformTouchEvent.h" -+#include "PointerCaptureController.h" - #endif - - #if ENABLE(MAC_GESTURE_EVENTS) -@@ -858,9 +859,7 @@ bool EventHandler::handleMousePressEvent(const MouseEventWithHitTestResults& eve - m_mousePressNode = event.targetNode(); - m_frame.document()->setFocusNavigationStartingNode(event.targetNode()); - --#if ENABLE(DRAG_SUPPORT) - m_dragStartPosition = event.event().position(); --#endif - - m_mousePressed = true; - m_selectionInitiationState = HaveNotStartedSelection; -@@ -900,8 +899,6 @@ VisiblePosition EventHandler::selectionExtentRespectingEditingBoundary(const Vis - return adjustedTarget->renderer()->positionForPoint(LayoutPoint(selectionEndPoint), nullptr); - } - --#if ENABLE(DRAG_SUPPORT) -- - #if !PLATFORM(IOS_FAMILY) - - bool EventHandler::supportsSelectionUpdatesOnMouseDrag() const -@@ -923,8 +920,10 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e - - Ref protectedFrame(m_frame); - -+#if ENABLE(DRAG_SUPPORT) - if (handleDrag(event, checkDragHysteresis)) - return true; -+#endif - - RefPtr targetNode = event.targetNode(); - if (event.event().button() != MouseButton::Left || !targetNode) -@@ -945,7 +944,9 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e - ASSERT(mouseDownMayStartSelect() || m_mouseDownMayStartAutoscroll); - #endif - -+#if ENABLE(DRAG_SUPPORT) - m_mouseDownMayStartDrag = false; -+#endif - - if (m_mouseDownMayStartAutoscroll && !panScrollInProgress()) { - m_autoscrollController->startAutoscrollForSelection(renderer); -@@ -962,6 +963,8 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e - return true; - } - -+#if ENABLE(DRAG_SUPPORT) -+ - bool EventHandler::eventMayStartDrag(const PlatformMouseEvent& event) const - { - // This is a pre-flight check of whether the event might lead to a drag being started. Be careful -@@ -993,6 +996,8 @@ bool EventHandler::eventMayStartDrag(const PlatformMouseEvent& event) const - return targetElement && page->dragController().draggableElement(&m_frame, targetElement.get(), result.roundedPointInInnerNodeFrame(), state); - } - -+#endif // ENABLE(DRAG_SUPPORT) -+ - void EventHandler::updateSelectionForMouseDrag() - { - if (!supportsSelectionUpdatesOnMouseDrag()) -@@ -1101,7 +1106,6 @@ void EventHandler::updateSelectionForMouseDrag(const HitTestResult& hitTestResul - if (oldSelection != newSelection && ImageOverlay::isOverlayText(newSelection.start().containerNode()) && ImageOverlay::isOverlayText(newSelection.end().containerNode())) - invalidateClick(); - } --#endif // ENABLE(DRAG_SUPPORT) - - void EventHandler::lostMouseCapture() - { -@@ -1149,9 +1153,7 @@ bool EventHandler::handleMouseReleaseEvent(const MouseEventWithHitTestResults& e - // on the selection, the selection goes away. However, if we are - // editing, place the caret. - if (m_mouseDownWasSingleClickInSelection && m_selectionInitiationState != ExtendedSelection --#if ENABLE(DRAG_SUPPORT) - && m_dragStartPosition == event.event().position() --#endif - && m_frame.selection().isRange() - && event.event().button() != MouseButton::Right) { - VisibleSelection newSelection; -@@ -2168,10 +2170,8 @@ HandleMouseEventResult EventHandler::handleMouseMoveEvent(const PlatformMouseEve - - swallowEvent = !dispatchMouseEvent(eventNames().mousemoveEvent, mouseEvent.targetNode(), 0, platformMouseEvent, FireMouseOverOut::Yes); - --#if ENABLE(DRAG_SUPPORT) - if (!swallowEvent) - swallowEvent = handleMouseDraggedEvent(mouseEvent); --#endif - - return swallowEvent; - } -@@ -4273,7 +4273,14 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr - if (!m_frame.document()) +@@ -4313,6 +4313,12 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, CheckDr + if (!document) return false; -- dragState().dataTransfer = DataTransfer::createForDrag(*m_frame.document()); +#if PLATFORM(MAC) -+ auto* page = m_frame.page(); ++ auto* page = m_frame->page(); + if (page && !page->overrideDragPasteboardName().isEmpty()) -+ dragState().dataTransfer = DataTransfer::createForDrag(*m_frame.document(), page->overrideDragPasteboardName()); ++ dragState().dataTransfer = DataTransfer::createForDrag(*document, page->overrideDragPasteboardName()); + else +#endif -+ dragState().dataTransfer = DataTransfer::createForDrag(*m_frame.document()); -+ + dragState().dataTransfer = DataTransfer::createForDrag(*document); auto hasNonDefaultPasteboardData = HasNonDefaultPasteboardData::No; - if (dragState().shouldDispatchEvents) { -@@ -4958,11 +4965,6 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) - document.page()->pointerCaptureController().dispatchEventForTouchAtIndex( - *touchTarget, cancelEvent, index, !index, *document.windowProxy(), { 0, 0 }); - } -- -- // FIXME: Pass the touch delta for pointermove events by remembering the position per pointerID similar to -- // Apple's m_touchLastGlobalPositionAndDeltaMap -- document.page()->pointerCaptureController().dispatchEventForTouchAtIndex( -- *pointerTarget, event, index, !index, *document.windowProxy(), { 0, 0 }); - #endif - - if (&m_frame != targetFrame) { -@@ -5004,6 +5006,9 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) - changedTouches[pointState].m_touches->append(WTFMove(touch)); - changedTouches[pointState].m_targets.add(touchTarget); - } -+ document.page()->pointerCaptureController().dispatchEventForTouchAtIndex( -+ *touchTarget, event, index, index == 0, *document.windowProxy(), IntPoint::zero()); -+ - } - m_touchPressed = touches->length() > 0; - if (allTouchReleased) -diff --git a/Source/WebCore/page/EventHandler.h b/Source/WebCore/page/EventHandler.h -index c42f7523be4fc59b3cee076b620735c8693fbc08..cc1ae3be93e72cea09e0a5795a6b18df301034ab 100644 ---- a/Source/WebCore/page/EventHandler.h -+++ b/Source/WebCore/page/EventHandler.h -@@ -139,9 +139,7 @@ public: - - WEBCORE_EXPORT VisiblePosition selectionExtentRespectingEditingBoundary(const VisibleSelection&, const LayoutPoint&, Node*); - --#if ENABLE(DRAG_SUPPORT) - void updateSelectionForMouseDrag(); --#endif - - #if ENABLE(PAN_SCROLLING) - void didPanScrollStart(); -@@ -406,10 +404,8 @@ private: - bool startKeyboardScrollAnimationOnRenderBoxAndItsAncestors(ScrollDirection, ScrollGranularity, RenderBox*, bool isKeyRepeat); - bool startKeyboardScrollAnimationOnEnclosingScrollableContainer(ScrollDirection, ScrollGranularity, Node*, bool isKeyRepeat); +@@ -4914,7 +4920,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve --#if ENABLE(DRAG_SUPPORT) - bool handleMouseDraggedEvent(const MouseEventWithHitTestResults&, CheckDragHysteresis = ShouldCheckDragHysteresis); - bool shouldAllowMouseDownToStartDrag() const; --#endif - - WEBCORE_EXPORT bool handleMouseReleaseEvent(const MouseEventWithHitTestResults&); - -@@ -511,10 +507,8 @@ private: - void defaultTabEventHandler(KeyboardEvent&); - void defaultArrowEventHandler(FocusDirection, KeyboardEvent&); - --#if ENABLE(DRAG_SUPPORT) - OptionSet updateDragSourceActionsAllowed() const; - bool supportsSelectionUpdatesOnMouseDrag() const; --#endif - - // The following are called at the beginning of handleMouseUp and handleDrag. - // If they return true it indicates that they have consumed the event. -@@ -522,9 +516,10 @@ private: - - #if ENABLE(DRAG_SUPPORT) - bool eventLoopHandleMouseDragged(const MouseEventWithHitTestResults&); -- void updateSelectionForMouseDrag(const HitTestResult&); - #endif - -+ void updateSelectionForMouseDrag(const HitTestResult&); -+ - enum class SetOrClearLastScrollbar { Clear, Set }; - void updateLastScrollbarUnderMouse(Scrollbar*, SetOrClearLastScrollbar); - -@@ -617,8 +612,8 @@ private: - Timer m_autoHideCursorTimer; + // Increment the platform touch id by 1 to avoid storing a key of 0 in the hashmap. + unsigned touchPointTargetKey = point.id() + 1; +-#if PLATFORM(WPE) ++#if !ENABLE(IOS_TOUCH_EVENTS) + bool pointerCancelled = false; #endif - --#if ENABLE(DRAG_SUPPORT) - LayoutPoint m_dragStartPosition; -+#if ENABLE(DRAG_SUPPORT) - std::optional m_dragStartSelection; - RefPtr m_dragTarget; - bool m_mouseDownMayStartDrag { false }; + RefPtr touchTarget; +@@ -4961,7 +4967,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve + // we also remove it from the map. + touchTarget = m_originatingTouchPointTargets.take(touchPointTargetKey); + +-#if PLATFORM(WPE) ++#if !ENABLE(IOS_TOUCH_EVENTS) + HitTestResult result = hitTestResultAtPoint(pagePoint, hitType | HitTestRequest::Type::AllowChildFrameContent); + pointerTarget = result.targetElement(); + pointerCancelled = (pointerTarget != touchTarget); +@@ -4983,7 +4989,7 @@ HandleUserInputEventResult EventHandler::handleTouchEvent(const PlatformTouchEve + if (!targetFrame) + continue; + +-#if PLATFORM(WPE) ++#if !ENABLE(IOS_TOUCH_EVENTS) + // FIXME: WPE currently does not send touch stationary events, so create a naive TouchReleased PlatformTouchPoint + // on release if the hit test result changed since the previous TouchPressed or TouchMoved + if (pointState == PlatformTouchPoint::TouchReleased && pointerCancelled) { diff --git a/Source/WebCore/page/FrameSnapshotting.cpp b/Source/WebCore/page/FrameSnapshotting.cpp index 7ee2659df6aca0f84b61cb0de78ba9518b65b61e..0f09634cc4e679742b64a29506e2bd65e73c6fe9 100644 --- a/Source/WebCore/page/FrameSnapshotting.cpp @@ -6074,7 +5425,7 @@ index 5f85bb24166b1c1805323fcbb34144be3191643b..09d2782e3961d70b9483a77e0c12923b struct SnapshotOptions { diff --git a/Source/WebCore/page/History.cpp b/Source/WebCore/page/History.cpp -index a6537109eeecdeb6d541fff3469c3c8f3a061ca2..d8fa86589e6d0ddcb3f84f2d6afed722c7454fd0 100644 +index 9be81a19a86aa3ae53aa975cbad81d928f97fa34..56b513e3e0cba167c6e52559f95f7ba4edf5a0d9 100644 --- a/Source/WebCore/page/History.cpp +++ b/Source/WebCore/page/History.cpp @@ -31,6 +31,7 @@ @@ -6094,7 +5445,7 @@ index a6537109eeecdeb6d541fff3469c3c8f3a061ca2..d8fa86589e6d0ddcb3f84f2d6afed722 if (stateObjectType == StateObjectType::Push) { frame->loader().history().pushState(WTFMove(data), title, fullURL.string()); diff --git a/Source/WebCore/page/LocalFrame.cpp b/Source/WebCore/page/LocalFrame.cpp -index e5452be0cfa1e035befbca4d1d2595688220f700..ab0fe3458df4270681f69facf39fd33a5144c892 100644 +index d5e55947c84cce0f08b9b2973ad164cd0d04792b..bc4886923eb9a978b7059764647585ef61162aeb 100644 --- a/Source/WebCore/page/LocalFrame.cpp +++ b/Source/WebCore/page/LocalFrame.cpp @@ -40,6 +40,7 @@ @@ -6110,10 +5461,10 @@ index e5452be0cfa1e035befbca4d1d2595688220f700..ab0fe3458df4270681f69facf39fd33a #include "GraphicsContext.h" #include "GraphicsLayer.h" +#include "HTMLAreaElement.h" + #include "HTMLAttachmentElement.h" #include "HTMLFormControlElement.h" #include "HTMLFormElement.h" - #include "HTMLFrameElementBase.h" -@@ -74,6 +76,7 @@ +@@ -75,6 +77,7 @@ #include "Logging.h" #include "Navigator.h" #include "NodeList.h" @@ -6121,26 +5472,26 @@ index e5452be0cfa1e035befbca4d1d2595688220f700..ab0fe3458df4270681f69facf39fd33a #include "NodeTraversal.h" #include "Page.h" #include "ProcessWarming.h" -@@ -173,6 +176,7 @@ LocalFrame::LocalFrame(Page& page, UniqueRef&& frameLoad +@@ -178,6 +181,7 @@ LocalFrame::LocalFrame(Page& page, UniqueRef&& frameLoad void LocalFrame::init() { + InspectorInstrumentation::frameAttached(this); - m_loader->init(); + checkedLoader()->init(); } -@@ -381,7 +385,7 @@ void LocalFrame::orientationChanged() +@@ -406,7 +410,7 @@ void LocalFrame::orientationChanged() IntDegrees LocalFrame::orientation() const { - if (auto* page = this->page()) + if (CheckedPtr page = this->page()) - return page->chrome().client().deviceOrientation(); + return page->orientation(); return 0; } #endif // ENABLE(ORIENTATION_EVENTS) -@@ -1182,6 +1186,362 @@ DataDetectionResultsStorage& LocalFrame::dataDetectionResults() - - #endif +@@ -1281,6 +1285,362 @@ void LocalFrame::frameWasDisconnectedFromOwner() const + protectedDocument()->detachFromFrame(); + } +#if !PLATFORM(IOS_FAMILY) + @@ -6475,7 +5826,7 @@ index e5452be0cfa1e035befbca4d1d2595688220f700..ab0fe3458df4270681f69facf39fd33a + if (!renderer) + continue; + -+ if ((renderer->isTextField() || renderer->isTextArea()) && downcast(*renderer).canScroll()) { ++ if ((renderer->isRenderTextControlSingleLine() || renderer->isRenderTextControlMultiLine()) && downcast(*renderer).canScroll()) { + scrollingAncestor = node; + continue; + } @@ -6502,7 +5853,7 @@ index e5452be0cfa1e035befbca4d1d2595688220f700..ab0fe3458df4270681f69facf39fd33a #undef FRAME_RELEASE_LOG_ERROR diff --git a/Source/WebCore/page/LocalFrame.h b/Source/WebCore/page/LocalFrame.h -index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e27507c6f910 100644 +index f69e87d269b6451a5767d9c8edb09488aec61569..c71dacc6ba37e45dac568d714b4dfc70c713d637 100644 --- a/Source/WebCore/page/LocalFrame.h +++ b/Source/WebCore/page/LocalFrame.h @@ -28,8 +28,10 @@ @@ -6515,8 +5866,8 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 +#include "IntDegrees.h" #include "ScrollTypes.h" #include "UserScriptTypes.h" - #include -@@ -69,7 +71,6 @@ namespace WebCore { + #include +@@ -70,7 +72,6 @@ namespace WebCore { class Color; class LocalDOMWindow; class DataDetectionResultsStorage; @@ -6524,7 +5875,7 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 class Editor; class Element; class EventHandler; -@@ -108,8 +109,8 @@ enum { +@@ -109,8 +110,8 @@ enum { }; enum OverflowScrollAction { DoNotPerformOverflowScroll, PerformOverflowScroll }; @@ -6534,7 +5885,7 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 class LocalFrame final : public Frame { public: -@@ -201,10 +202,6 @@ public: +@@ -217,10 +218,6 @@ public: WEBCORE_EXPORT DataDetectionResultsStorage& dataDetectionResults(); #endif @@ -6545,7 +5896,7 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 WEBCORE_EXPORT Node* deepestNodeAtLocation(const FloatPoint& viewportLocation); WEBCORE_EXPORT Node* nodeRespondingToClickEvents(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation, SecurityOrigin* = nullptr); WEBCORE_EXPORT Node* nodeRespondingToDoubleClickEvent(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation); -@@ -212,6 +209,10 @@ public: +@@ -228,6 +225,10 @@ public: WEBCORE_EXPORT Node* nodeRespondingToScrollWheelEvents(const FloatPoint& viewportLocation); WEBCORE_EXPORT Node* approximateNodeAtViewportLocationLegacy(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation); @@ -6556,7 +5907,7 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 WEBCORE_EXPORT NSArray *wordsInCurrentParagraph() const; WEBCORE_EXPORT CGRect renderRectForPoint(CGPoint, bool* isReplaced, float* fontSize) const; -@@ -279,6 +280,7 @@ public: +@@ -295,6 +296,7 @@ public: WEBCORE_EXPORT FloatSize screenSize() const; void setOverrideScreenSize(FloatSize&&); @@ -6564,7 +5915,7 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 void selfOnlyRef(); void selfOnlyDeref(); -@@ -315,7 +317,6 @@ private: +@@ -340,7 +342,6 @@ private: #if ENABLE(DATA_DETECTION) std::unique_ptr m_dataDetectionResults; #endif @@ -6572,7 +5923,7 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 void betterApproximateNode(const IntPoint& testPoint, const NodeQualifier&, Node*& best, Node* failedNode, IntPoint& bestPoint, IntRect& bestRect, const IntRect& testRect); bool hitTestResultAtViewportLocation(const FloatPoint& viewportLocation, HitTestResult&, IntPoint& center); -@@ -323,6 +324,7 @@ private: +@@ -348,6 +349,7 @@ private: enum class ShouldFindRootEditableElement : bool { No, Yes }; Node* qualifyingNodeAtViewportLocation(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation, const NodeQualifier&, ShouldApproximate, ShouldFindRootEditableElement = ShouldFindRootEditableElement::Yes); @@ -6581,10 +5932,10 @@ index dec423046a398d9ff9581182339202ab234d1b86..1fa73649aa87c39dc2e113bc9e16e275 ViewportArguments m_viewportArguments; diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp -index eeca345e3f10fbe452408539a33264d5dce43ec5..23b03d2caae1eef9cd6594a26a78fac4f035956d 100644 +index 3dcdd8d49ae63683286b1277775edc8819bcc4ca..3a1315ab496cb6370223ce0cae8dc3e6d063c847 100644 --- a/Source/WebCore/page/Page.cpp +++ b/Source/WebCore/page/Page.cpp -@@ -527,6 +527,45 @@ void Page::setOverrideViewportArguments(const std::optional& +@@ -542,6 +542,45 @@ void Page::setOverrideViewportArguments(const std::optional& document->updateViewportArguments(); } @@ -6630,7 +5981,7 @@ index eeca345e3f10fbe452408539a33264d5dce43ec5..23b03d2caae1eef9cd6594a26a78fac4 ScrollingCoordinator* Page::scrollingCoordinator() { if (!m_scrollingCoordinator && m_settings->scrollingCoordinatorEnabled()) { -@@ -3751,6 +3790,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) +@@ -3795,6 +3834,26 @@ void Page::setUseDarkAppearanceOverride(std::optional valueOverride) #endif } @@ -6658,10 +6009,10 @@ index eeca345e3f10fbe452408539a33264d5dce43ec5..23b03d2caae1eef9cd6594a26a78fac4 { if (insets == m_fullscreenInsets) diff --git a/Source/WebCore/page/Page.h b/Source/WebCore/page/Page.h -index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9b7878525 100644 +index 4b71175319210a81fefba2112be1c068a923aade..0eb7a3d575c0d77a4e9ef95e9f8b05b10d33fe77 100644 --- a/Source/WebCore/page/Page.h +++ b/Source/WebCore/page/Page.h -@@ -310,6 +310,9 @@ public: +@@ -309,6 +309,9 @@ public: const std::optional& overrideViewportArguments() const { return m_overrideViewportArguments; } WEBCORE_EXPORT void setOverrideViewportArguments(const std::optional&); @@ -6671,7 +6022,7 @@ index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9 static void refreshPlugins(bool reload); WEBCORE_EXPORT PluginData& pluginData(); void clearPluginData(); -@@ -371,6 +374,10 @@ public: +@@ -372,6 +375,10 @@ public: #if ENABLE(DRAG_SUPPORT) DragController& dragController() { return m_dragController.get(); } const DragController& dragController() const { return m_dragController.get(); } @@ -6682,7 +6033,7 @@ index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9 #endif FocusController& focusController() const { return *m_focusController; } #if ENABLE(CONTEXT_MENUS) -@@ -541,6 +548,10 @@ public: +@@ -547,6 +554,10 @@ public: WEBCORE_EXPORT void effectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel); bool defaultUseDarkAppearance() const { return m_useDarkAppearance; } void setUseDarkAppearanceOverride(std::optional); @@ -6693,7 +6044,7 @@ index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9 #if ENABLE(TEXT_AUTOSIZING) float textAutosizingWidth() const { return m_textAutosizingWidth; } -@@ -978,6 +989,11 @@ public: +@@ -990,6 +1001,11 @@ public: WEBCORE_EXPORT void setInteractionRegionsEnabled(bool); #endif @@ -6705,7 +6056,7 @@ index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9 #if ENABLE(DEVICE_ORIENTATION) && PLATFORM(IOS_FAMILY) DeviceOrientationUpdateProvider* deviceOrientationUpdateProvider() const { return m_deviceOrientationUpdateProvider.get(); } #endif -@@ -1126,6 +1142,9 @@ private: +@@ -1140,6 +1156,9 @@ private: #if ENABLE(DRAG_SUPPORT) UniqueRef m_dragController; @@ -6715,7 +6066,7 @@ index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9 #endif std::unique_ptr m_focusController; #if ENABLE(CONTEXT_MENUS) -@@ -1206,6 +1225,8 @@ private: +@@ -1217,6 +1236,8 @@ private: bool m_useElevatedUserInterfaceLevel { false }; bool m_useDarkAppearance { false }; std::optional m_useDarkAppearanceOverride; @@ -6724,7 +6075,7 @@ index 332905b95e257e19a1c4928da5d6b0598497a63b..7a09f36a9a52edbc89ed224c319333d9 #if ENABLE(TEXT_AUTOSIZING) float m_textAutosizingWidth { 0 }; -@@ -1381,6 +1402,11 @@ private: +@@ -1393,6 +1414,11 @@ private: #endif std::optional m_overrideViewportArguments; @@ -6752,10 +6103,10 @@ index 6fe30e064c50097f90b06ac7facbd0717d6a873b..81e3e8c19771fc6e0fbed5d55303517b + } // namespace WebCore diff --git a/Source/WebCore/page/PageConsoleClient.h b/Source/WebCore/page/PageConsoleClient.h -index 9a6549a792bf95f6d5671289bc58be259ec73732..03a6ceb14a18b3b74e8544a98fb858416b645e71 100644 +index 78e95133279568ae6fefe8a127acd9a600cc1a69..27acfbe94471bfae33e689a965a3f14ddee26b0a 100644 --- a/Source/WebCore/page/PageConsoleClient.h +++ b/Source/WebCore/page/PageConsoleClient.h -@@ -81,6 +81,7 @@ private: +@@ -82,6 +82,7 @@ private: void record(JSC::JSGlobalObject*, Ref&&) override; void recordEnd(JSC::JSGlobalObject*, Ref&&) override; void screenshot(JSC::JSGlobalObject*, Ref&&) override; @@ -6764,7 +6115,7 @@ index 9a6549a792bf95f6d5671289bc58be259ec73732..03a6ceb14a18b3b74e8544a98fb85841 Page& m_page; }; diff --git a/Source/WebCore/page/PointerCaptureController.cpp b/Source/WebCore/page/PointerCaptureController.cpp -index 4fcf544270085cd95bbab81297e68fe6701f5f49..94cf0aecebe5abe95cf308e8696df170c5ddc8d9 100644 +index 7adcd916dad40b21aea036b02c79ab615b8bf90a..228c0081a4a73ae4ba6feea5cd734ceacfebb824 100644 --- a/Source/WebCore/page/PointerCaptureController.cpp +++ b/Source/WebCore/page/PointerCaptureController.cpp @@ -195,7 +195,7 @@ bool PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier(Poi @@ -6814,7 +6165,7 @@ index 91a9847a4083393e225f42e71c2dd590a88c0289..b0838c84e4ba24378db42f40a68856af #endif ; diff --git a/Source/WebCore/page/Screen.cpp b/Source/WebCore/page/Screen.cpp -index 11af362d3018851cb8258419f3e0d3e01ea369c0..9ec64d3c88bf37ad423aa613bae557d7a65c06fa 100644 +index d70607f79cd3e975f834e680c0540e558553c483..cbcaf6b64dff68713594cbd3d9d607a23ef6b900 100644 --- a/Source/WebCore/page/Screen.cpp +++ b/Source/WebCore/page/Screen.cpp @@ -110,6 +110,9 @@ int Screen::availLeft() const @@ -6858,14 +6209,14 @@ index 11af362d3018851cb8258419f3e0d3e01ea369c0..9ec64d3c88bf37ad423aa613bae557d7 } diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp -index 58012d74ce6972f3fd2c7e7d054cf36ad08f05ed..37e981adab6620b750bbf82a2e10d2a6058712e6 100644 +index ca9c9582365de350649a0ab9e5e88bacc63d26de..da48770a91b0b391505444433c495ae4ae7dce37 100644 --- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp @@ -336,6 +336,8 @@ bool ContentSecurityPolicy::allowContentSecurityPolicySourceStarToMatchAnyProtoc template typename std::enable_if::value, bool>::type ContentSecurityPolicy::allPoliciesWithDispositionAllow(Disposition disposition, Predicate&& predicate, Args&&... args) const { -+ if (InspectorInstrumentation::shouldBypassCSP(m_scriptExecutionContext)) ++ if (InspectorInstrumentation::shouldBypassCSP(m_scriptExecutionContext.get())) + return true; bool isReportOnly = disposition == ContentSecurityPolicy::Disposition::ReportOnly; for (auto& policy : m_policies) { @@ -6874,7 +6225,7 @@ index 58012d74ce6972f3fd2c7e7d054cf36ad08f05ed..37e981adab6620b750bbf82a2e10d2a6 template bool ContentSecurityPolicy::allPoliciesWithDispositionAllow(Disposition disposition, ViolatedDirectiveCallback&& callback, Predicate&& predicate, Args&&... args) const { -+ if (InspectorInstrumentation::shouldBypassCSP(m_scriptExecutionContext)) ++ if (InspectorInstrumentation::shouldBypassCSP(m_scriptExecutionContext.get())) + return true; bool isReportOnly = disposition == ContentSecurityPolicy::Disposition::ReportOnly; bool isAllowed = true; @@ -6883,7 +6234,7 @@ index 58012d74ce6972f3fd2c7e7d054cf36ad08f05ed..37e981adab6620b750bbf82a2e10d2a6 template bool ContentSecurityPolicy::allPoliciesAllow(ViolatedDirectiveCallback&& callback, Predicate&& predicate, Args&&... args) const { -+ if (InspectorInstrumentation::shouldBypassCSP(m_scriptExecutionContext)) ++ if (InspectorInstrumentation::shouldBypassCSP(m_scriptExecutionContext.get())) + return true; bool isAllowed = true; for (auto& policy : m_policies) { @@ -6987,7 +6338,7 @@ index e5f739288d77ed77c32fc538371637aea8370b7f..bc4c3cb723f733b8fd9683e15c91e13c ) diff --git a/Source/WebCore/platform/DragData.h b/Source/WebCore/platform/DragData.h -index c77ddd17643628a87c0245ee2ea3ba417d40bc23..c5179ff48e57cdcfbe709a10bae517ff2b9bdc17 100644 +index 35cce31f0f77478754a7859c16f42b6a7ec6edda..03660bd492fad8863aeb21d73a54e7b914147f09 100644 --- a/Source/WebCore/platform/DragData.h +++ b/Source/WebCore/platform/DragData.h @@ -47,7 +47,7 @@ typedef void* DragDataRef; @@ -7010,7 +6361,7 @@ index c77ddd17643628a87c0245ee2ea3ba417d40bc23..c5179ff48e57cdcfbe709a10bae517ff void getDragFileDescriptorData(int& size, String& pathname); void getDragFileContentData(int size, void* dataBlob); #endif -@@ -140,7 +140,7 @@ private: +@@ -141,7 +141,7 @@ private: String m_pasteboardName; #endif #if PLATFORM(WIN) @@ -7033,7 +6384,7 @@ index 9b613ca69af779a1e52b6a66216b0905809262dc..cd48a3551ae8da7702154798fcc6ab4d IntSize dragImageSize(DragImageRef) { diff --git a/Source/WebCore/platform/Pasteboard.h b/Source/WebCore/platform/Pasteboard.h -index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a72208f2fc077 100644 +index ac1b5e50c8f22dfb41862cfc4e94130f5238de39..589bec3a70f3fedd42ffca6428b17e186e0e38a9 100644 --- a/Source/WebCore/platform/Pasteboard.h +++ b/Source/WebCore/platform/Pasteboard.h @@ -44,7 +44,7 @@ OBJC_CLASS NSString; @@ -7054,7 +6405,7 @@ index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a7220 String markup; #endif }; -@@ -193,6 +193,11 @@ public: +@@ -197,6 +197,11 @@ public: #endif #endif @@ -7066,7 +6417,7 @@ index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a7220 #if PLATFORM(WIN) explicit Pasteboard(std::unique_ptr&&, IDataObject*); explicit Pasteboard(std::unique_ptr&&, WCDataObject*); -@@ -260,6 +265,12 @@ public: +@@ -264,6 +269,12 @@ public: int64_t changeCount() const; #endif @@ -7079,7 +6430,7 @@ index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a7220 #if PLATFORM(IOS_FAMILY) explicit Pasteboard(std::unique_ptr&&, int64_t changeCount); explicit Pasteboard(std::unique_ptr&&, const String& pasteboardName); -@@ -296,6 +307,7 @@ public: +@@ -300,6 +311,7 @@ public: COMPtr dataObject() const { return m_dataObject; } WEBCORE_EXPORT void setExternalDataObject(IDataObject*); const DragDataMap& dragDataMap() const { return m_dragDataMap; } @@ -7087,7 +6438,7 @@ index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a7220 void writeURLToWritableDataObject(const URL&, const String&); COMPtr writableDataObject() const { return m_writableDataObject; } void writeImageToDataObject(Element&, const URL&); // FIXME: Layering violation. -@@ -348,6 +360,10 @@ private: +@@ -352,6 +364,10 @@ private: int64_t m_changeCount { 0 }; #endif @@ -7098,7 +6449,7 @@ index 39f37fc92f9be35cd3164b8a10b063fe270610ea..13523a3ca41e8ae264ba4b0d823a7220 #if PLATFORM(COCOA) String m_pasteboardName; int64_t m_changeCount; -@@ -363,6 +379,7 @@ private: +@@ -367,6 +383,7 @@ private: COMPtr m_dataObject; COMPtr m_writableDataObject; DragDataMap m_dragDataMap; @@ -7190,8 +6541,34 @@ index efa9c30953573d88c18e28110e5f86be339656fb..d6cc2afe8026ceebf80d2b0acac478cb + } // namespace WebCore +diff --git a/Source/WebCore/platform/PlatformTouchEvent.h b/Source/WebCore/platform/PlatformTouchEvent.h +index 27b46407faf6ae9d245856fd0ed664984e8729f8..2b8912789dcda373ceffa8f23996566ff07df2dd 100644 +--- a/Source/WebCore/platform/PlatformTouchEvent.h ++++ b/Source/WebCore/platform/PlatformTouchEvent.h +@@ -38,7 +38,7 @@ public: + + const Vector& touchPoints() const { return m_touchPoints; } + +-#if PLATFORM(WPE) ++#if !ENABLE(IOS_TOUCH_EVENTS) + // FIXME: since WPE currently does not send touch stationary events, we need to be able to set + // TouchCancelled touchPoints subsequently + void setTouchPoints(Vector& touchPoints) { m_touchPoints = touchPoints; } +diff --git a/Source/WebCore/platform/PlatformTouchPoint.h b/Source/WebCore/platform/PlatformTouchPoint.h +index 34715d27b529750fc866db87cd330b5184286771..3eefa218af075f76d98012cdeae7e4b344850116 100644 +--- a/Source/WebCore/platform/PlatformTouchPoint.h ++++ b/Source/WebCore/platform/PlatformTouchPoint.h +@@ -49,7 +49,7 @@ public: + { + } + +-#if PLATFORM(WPE) ++#if !ENABLE(IOS_TOUCH_EVENTS) + // FIXME: since WPE currently does not send touch stationary events, we need to be able to + // create a PlatformTouchPoint of type TouchCancelled artificially + PlatformTouchPoint(unsigned id, State state, IntPoint screenPos, IntPoint pos) diff --git a/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp b/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp -index a9d29336decf605282e17416699c4e89a8f9eb22..8d09cf5c3650db7574c20fbf64ba3530f982c32a 100644 +index a2310a15ba9e9703a1d8ec4691b3f626cbfab640..63a7d6027fb35a3ac60bb41a51df2f1c70fef56d 100644 --- a/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp +++ b/Source/WebCore/platform/adwaita/ScrollbarThemeAdwaita.cpp @@ -43,7 +43,7 @@ @@ -7324,7 +6701,7 @@ index b60f9a64bacc8282860da6de299b75aeb295b9b5..55bd017c03c6478ca334bd5ef164160f namespace WebCore { diff --git a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp -index 17ad42448d476fa7fa40c309a7e930454b6e21d2..b4888dc22db2b67e6e95dc0831e8b6103924bc95 100644 +index 7b9d3c85fa1f76e2b53efc712f98866e6d892d4f..40e21fe75fd53d40e388a31eb10a1941347b7776 100644 --- a/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp +++ b/Source/WebCore/platform/graphics/win/ComplexTextControllerUniscribe.cpp @@ -169,6 +169,33 @@ static Vector stringIndicesFromClusters(const Vector& clusters, @@ -8257,7 +7634,7 @@ index 35ade40b37f0c476815535541118f9246ed199cd..2bd1444f9a5e9a14ab3d6acbc020434e m_commonHeaders.append(CommonHeader { name, value }); } diff --git a/Source/WebCore/platform/network/NetworkStorageSession.h b/Source/WebCore/platform/network/NetworkStorageSession.h -index 0aaa786af751fea1c46de73deab2ba09596191a1..a3a087e33bc70f2a83b996638225cb4bc4d94d68 100644 +index b4d2ca129612ba14c6afc92572fe58c2e0e033b4..a31433c497d14d565f1f4fe92e2c88df3d971347 100644 --- a/Source/WebCore/platform/network/NetworkStorageSession.h +++ b/Source/WebCore/platform/network/NetworkStorageSession.h @@ -159,6 +159,8 @@ public: @@ -8270,38 +7647,50 @@ index 0aaa786af751fea1c46de73deab2ba09596191a1..a3a087e33bc70f2a83b996638225cb4b WEBCORE_EXPORT void setCookie(const Cookie&); WEBCORE_EXPORT void setCookies(const Vector&, const URL&, const URL& mainDocumentURL); diff --git a/Source/WebCore/platform/network/ResourceResponseBase.cpp b/Source/WebCore/platform/network/ResourceResponseBase.cpp -index 226bf4b1c6b84bfe9e0e8632388798c0a7f4f5ab..104041824ca34790914a66b09135104280277bf5 100644 +index ab7536de6a0555f2592177e5d6c0148958d7f078..2d1b6d667dbd1843d6cab2c18ae86220d49c600e 100644 --- a/Source/WebCore/platform/network/ResourceResponseBase.cpp +++ b/Source/WebCore/platform/network/ResourceResponseBase.cpp -@@ -74,6 +74,7 @@ ResourceResponseBase::ResourceResponseBase(std::optionalm_httpStatusText : AtomString { }) - , m_httpVersion(data ? data->m_httpVersion : AtomString { }) - , m_httpHeaderFields(data ? data->m_httpHeaderFields : HTTPHeaderMap { }) -+ , m_httpRequestHeaderFields(data ? data->m_httpRequestHeaderFields : HTTPHeaderMap { }) - , m_networkLoadMetrics(data ? data->m_networkLoadMetrics : Box { }) - , m_certificateInfo(data ? data->m_certificateInfo : std::nullopt) - , m_httpStatusCode(data ? data->m_httpStatusCode : 0) -@@ -890,6 +891,7 @@ std::optional ResourceResponseBase::getRespo - m_httpStatusText, - m_httpVersion, - m_httpHeaderFields, -+ m_httpRequestHeaderFields, - m_networkLoadMetrics, - - m_httpStatusCode, +@@ -74,6 +74,7 @@ ResourceResponseBase::ResourceResponseBase(std::optional d + , m_httpStatusText(data ? data->httpStatusText : AtomString { }) + , m_httpVersion(data ? data->httpVersion : AtomString { }) + , m_httpHeaderFields(data ? data->httpHeaderFields : HTTPHeaderMap { }) ++ , m_httpRequestHeaderFields(data ? data->httpRequestHeaderFields : HTTPHeaderMap { }) + , m_networkLoadMetrics(data && data->networkLoadMetrics ? Box::create(*data->networkLoadMetrics) : Box { }) + , m_certificateInfo(data ? data->certificateInfo : std::nullopt) + , m_httpStatusCode(data ? data->httpStatusCode : 0) +@@ -891,6 +892,7 @@ std::optional ResourceResponseBase::getResponseData() cons + String { m_httpStatusText.string() }, + String { m_httpVersion.string() }, + HTTPHeaderMap { m_httpHeaderFields }, ++ HTTPHeaderMap { m_httpRequestHeaderFields }, + m_networkLoadMetrics ? std::optional(*m_networkLoadMetrics) : std::nullopt, + m_source, + m_type, +@@ -964,6 +966,11 @@ std::optional Coder httpRequestHeaderFields; ++ decoder >> httpRequestHeaderFields; ++ if (!httpRequestHeaderFields) ++ return std::nullopt; ++ + std::optional httpStatusCode; + decoder >> httpStatusCode; + if (!httpStatusCode) +@@ -1018,6 +1025,7 @@ std::optional Coder m_networkLoadMetrics; - - short m_httpStatusCode; -@@ -279,6 +280,11 @@ protected: +@@ -251,6 +251,11 @@ protected: AtomString m_httpStatusText; AtomString m_httpVersion; HTTPHeaderMap m_httpHeaderFields; @@ -8313,32 +7702,36 @@ index ac9607cef36f44e12b2c007eab441ada421418a9..1be401a01ce08434d47c51147a249b54 Box m_networkLoadMetrics; mutable std::optional m_certificateInfo; -@@ -375,6 +381,7 @@ void ResourceResponseBase::encode(Encoder& encoder) const - encoder << m_httpStatusText; - encoder << m_httpVersion; - encoder << m_httpHeaderFields; -+ encoder << m_httpRequestHeaderFields; - - encoder << m_httpStatusCode; - encoder << m_certificateInfo; -@@ -444,6 +451,12 @@ bool ResourceResponseBase::decode(Decoder& decoder, ResourceResponseBase& respon - return false; - response.m_httpHeaderFields = WTFMove(*httpHeaderFields); - -+ std::optional httpRequestHeaderFields; -+ decoder >> httpRequestHeaderFields; -+ if (!httpRequestHeaderFields) -+ return false; -+ response.m_httpRequestHeaderFields = WTFMove(*httpRequestHeaderFields); -+ - std::optional httpStatusCode; - decoder >> httpStatusCode; - if (!httpStatusCode) +@@ -291,7 +296,7 @@ struct ResourceResponseData { + ResourceResponseData() = default; + ResourceResponseData(ResourceResponseData&&) = default; + ResourceResponseData& operator=(ResourceResponseData&&) = default; +- ResourceResponseData(URL&& url, String&& mimeType, long long expectedContentLength, String&& textEncodingName, int httpStatusCode, String&& httpStatusText, String&& httpVersion, HTTPHeaderMap&& httpHeaderFields, std::optional&& networkLoadMetrics, ResourceResponseBaseSource source, ResourceResponseBaseType type, ResourceResponseBaseTainting tainting, bool isRedirected, UsedLegacyTLS usedLegacyTLS, WasPrivateRelayed wasPrivateRelayed, bool isRangeRequested, std::optional certificateInfo) ++ ResourceResponseData(URL&& url, String&& mimeType, long long expectedContentLength, String&& textEncodingName, int httpStatusCode, String&& httpStatusText, String&& httpVersion, HTTPHeaderMap&& httpHeaderFields, HTTPHeaderMap&& httpRequestHeaderFields, std::optional&& networkLoadMetrics, ResourceResponseBaseSource source, ResourceResponseBaseType type, ResourceResponseBaseTainting tainting, bool isRedirected, UsedLegacyTLS usedLegacyTLS, WasPrivateRelayed wasPrivateRelayed, bool isRangeRequested, std::optional certificateInfo) + : url(WTFMove(url)) + , mimeType(WTFMove(mimeType)) + , expectedContentLength(expectedContentLength) +@@ -300,6 +305,7 @@ struct ResourceResponseData { + , httpStatusText(WTFMove(httpStatusText)) + , httpVersion(WTFMove(httpVersion)) + , httpHeaderFields(WTFMove(httpHeaderFields)) ++ , httpRequestHeaderFields(WTFMove(httpRequestHeaderFields)) + , networkLoadMetrics(WTFMove(networkLoadMetrics)) + , source(source) + , type(type) +@@ -322,6 +328,7 @@ struct ResourceResponseData { + String httpStatusText; + String httpVersion; + HTTPHeaderMap httpHeaderFields; ++ HTTPHeaderMap httpRequestHeaderFields; + std::optional networkLoadMetrics; + ResourceResponseBase::Source source; + ResourceResponseBase::Type type; diff --git a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm -index 3aa7ce0dbf02a78ab3b7931101d72d283276cdaf..e9ffb44462271d793c0dcc460e15c308e54c4f9d 100644 +index 96d8b81ce13d95bce35865d63d0300e12efcfd0d..8a9f66b44a3a460e93dd7f2ecc2f89821deaf253 100644 --- a/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm +++ b/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm -@@ -539,6 +539,22 @@ bool NetworkStorageSession::setCookieFromDOM(const URL& firstParty, const SameSi +@@ -518,6 +518,22 @@ bool NetworkStorageSession::setCookieFromDOM(const URL& firstParty, const SameSi return false; } @@ -8375,20 +7768,20 @@ index 7788bfea8bb631c51fe858b29cc33e43347cbfab..ad9f347ce55cbea4374a45d3c65f8e11 bool m_detectedDatabaseCorruption { false }; diff --git a/Source/WebCore/platform/network/curl/CurlStream.cpp b/Source/WebCore/platform/network/curl/CurlStream.cpp -index 7a7aa8371394ab6a66a66392cef306daeafe6811..44dd345cb40cc887343ce36ff29fb5ffc5a1ed9e 100644 +index 75cf989294835ce9ab0408d0893af591812bbee9..ea8737d190d40ed4fb511ec27ba4fd313587a027 100644 --- a/Source/WebCore/platform/network/curl/CurlStream.cpp +++ b/Source/WebCore/platform/network/curl/CurlStream.cpp @@ -34,7 +34,7 @@ namespace WebCore { --CurlStream::CurlStream(CurlStreamScheduler& scheduler, CurlStreamID streamID, URL&& url) -+CurlStream::CurlStream(CurlStreamScheduler& scheduler, CurlStreamID streamID, bool ignoreCertificateErrors, URL&& url) +-CurlStream::CurlStream(CurlStreamScheduler& scheduler, CurlStreamID streamID, URL&& url, ServerTrustEvaluation serverTrustEvaluation) ++CurlStream::CurlStream(CurlStreamScheduler& scheduler, CurlStreamID streamID, bool ignoreCertificateErrors, URL&& url, ServerTrustEvaluation serverTrustEvaluation) : m_scheduler(scheduler) , m_streamID(streamID) { -@@ -46,6 +46,9 @@ CurlStream::CurlStream(CurlStreamScheduler& scheduler, CurlStreamID streamID, UR - m_curlHandle->setUrl(WTFMove(url)); +@@ -49,6 +49,9 @@ CurlStream::CurlStream(CurlStreamScheduler& scheduler, CurlStreamID streamID, UR + m_curlHandle->disableServerTrustEvaluation(); m_curlHandle->enableConnectionOnly(); + if (ignoreCertificateErrors) @@ -8398,35 +7791,35 @@ index 7a7aa8371394ab6a66a66392cef306daeafe6811..44dd345cb40cc887343ce36ff29fb5ff auto errorCode = m_curlHandle->perform(); if (errorCode != CURLE_OK) { diff --git a/Source/WebCore/platform/network/curl/CurlStream.h b/Source/WebCore/platform/network/curl/CurlStream.h -index e8a32c26461b4308ea227c6df8c972439905d0bc..5da1a95615b04fca8402f53ecd7f05a006640372 100644 +index 7a2941730bbf90ddc77a13fe2ce35491fab65597..6dc64dff7e7f3dff5004465225cc307f5599cfba 100644 --- a/Source/WebCore/platform/network/curl/CurlStream.h +++ b/Source/WebCore/platform/network/curl/CurlStream.h -@@ -51,12 +51,12 @@ public: - virtual void didFail(CurlStreamID, CURLcode) = 0; +@@ -53,12 +53,12 @@ public: + virtual void didFail(CurlStreamID, CURLcode, CertificateInfo&&) = 0; }; -- static std::unique_ptr create(CurlStreamScheduler& scheduler, CurlStreamID streamID, URL&& url) -+ static std::unique_ptr create(CurlStreamScheduler& scheduler, CurlStreamID streamID, bool ignoreCertificateErrors, URL&& url) +- static std::unique_ptr create(CurlStreamScheduler& scheduler, CurlStreamID streamID, URL&& url, ServerTrustEvaluation serverTrustEvaluation) ++ static std::unique_ptr create(CurlStreamScheduler& scheduler, CurlStreamID streamID, bool ignoreCertificateErrors, URL&& url, ServerTrustEvaluation serverTrustEvaluation) { -- return makeUnique(scheduler, streamID, WTFMove(url)); -+ return makeUnique(scheduler, streamID, ignoreCertificateErrors, WTFMove(url)); +- return makeUnique(scheduler, streamID, WTFMove(url), serverTrustEvaluation); ++ return makeUnique(scheduler, streamID, ignoreCertificateErrors, WTFMove(url), serverTrustEvaluation); } -- CurlStream(CurlStreamScheduler&, CurlStreamID, URL&&); -+ CurlStream(CurlStreamScheduler&, CurlStreamID, bool ignoreCertificateErrors, URL&&); +- CurlStream(CurlStreamScheduler&, CurlStreamID, URL&&, ServerTrustEvaluation); ++ CurlStream(CurlStreamScheduler&, CurlStreamID, bool ignoreCertificateErrors, URL&&, ServerTrustEvaluation); virtual ~CurlStream(); void send(UniqueArray&&, size_t); diff --git a/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp b/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp -index d94ff4f9169a6c0b5adb9719f5506d0fb80e6f89..3f955607764d028807d150619bf7f49e08bc3e7e 100644 +index e798f286cc1d12ebdfc657bb16ebdb173b51b597..f21ee9733d4ce9355401fe01218da03ffefd159b 100644 --- a/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp +++ b/Source/WebCore/platform/network/curl/CurlStreamScheduler.cpp @@ -40,7 +40,7 @@ CurlStreamScheduler::~CurlStreamScheduler() ASSERT(isMainThread()); } --CurlStreamID CurlStreamScheduler::createStream(const URL& url, CurlStream::Client& client) -+CurlStreamID CurlStreamScheduler::createStream(const URL& url, bool ignoreCertificateErrors, CurlStream::Client& client) +-CurlStreamID CurlStreamScheduler::createStream(const URL& url, CurlStream::Client& client, CurlStream::ServerTrustEvaluation serverTrustEvaluation) ++CurlStreamID CurlStreamScheduler::createStream(const URL& url, bool ignoreCertificateErrors, CurlStream::Client& client, CurlStream::ServerTrustEvaluation serverTrustEvaluation) { ASSERT(isMainThread()); @@ -8434,31 +7827,31 @@ index d94ff4f9169a6c0b5adb9719f5506d0fb80e6f89..3f955607764d028807d150619bf7f49e auto streamID = m_currentStreamID; m_clientList.add(streamID, &client); -- callOnWorkerThread([this, streamID, url = url.isolatedCopy()]() mutable { -- m_streamList.add(streamID, CurlStream::create(*this, streamID, WTFMove(url))); -+ callOnWorkerThread([this, streamID, ignoreCertificateErrors, url = url.isolatedCopy()]() mutable { -+ m_streamList.add(streamID, CurlStream::create(*this, streamID, ignoreCertificateErrors, WTFMove(url))); +- callOnWorkerThread([this, streamID, url = url.isolatedCopy(), serverTrustEvaluation]() mutable { +- m_streamList.add(streamID, CurlStream::create(*this, streamID, WTFMove(url), serverTrustEvaluation)); ++ callOnWorkerThread([this, streamID, ignoreCertificateErrors, url = url.isolatedCopy(), serverTrustEvaluation]() mutable { ++ m_streamList.add(streamID, CurlStream::create(*this, streamID, ignoreCertificateErrors, WTFMove(url), serverTrustEvaluation)); }); return streamID; diff --git a/Source/WebCore/platform/network/curl/CurlStreamScheduler.h b/Source/WebCore/platform/network/curl/CurlStreamScheduler.h -index 423a2f825e7c3090fbdab8d2963ad1b45b71af9a..dfa43d953dda13ba9ab6a928bc6c7b2758267d7f 100644 +index ad1c5d0f6e9ef938636fff0c8de172de381f4a2e..e0a67aad31143eef5398261e5a20bab2cd6a430d 100644 --- a/Source/WebCore/platform/network/curl/CurlStreamScheduler.h +++ b/Source/WebCore/platform/network/curl/CurlStreamScheduler.h @@ -38,7 +38,7 @@ public: CurlStreamScheduler(); virtual ~CurlStreamScheduler(); -- WEBCORE_EXPORT CurlStreamID createStream(const URL&, CurlStream::Client&); -+ WEBCORE_EXPORT CurlStreamID createStream(const URL&, bool ignoreCertificateErrors, CurlStream::Client&); +- WEBCORE_EXPORT CurlStreamID createStream(const URL&, CurlStream::Client&, CurlStream::ServerTrustEvaluation = CurlStream::ServerTrustEvaluation::Enable); ++ WEBCORE_EXPORT CurlStreamID createStream(const URL&, bool ignoreCertificateErrors, CurlStream::Client&, CurlStream::ServerTrustEvaluation = CurlStream::ServerTrustEvaluation::Enable); WEBCORE_EXPORT void destroyStream(CurlStreamID); WEBCORE_EXPORT void send(CurlStreamID, UniqueArray&&, size_t); diff --git a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp -index 2d71778577d753be47359c7daf4a72d897914024..8f024d481bdbf9c8c870321a4528e110bef7f5b1 100644 +index f46f26a553e0634fd6a4d383c0821aadd504a399..738327163771952be91bc024e92070c015de2dd3 100644 --- a/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp +++ b/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp -@@ -141,6 +141,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con +@@ -136,6 +136,12 @@ void NetworkStorageSession::setCookieAcceptPolicy(CookieAcceptPolicy policy) con cookieDatabase().setAcceptPolicy(policy); } @@ -8472,10 +7865,10 @@ index 2d71778577d753be47359c7daf4a72d897914024..8f024d481bdbf9c8c870321a4528e110 { switch (cookieDatabase().acceptPolicy()) { diff --git a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp -index 7464b0fcd35df363dda1ade33d519cb3d5f17e46..442c65151fa3581e9f216af4a93cd8a88e078478 100644 +index e5e324e7e616f16ca13e41cd0b618eb946063995..0827159dea1d162aa9e5db36ac252b475081312c 100644 --- a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp +++ b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp -@@ -438,6 +438,30 @@ void NetworkStorageSession::replaceCookies(const Vector& cookies) +@@ -424,6 +424,30 @@ void NetworkStorageSession::replaceCookies(const Vector& cookies) g_signal_emit(jar, signalId, 0); } @@ -8507,7 +7900,7 @@ index 7464b0fcd35df363dda1ade33d519cb3d5f17e46..442c65151fa3581e9f216af4a93cd8a8 { GUniquePtr targetCookie(cookie.toSoupCookie()); diff --git a/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp b/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp -index 141fc2762f9ea1b56f706542dbc319d331fb23e4..59ac2caad62cac585d5f59f799db770fcb63de85 100644 +index 79648fbd61bff20a1496c3247219796fe713daed..fc4ca92aab0bd6fdf234a09d1d8b21c68bcea794 100644 --- a/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp +++ b/Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp @@ -39,6 +39,7 @@ @@ -9068,10 +8461,10 @@ index 0000000000000000000000000000000000000000..cf2b51f6f02837a1106f4d999f2f130e + +} // namespace WebCore diff --git a/Source/WebCore/rendering/RenderTextControl.cpp b/Source/WebCore/rendering/RenderTextControl.cpp -index 4c511db8dda43552564e17b389bb438d9c44da12..530cc0b6c0bb26cc4f53614019dd6a02e4d73e6a 100644 +index 06932aaafe53227c12c680f479f18de2ef943dc2..2817b2915640cf0ffc4f79e90729805082caefb2 100644 --- a/Source/WebCore/rendering/RenderTextControl.cpp +++ b/Source/WebCore/rendering/RenderTextControl.cpp -@@ -209,13 +209,13 @@ void RenderTextControl::layoutExcludedChildren(bool relayoutChildren) +@@ -210,13 +210,13 @@ void RenderTextControl::layoutExcludedChildren(bool relayoutChildren) } } @@ -9125,7 +8518,7 @@ index 1d8488e0d36288e09cd5662bd7f770ade95dfee3..dee07f87b47d62d4ef8ede45824bdb2f WorkerOrWorkletGlobalScope& m_globalScope; }; diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp -index 824d31987aa0a64cf709d54bbe43ae3d7f1c532e..9b8617411bd90b566b4283b49ae7557d6ff3b205 100644 +index 4b1ad56a8545bf97a0dd4e8d3cdec60525df0fc8..3c50334f1033183de466956d4e6e305f031195fb 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp @@ -97,6 +97,8 @@ @@ -9137,8 +8530,8 @@ index 824d31987aa0a64cf709d54bbe43ae3d7f1c532e..9b8617411bd90b566b4283b49ae7557d #endif #if ENABLE(APPLE_PAY_REMOTE_UI) -@@ -1065,6 +1067,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) - #endif +@@ -1067,6 +1069,14 @@ void NetworkConnectionToWebProcess::clearPageSpecificData(PageIdentifier pageID) + storageSession->clearPageSpecificDataForResourceLoadStatistics(pageID); } +void NetworkConnectionToWebProcess::setCookieFromResponse(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, const String& setCookieValue) @@ -9149,24 +8542,24 @@ index 824d31987aa0a64cf709d54bbe43ae3d7f1c532e..9b8617411bd90b566b4283b49ae7557d + networkStorageSession->setCookiesFromResponse(firstParty, sameSiteInfo, url, setCookieValue); +} + - #if ENABLE(TRACKING_PREVENTION) void NetworkConnectionToWebProcess::removeStorageAccessForFrame(FrameIdentifier frameID, PageIdentifier pageID) { + if (auto* storageSession = networkProcess().storageSession(m_sessionID)) diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -index 3772b447b4557cf3a5d1ed26adf36f93caaa83d6..c86332696a764efe91dbd47e33b6388c58504ce3 100644 +index b4bc09699705059954d2c6f9e867d10ea390d519..9949d08f3233615641af9b8b8ed0836082d2df35 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h -@@ -331,6 +331,8 @@ private: +@@ -339,6 +339,8 @@ private: void clearPageSpecificData(WebCore::PageIdentifier); + void setCookieFromResponse(const URL& firstParty, const WebCore::SameSiteInfo&, const URL& url, const String& setCookieValue); + - #if ENABLE(TRACKING_PREVENTION) void removeStorageAccessForFrame(WebCore::FrameIdentifier, WebCore::PageIdentifier); + void logUserInteraction(RegistrableDomain&&); diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in -index ace7031a520e2daeec7cb0ef328ba0514fec0108..687119f766a738e9477108d7e6de8ee925ab11ad 100644 +index 869d0f0f0bbe73364efe9022508fab74053a5afd..52c963bfc2f810d2cfca1a1a01c466a0cb479fbc 100644 --- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in @@ -71,6 +71,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver { @@ -9175,14 +8568,14 @@ index ace7031a520e2daeec7cb0ef328ba0514fec0108..687119f766a738e9477108d7e6de8ee9 + SetCookieFromResponse(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, String setCookieValue); + - #if ENABLE(TRACKING_PREVENTION) RemoveStorageAccessForFrame(WebCore::FrameIdentifier frameID, WebCore::PageIdentifier pageID); LogUserInteraction(WebCore::RegistrableDomain domain) + ResourceLoadStatisticsUpdated(Vector statistics) -> () diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -index 85d30e6299b237fd3148210f4452b454aaae72e3..7dbc44bc31819244f1ae50e72e51d17ff9e9babb 100644 +index 646d36119c6bf082f2cf7cedba71d2bc8961cf5a..b23b3db6f6b0954e8be1f8ffedcce54a8e69ec08 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp +++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp -@@ -625,6 +625,12 @@ void NetworkProcess::registrableDomainsExemptFromWebsiteDataDeletion(PAL::Sessio +@@ -622,6 +622,12 @@ void NetworkProcess::registrableDomainsExemptFromWebsiteDataDeletion(PAL::Sessio completionHandler({ }); } @@ -9192,11 +8585,11 @@ index 85d30e6299b237fd3148210f4452b454aaae72e3..7dbc44bc31819244f1ae50e72e51d17f + networkSession->setIgnoreCertificateErrors(ignore); +} + - #if ENABLE(TRACKING_PREVENTION) void NetworkProcess::dumpResourceLoadStatistics(PAL::SessionID sessionID, CompletionHandler&& completionHandler) { + if (auto* session = networkSession(sessionID)) { diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.h b/Source/WebKit/NetworkProcess/NetworkProcess.h -index 982ae2d8d112b351ca6ef47390e2a9abac9b40dc..740b62ad313335efe4a39a29626d6b3e079673be 100644 +index 93288ab85429a458b4a7158531265a639f46cdcf..4a8517c9102803d9004b7558146289b8befeba6f 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.h +++ b/Source/WebKit/NetworkProcess/NetworkProcess.h @@ -33,6 +33,7 @@ @@ -9207,7 +8600,7 @@ index 982ae2d8d112b351ca6ef47390e2a9abac9b40dc..740b62ad313335efe4a39a29626d6b3e #include "WebPageProxyIdentifier.h" #include "WebResourceLoadStatisticsStore.h" #include "WebsiteData.h" -@@ -80,6 +81,7 @@ class SessionID; +@@ -81,6 +82,7 @@ class SessionID; namespace WebCore { class CertificateInfo; @@ -9215,34 +8608,34 @@ index 982ae2d8d112b351ca6ef47390e2a9abac9b40dc..740b62ad313335efe4a39a29626d6b3e class CurlProxySettings; class ProtectionSpace; class NetworkStorageSession; -@@ -209,6 +211,9 @@ public: +@@ -217,6 +219,9 @@ public: void registrableDomainsWithLastAccessedTime(PAL::SessionID, CompletionHandler>)>&&); void registrableDomainsExemptFromWebsiteDataDeletion(PAL::SessionID, CompletionHandler)>&&); + + void setIgnoreCertificateErrors(PAL::SessionID, bool); + - #if ENABLE(TRACKING_PREVENTION) void clearPrevalentResource(PAL::SessionID, RegistrableDomain&&, CompletionHandler&&); void clearUserInteraction(PAL::SessionID, RegistrableDomain&&, CompletionHandler&&); + void deleteAndRestrictWebsiteDataForRegistrableDomains(PAL::SessionID, OptionSet, RegistrableDomainsToDeleteOrRestrictWebsiteDataFor&&, bool shouldNotifyPage, CompletionHandler&&)>&&); diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in -index 2e602dec7f870f03528023d26df86b47a7bb5a9c..319e65680c3615d9ee8c9fbefd5b56dba631c646 100644 +index f25091cbaa770577d91587dade186ed48b6cdd85..b041386dd2ad05a1bb015b6ac2c92490aafbcc15 100644 --- a/Source/WebKit/NetworkProcess/NetworkProcess.messages.in +++ b/Source/WebKit/NetworkProcess/NetworkProcess.messages.in -@@ -85,6 +85,8 @@ messages -> NetworkProcess LegacyReceiver { +@@ -83,6 +83,8 @@ messages -> NetworkProcess LegacyReceiver { SetInspectionForServiceWorkersAllowed(PAL::SessionID sessionID, bool inspectable) #endif + SetIgnoreCertificateErrors(PAL::SessionID sessionID, bool ignoreTLSErrors) + - #if ENABLE(TRACKING_PREVENTION) ClearPrevalentResource(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () ClearUserInteraction(PAL::SessionID sessionID, WebCore::RegistrableDomain resourceDomain) -> () + DumpResourceLoadStatistics(PAL::SessionID sessionID) -> (String dumpedStatistics) diff --git a/Source/WebKit/NetworkProcess/NetworkSession.h b/Source/WebKit/NetworkProcess/NetworkSession.h -index c8e0c534db8fee2a0f3c6b2b507bf7bdace88aa1..b75b615efdaea496190a8c88192701183630af83 100644 +index 9d3bea122c7ccd7279efd5a8929105c172728f55..ee2ffae0df4b4f667e67fae42939c265a3425781 100644 --- a/Source/WebKit/NetworkProcess/NetworkSession.h +++ b/Source/WebKit/NetworkProcess/NetworkSession.h -@@ -205,6 +205,9 @@ public: +@@ -204,6 +204,9 @@ public: void lowMemoryHandler(WTF::Critical); @@ -9252,7 +8645,7 @@ index c8e0c534db8fee2a0f3c6b2b507bf7bdace88aa1..b75b615efdaea496190a8c8819270118 #if ENABLE(SERVICE_WORKER) void removeSoftUpdateLoader(ServiceWorkerSoftUpdateLoader* loader) { m_softUpdateLoaders.remove(loader); } void addNavigationPreloaderTask(ServiceWorkerFetchTask&); -@@ -326,6 +329,7 @@ protected: +@@ -317,6 +320,7 @@ protected: bool m_privateClickMeasurementDebugModeEnabled { false }; std::optional m_ephemeralMeasurement; bool m_isRunningEphemeralMeasurementTest { false }; @@ -9261,10 +8654,10 @@ index c8e0c534db8fee2a0f3c6b2b507bf7bdace88aa1..b75b615efdaea496190a8c8819270118 HashSet> m_keptAliveLoads; diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -index 51f26de4a6aa90dc7406e3e4e4d2b461276f7cc9..da5dadd438075c8aceed417285c33d1b31737e69 100644 +index b503a62c1763d89def8e3d223ebae8e06d2691c2..222c0efa62a4b5f3fcad8a9915a1d7a6b3ae5c49 100644 --- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm +++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm -@@ -766,6 +766,8 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece +@@ -752,6 +752,8 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didRece if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { sessionCocoa->setClientAuditToken(challenge); @@ -9273,7 +8666,7 @@ index 51f26de4a6aa90dc7406e3e4e4d2b461276f7cc9..da5dadd438075c8aceed417285c33d1b NSURLSessionTaskTransactionMetrics *metrics = task._incompleteTaskMetrics.transactionMetrics.lastObject; auto tlsVersion = (tls_protocol_version_t)metrics.negotiatedTLSProtocolVersion.unsignedShortValue; -@@ -1105,6 +1107,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -1091,6 +1093,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END resourceResponse.setDeprecatedNetworkLoadMetrics(WebCore::copyTimingData(taskMetrics, networkDataTask->networkLoadMetrics())); @@ -9288,11 +8681,11 @@ index 51f26de4a6aa90dc7406e3e4e4d2b461276f7cc9..da5dadd438075c8aceed417285c33d1b #if !LOG_DISABLED LOG(NetworkSession, "%llu didReceiveResponse completionHandler (%d)", taskIdentifier, policyAction); diff --git a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp -index 6307e164caa300d25db023b3b8ebcdebe8377df2..9d4f0a20d40e3fc0ca62c62d94796936972729b3 100644 +index 576f93777989c0203c5c0f47ac3fcdddd880f12d..44d20997cc6f5e147adaf2c8235fad929f2e3b04 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp -@@ -82,10 +82,18 @@ NetworkDataTaskCurl::NetworkDataTaskCurl(NetworkSession& session, NetworkDataTas - #endif +@@ -80,10 +80,18 @@ NetworkDataTaskCurl::NetworkDataTaskCurl(NetworkSession& session, NetworkDataTas + blockCookies(); restrictRequestReferrerToOriginIfNeeded(request); - m_curlRequest = createCurlRequest(WTFMove(request)); @@ -9314,7 +8707,7 @@ index 6307e164caa300d25db023b3b8ebcdebe8377df2..9d4f0a20d40e3fc0ca62c62d94796936 } } -@@ -163,6 +171,7 @@ void NetworkDataTaskCurl::curlDidReceiveResponse(CurlRequest& request, CurlRespo +@@ -161,6 +169,7 @@ void NetworkDataTaskCurl::curlDidReceiveResponse(CurlRequest& request, CurlRespo updateNetworkLoadMetrics(receivedResponse.networkLoadMetrics); m_response.setDeprecatedNetworkLoadMetrics(Box::create(WTFMove(receivedResponse.networkLoadMetrics))); @@ -9322,7 +8715,7 @@ index 6307e164caa300d25db023b3b8ebcdebe8377df2..9d4f0a20d40e3fc0ca62c62d94796936 handleCookieHeaders(request.resourceRequest(), receivedResponse); -@@ -287,6 +296,36 @@ bool NetworkDataTaskCurl::shouldRedirectAsGET(const ResourceRequest& request, bo +@@ -285,6 +294,36 @@ bool NetworkDataTaskCurl::shouldRedirectAsGET(const ResourceRequest& request, bo return false; } @@ -9359,7 +8752,7 @@ index 6307e164caa300d25db023b3b8ebcdebe8377df2..9d4f0a20d40e3fc0ca62c62d94796936 void NetworkDataTaskCurl::invokeDidReceiveResponse() { didReceiveResponse(ResourceResponse(m_response), NegotiatedLegacyTLS::No, PrivateRelayed::No, [this, protectedThis = Ref { *this }](PolicyAction policyAction) { -@@ -317,6 +356,8 @@ void NetworkDataTaskCurl::invokeDidReceiveResponse() +@@ -315,6 +354,8 @@ void NetworkDataTaskCurl::invokeDidReceiveResponse() downloadPtr->didCreateDestination(m_pendingDownloadLocation); if (m_curlRequest) m_curlRequest->completeDidReceiveResponse(); @@ -9368,7 +8761,7 @@ index 6307e164caa300d25db023b3b8ebcdebe8377df2..9d4f0a20d40e3fc0ca62c62d94796936 break; } default: -@@ -405,6 +446,8 @@ void NetworkDataTaskCurl::willPerformHTTPRedirection() +@@ -401,6 +442,8 @@ void NetworkDataTaskCurl::willPerformHTTPRedirection() m_curlRequest->setUserPass(m_initialCredential.user(), m_initialCredential.password()); m_curlRequest->setAuthenticationScheme(ProtectionSpace::AuthenticationScheme::HTTPBasic); } @@ -9378,7 +8771,7 @@ index 6307e164caa300d25db023b3b8ebcdebe8377df2..9d4f0a20d40e3fc0ca62c62d94796936 if (m_state != State::Suspended) { m_state = State::Suspended; diff --git a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h -index 04680300ab3122646a861b3f23276339e2fba170..27a3b0d27a2700fabbf36bac4972774baf069d92 100644 +index bfff08efb10d4d6cd1a27755403ed53ed58ce919..1a59755f684229bd47fd70369e4a9d4282950ef7 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h +++ b/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h @@ -28,6 +28,7 @@ @@ -9419,58 +8812,80 @@ index 04680300ab3122646a861b3f23276339e2fba170..27a3b0d27a2700fabbf36bac4972774b bool m_blockingCookies { false }; diff --git a/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp b/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp -index 6fb944af81e2af05e231b1d0ec0700cc59e532e9..ac862e21506d6250cb621e1e8ccc9b14612c8d0c 100644 +index 8dc0bcdb1cdfa86d04fc7e4e3718f1fe2c457c80..21180451b653bdd3596164a9b60d34d73d1eebfc 100644 --- a/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp -@@ -66,7 +66,7 @@ void NetworkSessionCurl::clearAlternativeServices(WallTime) +@@ -65,7 +65,7 @@ void NetworkSessionCurl::clearAlternativeServices(WallTime) - std::unique_ptr NetworkSessionCurl::createWebSocketTask(WebPageProxyIdentifier, std::optional, std::optional, NetworkSocketChannel& channel, const WebCore::ResourceRequest& request, const String& protocol, const WebCore::ClientOrigin&, bool, bool, OptionSet, ShouldRelaxThirdPartyCookieBlocking, StoredCredentialsPolicy) + std::unique_ptr NetworkSessionCurl::createWebSocketTask(WebPageProxyIdentifier webPageProxyID, std::optional, std::optional, NetworkSocketChannel& channel, const WebCore::ResourceRequest& request, const String& protocol, const WebCore::ClientOrigin& clientOrigin, bool, bool, OptionSet, ShouldRelaxThirdPartyCookieBlocking, StoredCredentialsPolicy) { -- return makeUnique(channel, request, protocol); -+ return makeUnique(channel, request, protocol, ignoreCertificateErrors()); +- return makeUnique(channel, webPageProxyID, request, protocol, clientOrigin); ++ return makeUnique(channel, webPageProxyID, request, protocol, ignoreCertificateErrors(), clientOrigin); } - } // namespace WebKit + void NetworkSessionCurl::didReceiveChallenge(WebSocketTask& webSocketTask, WebCore::AuthenticationChallenge&& challenge, CompletionHandler&& challengeCompletionHandler) diff --git a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp -index 40e466a49926c304695e0e86c57fbfeef80ceec1..3210765c6a8327b17849530cf13808c187b667ea 100644 +index 16f8fa0df719a97fb7c37af8d1e8dd2543f9db2c..9ebbb2c206e5223d70b60f5819aafc9189018e7a 100644 --- a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp +++ b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp -@@ -34,7 +34,7 @@ +@@ -35,11 +35,12 @@ namespace WebKit { --WebSocketTask::WebSocketTask(NetworkSocketChannel& channel, const WebCore::ResourceRequest& request, const String& protocol) -+WebSocketTask::WebSocketTask(NetworkSocketChannel& channel, const WebCore::ResourceRequest& request, const String& protocol, bool ignoreCertificateErrors) +-WebSocketTask::WebSocketTask(NetworkSocketChannel& channel, WebPageProxyIdentifier webProxyPageID, const WebCore::ResourceRequest& request, const String& protocol, const WebCore::ClientOrigin& clientOrigin) ++WebSocketTask::WebSocketTask(NetworkSocketChannel& channel, WebPageProxyIdentifier webProxyPageID, const WebCore::ResourceRequest& request, const String& protocol, bool ignoreCertificateErrors, const WebCore::ClientOrigin& clientOrigin) : m_channel(channel) + , m_webProxyPageID(webProxyPageID) , m_request(request.isolatedCopy()) , m_protocol(protocol) -@@ -43,7 +43,7 @@ WebSocketTask::WebSocketTask(NetworkSocketChannel& channel, const WebCore::Resou - if (request.url().protocolIs("wss"_s) && WebCore::DeprecatedGlobalSettings::allowsAnySSLCertificate()) - WebCore::CurlContext::singleton().sslHandle().setIgnoreSSLErrors(true); ++ , m_ignoreCertificateErrors(ignoreCertificateErrors) + , m_scheduler(WebCore::CurlContext::singleton().streamScheduler()) + { + // We use topOrigin in case of service worker websocket connections, for which pageID does not link to a real page. +@@ -47,7 +48,7 @@ WebSocketTask::WebSocketTask(NetworkSocketChannel& channel, WebPageProxyIdentifi + if (clientOrigin.topOrigin == clientOrigin.clientOrigin) + m_topOrigin = clientOrigin.topOrigin; - m_streamID = m_scheduler.createStream(request.url(), *this); + m_streamID = m_scheduler.createStream(request.url(), ignoreCertificateErrors, *this); m_channel.didSendHandshakeRequest(WebCore::ResourceRequest(m_request)); } +@@ -246,7 +247,7 @@ void WebSocketTask::tryServerTrustEvaluation(WebCore::AuthenticationChallenge&& + { + networkSession()->didReceiveChallenge(*this, WTFMove(challenge), [this, errorReason = WTFMove(errorReason)](WebKit::AuthenticationChallengeDisposition disposition, const WebCore::Credential& credential) mutable { + if (disposition == AuthenticationChallengeDisposition::UseCredential && !credential.isEmpty()) +- m_streamID = m_scheduler.createStream(m_request.url(), *this, WebCore::CurlStream::ServerTrustEvaluation::Disable); ++ m_streamID = m_scheduler.createStream(m_request.url(), m_ignoreCertificateErrors, *this, WebCore::CurlStream::ServerTrustEvaluation::Disable); + else + didFail(WTFMove(errorReason)); + }); diff --git a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h -index c74bf9aec3de138ca91699b822e09a6243e3f229..df1a8367585e3f43c490880ebe08b95c892a3006 100644 +index 973e36ff935507522ae3e9243094ee1f0398e7aa..a6025da80f44d82c1459d468ca3ab4f97f298dd4 100644 --- a/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h +++ b/Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.h -@@ -47,7 +47,7 @@ struct SessionSet; +@@ -50,7 +50,7 @@ struct SessionSet; class WebSocketTask : public CanMakeWeakPtr, public WebCore::CurlStream::Client { WTF_MAKE_FAST_ALLOCATED; public: -- WebSocketTask(NetworkSocketChannel&, const WebCore::ResourceRequest&, const String& protocol); -+ WebSocketTask(NetworkSocketChannel&, const WebCore::ResourceRequest&, const String& protocol, bool ignoreCertificateErrors); +- WebSocketTask(NetworkSocketChannel&, WebPageProxyIdentifier, const WebCore::ResourceRequest&, const String& protocol, const WebCore::ClientOrigin&); ++ WebSocketTask(NetworkSocketChannel&, WebPageProxyIdentifier, const WebCore::ResourceRequest&, const String& protocol, bool ignoreCertificateErrors, const WebCore::ClientOrigin&); virtual ~WebSocketTask(); void sendString(const IPC::DataReference&, CompletionHandler&&); +@@ -103,6 +103,7 @@ private: + WebPageProxyIdentifier m_webProxyPageID; + WebCore::ResourceRequest m_request; + String m_protocol; ++ bool m_ignoreCertificateErrors { false }; + WebCore::SecurityOriginData m_topOrigin; + + WebCore::CurlStreamScheduler& m_scheduler; diff --git a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp -index 04fd5ee23155aa792821b7da717bbb2fb09409c1..76a314a450c7d933c8e86de9915044300028954d 100644 +index e3bcfbf4553ebe624984805d01ed52f0039ef654..45142c1dadf65aeaeb5a20b3e0a31eae6ea3cf18 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp -@@ -469,6 +469,8 @@ void NetworkDataTaskSoup::didSendRequest(GRefPtr&& inputStream) +@@ -467,6 +467,8 @@ void NetworkDataTaskSoup::didSendRequest(GRefPtr&& inputStream) m_networkLoadMetrics.failsTAOCheck = !passesTimingAllowOriginCheck(m_response, *origin); } @@ -9479,7 +8894,7 @@ index 04fd5ee23155aa792821b7da717bbb2fb09409c1..76a314a450c7d933c8e86de991504430 dispatchDidReceiveResponse(); } -@@ -566,6 +568,8 @@ bool NetworkDataTaskSoup::acceptCertificate(GTlsCertificate* certificate, GTlsCe +@@ -564,6 +566,8 @@ bool NetworkDataTaskSoup::acceptCertificate(GTlsCertificate* certificate, GTlsCe { ASSERT(m_soupMessage); URL url = soupURIToURL(soup_message_get_uri(m_soupMessage.get())); @@ -9489,7 +8904,7 @@ index 04fd5ee23155aa792821b7da717bbb2fb09409c1..76a314a450c7d933c8e86de991504430 if (!error) return true; diff --git a/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp -index 13e557214edc7f060dd01ef10c2ab97fe0e9c41e..6ec6ea5328eab0cc9f5247ee14e15c560a406d1b 100644 +index 3fa6072886e6d34d53c63fffb131d51a197540fd..72d919c0043fb524109aed043897195a78563198 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp @@ -99,6 +99,11 @@ void NetworkSessionSoup::clearCredentials(WallTime) @@ -9550,10 +8965,10 @@ index 13e557214edc7f060dd01ef10c2ab97fe0e9c41e..6ec6ea5328eab0cc9f5247ee14e15c56 } diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake -index 2ba3f0bfd3e479df2b5c298b1bf83100ccc78c09..4445671e17bba56998300a746ec2e0735e3faaac 100644 +index a66d97107bcd82080d0abdd1388812bc78e92b8a..b95453016bee222330e91c9dc6c35f001b602e00 100644 --- a/Source/WebKit/PlatformGTK.cmake +++ b/Source/WebKit/PlatformGTK.cmake -@@ -308,6 +308,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -316,6 +316,9 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GSTREAMER_PBUTILS_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9563,7 +8978,7 @@ index 2ba3f0bfd3e479df2b5c298b1bf83100ccc78c09..4445671e17bba56998300a746ec2e073 ) list(APPEND WebKit_INTERFACE_INCLUDE_DIRECTORIES -@@ -363,6 +366,9 @@ if (USE_LIBWEBRTC) +@@ -371,6 +374,9 @@ if (USE_LIBWEBRTC) list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES "${THIRDPARTY_DIR}/libwebrtc/Source/" "${THIRDPARTY_DIR}/libwebrtc/Source/webrtc" @@ -9573,7 +8988,7 @@ index 2ba3f0bfd3e479df2b5c298b1bf83100ccc78c09..4445671e17bba56998300a746ec2e073 ) endif () -@@ -406,6 +412,12 @@ else () +@@ -414,6 +420,12 @@ else () set(WebKitGTK_ENUM_HEADER_TEMPLATE ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitEnumTypesGtk3.h.in) endif () @@ -9587,10 +9002,10 @@ index 2ba3f0bfd3e479df2b5c298b1bf83100ccc78c09..4445671e17bba56998300a746ec2e073 set(WebKitGTK_ENUM_GENERATION_HEADERS ${WebKitGTK_INSTALLED_HEADERS}) list(REMOVE_ITEM WebKitGTK_ENUM_GENERATION_HEADERS ${WebKitGTK_DERIVED_SOURCES_DIR}/webkit/WebKitEnumTypes.h) diff --git a/Source/WebKit/PlatformWPE.cmake b/Source/WebKit/PlatformWPE.cmake -index 0c3e4b7cf41fe811fcc5117200b75a8beaec8590..d425d830c7f3d0e9a591d02ac8974b64a90f4221 100644 +index 960995e2b58396ad9aab82576a01600453c13241..1376224cadb398b84c305a319b4b71919cc152f5 100644 --- a/Source/WebKit/PlatformWPE.cmake +++ b/Source/WebKit/PlatformWPE.cmake -@@ -193,6 +193,7 @@ set(WPE_API_HEADER_TEMPLATES +@@ -198,6 +198,7 @@ set(WPE_API_HEADER_TEMPLATES ${WEBKIT_DIR}/UIProcess/API/glib/WebKitWindowProperties.h.in ${WEBKIT_DIR}/UIProcess/API/glib/WebKitWebsitePolicies.h.in ${WEBKIT_DIR}/UIProcess/API/glib/webkit.h.in @@ -9598,15 +9013,7 @@ index 0c3e4b7cf41fe811fcc5117200b75a8beaec8590..d425d830c7f3d0e9a591d02ac8974b64 ) if (ENABLE_2022_GLIB_API) -@@ -370,6 +371,7 @@ list(APPEND WebKit_PRIVATE_INCLUDE_DIRECTORIES - "${WEBKIT_DIR}/UIProcess/Launcher/libwpe" - "${WEBKIT_DIR}/UIProcess/Notifications/glib/" - "${WEBKIT_DIR}/UIProcess/geoclue" -+ "${WEBKIT_DIR}/UIProcess/glib" - "${WEBKIT_DIR}/UIProcess/gstreamer" - "${WEBKIT_DIR}/UIProcess/linux" - "${WEBKIT_DIR}/UIProcess/soup" -@@ -393,8 +395,17 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES +@@ -399,8 +400,17 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} @@ -9846,10 +9253,10 @@ index 72ad2880160a374e8fa663e561d59becf9d2f36d..372ae6953199245fe4fc55a49813c7ca #endif }; diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -index 8da28fdec08100d09523701e34a5259771d3a88b..6efd40a3d0ea091bc47f5f9b8838abb38abc8192 100644 +index 08ff2201710e5544ebbd02f4d9cb9d25208ebe11..e15d79e4c87f4956f7276d03edfeffbac43da0f8 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.cpp +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.cpp -@@ -190,6 +190,10 @@ +@@ -192,6 +192,10 @@ #include #endif @@ -9861,10 +9268,10 @@ index 8da28fdec08100d09523701e34a5259771d3a88b..6efd40a3d0ea091bc47f5f9b8838abb3 namespace IPC { diff --git a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -index a6776eaf01794b6c3fdba691e1d8ef7019988906..e6a185b040a776cab3de6791978ad2743c1456ca 100644 +index e9e076535ccc3ab4b4c1a6ed491d167fa66b0f87..7beddce3b119cd7c4e4520afd6fc5bf8e4112485 100644 --- a/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in +++ b/Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in -@@ -2400,6 +2400,9 @@ class WebCore::AuthenticationChallenge { +@@ -2484,6 +2484,9 @@ class WebCore::AuthenticationChallenge { class WebCore::DragData { #if PLATFORM(COCOA) String pasteboardName(); @@ -9874,14 +9281,14 @@ index a6776eaf01794b6c3fdba691e1d8ef7019988906..e6a185b040a776cab3de6791978ad274 #endif WebCore::IntPoint clientPosition(); WebCore::IntPoint globalPosition(); -@@ -2927,6 +2930,7 @@ using WebCore::ResourceResponseBase::Source = WebCore::ResourceResponseBaseSourc - AtomString m_httpStatusText; - AtomString m_httpVersion; - WebCore::HTTPHeaderMap m_httpHeaderFields; -+ WebCore::HTTPHeaderMap m_httpRequestHeaderFields; - Box m_networkLoadMetrics; - - short m_httpStatusCode; +@@ -3040,6 +3043,7 @@ header: + String httpStatusText; + String httpVersion; + WebCore::HTTPHeaderMap httpHeaderFields; ++ WebCore::HTTPHeaderMap httpRequestHeaderFields; + std::optional networkLoadMetrics; + WebCore::ResourceResponseBase::Source source; + WebCore::ResourceResponseBase::Type type; diff --git a/Source/WebKit/Shared/WebKeyboardEvent.cpp b/Source/WebKit/Shared/WebKeyboardEvent.cpp index b80bcb39473ecec86be5671f38698130bd9acbf3..d886cbac5f4c073e14e12f257fa920419ea0cf39 100644 --- a/Source/WebKit/Shared/WebKeyboardEvent.cpp @@ -10000,10 +9407,10 @@ index a38fc7fde1d5f1a1fd04ae1f84eb59c1501deec5..d3669c3d3bad91468fbbeeaa328c3610 void setPosition(const WebCore::IntPoint& position) { m_position = position; } const WebCore::IntPoint& globalPosition() const { return m_globalPosition; } diff --git a/Source/WebKit/Shared/WebPageCreationParameters.h b/Source/WebKit/Shared/WebPageCreationParameters.h -index 843ab2240d8d6718e9d542854f82e85eac528594..fed43c932c5d87ce60eb010f2498ba4d25fd4f8d 100644 +index b71d3c999fb3e7875e5b1e287b5b87f1b97e85f0..aedde190cc609a48a9f1051cd7cf2b570b22a4b3 100644 --- a/Source/WebKit/Shared/WebPageCreationParameters.h +++ b/Source/WebKit/Shared/WebPageCreationParameters.h -@@ -271,6 +271,8 @@ struct WebPageCreationParameters { +@@ -280,6 +280,8 @@ struct WebPageCreationParameters { bool httpsUpgradeEnabled { true }; @@ -10013,10 +9420,10 @@ index 843ab2240d8d6718e9d542854f82e85eac528594..fed43c932c5d87ce60eb010f2498ba4d bool allowsDeprecatedSynchronousXMLHttpRequestDuringUnload { false }; #endif diff --git a/Source/WebKit/Shared/WebPageCreationParameters.serialization.in b/Source/WebKit/Shared/WebPageCreationParameters.serialization.in -index 40622df2440f79bb53d8dce8d454f781c52a4140..224797f7e758a989b7128f1e751dbe13f579171a 100644 +index 4e87205e89a1fba4e8b2fefb254c4fc77552644a..de7076e0970f6c24ab388c59635ff70f5b6b2ac8 100644 --- a/Source/WebKit/Shared/WebPageCreationParameters.serialization.in +++ b/Source/WebKit/Shared/WebPageCreationParameters.serialization.in -@@ -214,6 +214,8 @@ struct WebKit::WebPageCreationParameters { +@@ -218,6 +218,8 @@ headers: "ArgumentCoders.h" bool httpsUpgradeEnabled; @@ -10295,10 +9702,10 @@ index 665b9d6a9de903ee9ad6dc53e15ab421b6cb769f..2b129963074d2ceec1c05f3a637c5e1c #endif // ENABLE(TOUCH_EVENTS) diff --git a/Source/WebKit/Sources.txt b/Source/WebKit/Sources.txt -index 54ba22b9092ef5db4b89cab56ca7c23bff325b74..93f49bd8b4bd7f3f367433931eb923c6dd49bef4 100644 +index 1790ef11dd6466bcdae4bf577fcc2403e2d5e8f6..b67201a17f528823345db0d8b0a835218e80daef 100644 --- a/Source/WebKit/Sources.txt +++ b/Source/WebKit/Sources.txt -@@ -386,6 +386,7 @@ Shared/XR/XRDeviceProxy.cpp +@@ -376,6 +376,7 @@ Shared/XR/XRDeviceProxy.cpp UIProcess/AuxiliaryProcessProxy.cpp UIProcess/BackgroundProcessResponsivenessTimer.cpp UIProcess/BrowsingContextGroup.cpp @@ -10306,7 +9713,7 @@ index 54ba22b9092ef5db4b89cab56ca7c23bff325b74..93f49bd8b4bd7f3f367433931eb923c6 UIProcess/DeviceIdHashSaltStorage.cpp UIProcess/DisplayLink.cpp UIProcess/DisplayLinkProcessProxyClient.cpp -@@ -393,16 +394,20 @@ UIProcess/DrawingAreaProxy.cpp +@@ -383,16 +384,20 @@ UIProcess/DrawingAreaProxy.cpp UIProcess/FrameLoadState.cpp UIProcess/GeolocationPermissionRequestManagerProxy.cpp UIProcess/GeolocationPermissionRequestProxy.cpp @@ -10327,7 +9734,7 @@ index 54ba22b9092ef5db4b89cab56ca7c23bff325b74..93f49bd8b4bd7f3f367433931eb923c6 UIProcess/RemotePageDrawingAreaProxy.cpp UIProcess/RemotePageProxy.cpp UIProcess/ResponsivenessTimer.cpp -@@ -446,6 +451,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp +@@ -436,6 +441,8 @@ UIProcess/WebOpenPanelResultListenerProxy.cpp UIProcess/WebPageDiagnosticLoggingClient.cpp UIProcess/WebPageGroup.cpp UIProcess/WebPageInjectedBundleClient.cpp @@ -10336,7 +9743,7 @@ index 54ba22b9092ef5db4b89cab56ca7c23bff325b74..93f49bd8b4bd7f3f367433931eb923c6 UIProcess/WebPageProxy.cpp UIProcess/WebPageProxyMessageReceiverRegistration.cpp UIProcess/WebPasteboardProxy.cpp -@@ -577,7 +584,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp +@@ -567,7 +574,11 @@ UIProcess/Inspector/WebInspectorUtilities.cpp UIProcess/Inspector/WebPageDebuggable.cpp UIProcess/Inspector/WebPageInspectorController.cpp @@ -10349,10 +9756,10 @@ index 54ba22b9092ef5db4b89cab56ca7c23bff325b74..93f49bd8b4bd7f3f367433931eb923c6 UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp UIProcess/Media/MediaUsageManager.cpp diff --git a/Source/WebKit/SourcesCocoa.txt b/Source/WebKit/SourcesCocoa.txt -index 86462cd6ccdea1e2e0d880522c0b45c89a0ae95e..074368b88c78b253c800907a8a2c18fa3a1f60ba 100644 +index 65a44447eae5a192a74ae4a05be7da2d68d99d28..ac0eb6d33feb5e601a4c58cc36243b1b9f8b56ca 100644 --- a/Source/WebKit/SourcesCocoa.txt +++ b/Source/WebKit/SourcesCocoa.txt -@@ -258,6 +258,7 @@ UIProcess/API/Cocoa/_WKApplicationManifest.mm +@@ -261,6 +261,7 @@ UIProcess/API/Cocoa/_WKArchiveExclusionRule.mm UIProcess/API/Cocoa/_WKAttachment.mm UIProcess/API/Cocoa/_WKAutomationSession.mm UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.mm @@ -10360,7 +9767,7 @@ index 86462cd6ccdea1e2e0d880522c0b45c89a0ae95e..074368b88c78b253c800907a8a2c18fa UIProcess/API/Cocoa/_WKContentRuleListAction.mm UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm UIProcess/API/Cocoa/_WKCustomHeaderFields.mm @no-unify -@@ -433,6 +434,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm +@@ -437,6 +438,7 @@ UIProcess/Inspector/ios/WKInspectorHighlightView.mm UIProcess/Inspector/ios/WKInspectorNodeSearchGestureRecognizer.mm UIProcess/Inspector/mac/RemoteWebInspectorUIProxyMac.mm @@ -10369,7 +9776,7 @@ index 86462cd6ccdea1e2e0d880522c0b45c89a0ae95e..074368b88c78b253c800907a8a2c18fa UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm UIProcess/Inspector/mac/WKInspectorViewController.mm diff --git a/Source/WebKit/SourcesGTK.txt b/Source/WebKit/SourcesGTK.txt -index 9dbd29a59aecfbbf84d41117eccb3ee7d7b5f68d..e871cb46c70193613d91a8367acbf9e791f26eea 100644 +index 37f7f79dfbdb9913fe96b0393f6a2547501f5c6e..f34cf6031976d89f73f872ba4029b79349e119de 100644 --- a/Source/WebKit/SourcesGTK.txt +++ b/Source/WebKit/SourcesGTK.txt @@ -136,6 +136,7 @@ UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify @@ -10380,7 +9787,7 @@ index 9dbd29a59aecfbbf84d41117eccb3ee7d7b5f68d..e871cb46c70193613d91a8367acbf9e7 UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -263,6 +264,7 @@ UIProcess/glib/DisplayLinkGLib.cpp +@@ -264,6 +265,7 @@ UIProcess/glib/DisplayLinkGLib.cpp UIProcess/glib/DisplayVBlankMonitor.cpp UIProcess/glib/DisplayVBlankMonitorDRM.cpp UIProcess/glib/DisplayVBlankMonitorTimer.cpp @@ -10388,7 +9795,7 @@ index 9dbd29a59aecfbbf84d41117eccb3ee7d7b5f68d..e871cb46c70193613d91a8367acbf9e7 UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp UIProcess/glib/WebProcessProxyGLib.cpp -@@ -279,6 +281,7 @@ UIProcess/gtk/ClipboardGtk4.cpp @no-unify +@@ -280,6 +282,7 @@ UIProcess/gtk/ClipboardGtk4.cpp @no-unify UIProcess/gtk/WebDateTimePickerGtk.cpp UIProcess/gtk/GtkSettingsManager.cpp UIProcess/gtk/HardwareAccelerationManager.cpp @@ -10396,7 +9803,7 @@ index 9dbd29a59aecfbbf84d41117eccb3ee7d7b5f68d..e871cb46c70193613d91a8367acbf9e7 UIProcess/gtk/KeyBindingTranslator.cpp UIProcess/gtk/PointerLockManager.cpp @no-unify UIProcess/gtk/PointerLockManagerWayland.cpp @no-unify -@@ -291,6 +294,8 @@ UIProcess/gtk/ViewGestureControllerGtk.cpp +@@ -292,6 +295,8 @@ UIProcess/gtk/ViewGestureControllerGtk.cpp UIProcess/gtk/WebColorPickerGtk.cpp UIProcess/gtk/WebContextMenuProxyGtk.cpp UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp @@ -10406,10 +9813,10 @@ index 9dbd29a59aecfbbf84d41117eccb3ee7d7b5f68d..e871cb46c70193613d91a8367acbf9e7 UIProcess/gtk/WebPasteboardProxyGtk.cpp UIProcess/gtk/WebPopupMenuProxyGtk.cpp diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt -index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d874c1ec1 100644 +index 92cad8cba5e36ffac473217f9120319bd7c839e7..fb42fe7eafe2c49891e31e1d456fef186b247064 100644 --- a/Source/WebKit/SourcesWPE.txt +++ b/Source/WebKit/SourcesWPE.txt -@@ -92,6 +92,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp +@@ -91,6 +91,7 @@ Shared/glib/ProcessExecutablePathGLib.cpp Shared/glib/UserMessage.cpp Shared/glib/WebContextMenuItemGlib.cpp @@ -10417,7 +9824,7 @@ index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp Shared/libwpe/NativeWebMouseEventLibWPE.cpp Shared/libwpe/NativeWebTouchEventLibWPE.cpp -@@ -131,6 +132,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify +@@ -130,6 +131,7 @@ UIProcess/API/glib/WebKitAuthenticationRequest.cpp @no-unify UIProcess/API/glib/WebKitAutomationSession.cpp @no-unify UIProcess/API/glib/WebKitBackForwardList.cpp @no-unify UIProcess/API/glib/WebKitBackForwardListItem.cpp @no-unify @@ -10425,7 +9832,7 @@ index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d UIProcess/API/glib/WebKitContextMenuClient.cpp @no-unify UIProcess/API/glib/WebKitCookieManager.cpp @no-unify UIProcess/API/glib/WebKitCredential.cpp @no-unify -@@ -164,6 +166,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify +@@ -163,6 +165,7 @@ UIProcess/API/glib/WebKitOptionMenu.cpp @no-unify UIProcess/API/glib/WebKitOptionMenuItem.cpp @no-unify UIProcess/API/glib/WebKitPermissionRequest.cpp @no-unify UIProcess/API/glib/WebKitPermissionStateQuery.cpp @no-unify @@ -10433,7 +9840,7 @@ index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d UIProcess/API/glib/WebKitPolicyDecision.cpp @no-unify UIProcess/API/glib/WebKitPrivate.cpp @no-unify UIProcess/API/glib/WebKitProtocolHandler.cpp @no-unify -@@ -200,6 +203,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp +@@ -199,6 +202,7 @@ UIProcess/API/soup/HTTPCookieStoreSoup.cpp UIProcess/API/wpe/InputMethodFilterWPE.cpp @no-unify UIProcess/API/wpe/PageClientImpl.cpp @no-unify UIProcess/API/wpe/WebKitColor.cpp @no-unify @@ -10441,15 +9848,15 @@ index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d UIProcess/API/wpe/WebKitInputMethodContextWPE.cpp @no-unify UIProcess/API/wpe/WebKitPopupMenu.cpp @no-unify UIProcess/API/wpe/WebKitRectangle.cpp @no-unify -@@ -220,6 +224,7 @@ UIProcess/Gamepad/libwpe/UIGamepadProviderLibWPE.cpp - - UIProcess/geoclue/GeoclueGeolocationProvider.cpp - +@@ -223,6 +227,7 @@ UIProcess/glib/DisplayLinkGLib.cpp + UIProcess/glib/DisplayVBlankMonitor.cpp + UIProcess/glib/DisplayVBlankMonitorDRM.cpp + UIProcess/glib/DisplayVBlankMonitorTimer.cpp +UIProcess/glib/InspectorPlaywrightAgentClientGLib.cpp UIProcess/glib/WebPageProxyGLib.cpp UIProcess/glib/WebProcessPoolGLib.cpp UIProcess/glib/WebProcessProxyGLib.cpp -@@ -248,6 +253,11 @@ UIProcess/linux/MemoryPressureMonitor.cpp +@@ -251,6 +256,11 @@ UIProcess/linux/MemoryPressureMonitor.cpp UIProcess/soup/WebProcessPoolSoup.cpp @@ -10461,7 +9868,7 @@ index dff682afe7c62277b2a93fca6d42a33faf104d43..78035018705d3a0e7ece7691561fb39d UIProcess/wpe/WebPageProxyWPE.cpp WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp -@@ -270,6 +280,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp +@@ -273,6 +283,8 @@ WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp @@ -10518,7 +9925,7 @@ index dbbfea6be4b6f1ae3bd2070dc9b8e79fdbf28ff3..b7dd65cb00d64f67805597ba7a66f1a6 bool m_shouldTakeUIBackgroundAssertion { true }; bool m_shouldCaptureDisplayInUIProcess { DEFAULT_CAPTURE_DISPLAY_IN_UI_PROCESS }; diff --git a/Source/WebKit/UIProcess/API/APIUIClient.h b/Source/WebKit/UIProcess/API/APIUIClient.h -index f3e3b7ef340958b5a46c9252ff63a140afc24e2c..4b516ac0840608638209705250d8bf7ed6509f09 100644 +index 92813cde60765506eb09eb76831c8f194720cf03..eb2076c9cbbd2c113691598af5e548dcd96c1502 100644 --- a/Source/WebKit/UIProcess/API/APIUIClient.h +++ b/Source/WebKit/UIProcess/API/APIUIClient.h @@ -112,6 +112,7 @@ public: @@ -10573,7 +9980,7 @@ index 026121d114c5fcad84c1396be8d692625beaa3bd..edd6e5cae033124c589959a42522fde0 } #endif diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp -index 6c6e8f0ae2d133056f40caf6253377f751b48283..379dd3bea9dec5bd2e15031cfa6d89a407974c6f 100644 +index 8a6927f9f665f2d9fa7b9d0a813dd945a329d724..5c5610e1157bb654b9226dc7013ca1cc806d3005 100644 --- a/Source/WebKit/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp @@ -1784,6 +1784,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient @@ -10660,7 +10067,7 @@ index 65d8ab73430840b02682ce879d1db18b9597d6b0..ea89752f4b90018ea1f008e0d89f9a2a // Version 15. WKPageDecidePolicyForSpeechRecognitionPermissionRequestCallback decidePolicyForSpeechRecognitionPermissionRequest; diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm -index a3467a0ef399235b9f8e689b67887b38eba184df..c12f153c3b5d5a38674076a714503126566f3ede 100644 +index 039731566b16ebdf9ae4db1b2f64d809075adda8..bf09734942cea6caa5faa6ddf3d8036d2df55ccd 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm @@ -706,6 +706,16 @@ - (void)_setMediaCaptureRequiresSecureConnection:(BOOL)requiresSecureConnection @@ -10681,7 +10088,7 @@ index a3467a0ef399235b9f8e689b67887b38eba184df..c12f153c3b5d5a38674076a714503126 { return _preferences->inactiveMediaCaptureSteamRepromptIntervalInMinutes(); diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h -index 3b399415a391a7c32f822c6bc61f5ef5e8cae8ce..9940139edc9fc7425ca0e6c8907460ebbcc38b5d 100644 +index 00dae895eda9db80aac60bd927bac1f68756e9d5..11131d66ff21266ac52bc873d497a8625082be35 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h @@ -121,6 +121,7 @@ typedef NS_ENUM(NSInteger, _WKPitchCorrectionAlgorithm) { @@ -10710,7 +10117,7 @@ index 24b33cf16d46efce11a30032925600b97e64c65d..422355368191b9189b6283338bea2244 /*! @abstract A delegate to request permission for microphone audio and camera video access. @param webView The web view invoking the delegate method. diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h -index fe711453fd4ef346ff7d88bfec878642b6eb32d6..c3e4fcf0b51e827b6945c89613f22b17ab55f5fb 100644 +index 4f5956098f0e83c2e9c421c97056b6718b124a3c..1eb51dd70dc6ef1b7e95a09118aa816b4f77e2d7 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h @@ -24,7 +24,6 @@ @@ -10721,8 +10128,8 @@ index fe711453fd4ef346ff7d88bfec878642b6eb32d6..c3e4fcf0b51e827b6945c89613f22b17 #import #if __has_include() -@@ -120,6 +119,8 @@ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) - @property (nullable, nonatomic, copy) NSArray *proxyConfigurations NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(14.0), ios(17.0)); +@@ -124,6 +123,8 @@ WK_CLASS_AVAILABLE(macos(10.11), ios(9.0)) + #endif #endif +- (uint64_t)sessionID; @@ -10731,7 +10138,7 @@ index fe711453fd4ef346ff7d88bfec878642b6eb32d6..c3e4fcf0b51e827b6945c89613f22b17 NS_ASSUME_NONNULL_END diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm -index 830340886c8cd3d3699ad8f9daa1be7a03edf113..8aee71985c4924ff384b1491d81f874831c31044 100644 +index 2e52c12e36fde4dc6eb16dea399c4a201ba522e3..52a262a9da3fd7c9ea67f2ee8830e469f487a11d 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm @@ -50,6 +50,7 @@ @@ -10894,7 +10301,7 @@ index f3ace77b4d203c03dc28b31711245dd42d339f67..9006770a34b95b48c346066dc5e447ed @property (nonatomic) BOOL processSwapsOnNavigationWithinSameNonHTTPFamilyProtocol WK_API_AVAILABLE(macos(12.0), ios(15.0)); @property (nonatomic) BOOL prewarmsProcessesAutomatically WK_API_AVAILABLE(macos(10.14.4), ios(12.2)); diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm -index 5dbdde074da5226c4a76ec5a4fcf54b3fb717849..f2aa93846c6d22c20e0584d90afc46e947ffebf8 100644 +index 2827f2dbaac2a478c4e4e44f00d8d31f923d609f..abed07fed192f34d7636c53b6ce38856bf51e088 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm @@ -241,6 +241,16 @@ - (BOOL)processSwapsOnNavigation @@ -10939,7 +10346,7 @@ index 4974e14214e2bb3e982325b885bab33e54f83998..cacdf8c71fab248d38d2faf03f7affdc typedef NS_ENUM(NSInteger, _WKUserStyleLevel) { _WKUserStyleUserLevel, diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm -index 1e827013c603ae8bd43d798170deb98fc3153852..2075bc78069bde530ec237c0b761773c10013948 100644 +index 705a8483a04c8abe863bd788f5a4ea6a09414f27..c0e69429369155aa3974c508e755292c81c89e19 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm +++ b/Source/WebKit/UIProcess/API/Cocoa/_WKUserStyleSheet.mm @@ -35,6 +35,7 @@ @@ -11168,7 +10575,7 @@ index d75c5ee48b2cedc8df984841fd52478b0620078c..d9cd7bf5749ff192eb938b12b4c2d82b bool canRunBeforeUnloadConfirmPanel() const final { return true; } diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp -index e7f316fcd23487da0a356b36c467024503d491b3..b2a3717793e262d2c6a4338fef059cc02df062b5 100644 +index d897f14bbc9cc9743072759b54905776813aaf72..3c0e61fb6e54071deeb978cd16ad2eff959e5343 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -413,10 +413,19 @@ static void webkitWebContextSetProperty(GObject* object, guint propID, const GVa @@ -11237,7 +10644,7 @@ index e994309b097c1b140abfa4373fd2fafee46c05ec..6e0cc677a3bf33683ae8c89d12a48191 #endif +int webkitWebContextExistingCount(); diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp -index 26dee4a6bedbbed1148b22d288fe115ed6ac3a59..da2f18fb5e0a9448a672cba7ea526dce5a748fdc 100644 +index e88f6bcb93750dc47e616758d91eb8c5ae7de85a..ffbe6424d8433ee617ed63f37f8f6f09f9ad9eef 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp @@ -34,6 +34,7 @@ @@ -11303,7 +10710,7 @@ index 26dee4a6bedbbed1148b22d288fe115ed6ac3a59..da2f18fb5e0a9448a672cba7ea526dce if (WEBKIT_IS_POINTER_LOCK_PERMISSION_REQUEST(request)) { webkit_permission_request_allow(request); return TRUE; -@@ -1849,6 +1859,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) +@@ -1851,6 +1861,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_SCRIPT_DIALOG); @@ -11319,7 +10726,7 @@ index 26dee4a6bedbbed1148b22d288fe115ed6ac3a59..da2f18fb5e0a9448a672cba7ea526dce /** * WebKitWebView::decide-policy: * @web_view: the #WebKitWebView on which the signal is emitted -@@ -2647,6 +2666,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const +@@ -2649,6 +2668,23 @@ void webkitWebViewRunJavaScriptBeforeUnloadConfirm(WebKitWebView* webView, const webkit_script_dialog_unref(webView->priv->currentScriptDialog); } @@ -11368,7 +10775,7 @@ index 805f9f638c1630b5e9310494ae2970262de001cc..add3e80896c2e82bdd12cee15c8014bf #include <@API_INCLUDE_PREFIX@/WebKitClipboardPermissionRequest.h> #include <@API_INCLUDE_PREFIX@/WebKitColorChooserRequest.h> diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp -index fe0d38ff507855bed8ac300e118812420b383e34..1e355db49a389b3b85d0a32d4b3110aae556eec8 100644 +index 0c0dda4c205cf57f6468226d26f10b7524d7637c..319c2ffe8bdd94fb9a618e05f5619147589e3a84 100644 --- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp @@ -257,6 +257,8 @@ void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool @@ -11380,7 +10787,7 @@ index fe0d38ff507855bed8ac300e118812420b383e34..1e355db49a389b3b85d0a32d4b3110aa // Always consider arrow keys as handled, otherwise the GtkWindow key bindings will move the focus. guint keyval; -@@ -351,9 +353,9 @@ void PageClientImpl::selectionDidChange() +@@ -355,9 +357,9 @@ void PageClientImpl::selectionDidChange() webkitWebViewSelectionDidChange(WEBKIT_WEB_VIEW(m_viewWidget)); } @@ -11393,10 +10800,10 @@ index fe0d38ff507855bed8ac300e118812420b383e34..1e355db49a389b3b85d0a32d4b3110aa void PageClientImpl::didChangeContentSize(const IntSize& size) diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h -index 4f76c28957f07642dc1b0002368c722f40797900..b31bfdd45e6a7fb959143f5c8979d117f2766646 100644 +index 588447de7e900946c4ab47664bf9fc86809cb641..45858ff872378b288b1173a300cd11a5858ddd77 100644 --- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h +++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h -@@ -103,7 +103,7 @@ private: +@@ -105,7 +105,7 @@ private: #endif Ref createValidationBubble(const String& message, const WebCore::ValidationBubble::Settings&) final; void selectionDidChange() override; @@ -11506,10 +10913,10 @@ index 496079da90993ac37689b060b69ecd4a67c2b6a8..af30181ca922f16c0f6e245c70e5ce7d G_BEGIN_DECLS diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -index 6147a00162bbbde87746db7ce16b474a77aaa343..96600573d75e0bdc779071632517c11d020a2b51 100644 +index 86d4fd3a8ce403cdd71b286f82debe7d134f0763..8e2b155018d12a3be84b00585e4607dc71af56af 100644 --- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -@@ -2997,6 +2997,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) +@@ -2853,6 +2853,11 @@ void webkitWebViewBaseResetClickCounter(WebKitWebViewBase* webkitWebViewBase) #endif } @@ -11521,7 +10928,7 @@ index 6147a00162bbbde87746db7ce16b474a77aaa343..96600573d75e0bdc779071632517c11d void webkitWebViewBaseEnterAcceleratedCompositingMode(WebKitWebViewBase* webkitWebViewBase, const LayerTreeContext& layerTreeContext) { ASSERT(webkitWebViewBase->priv->acceleratedBackingStore); -@@ -3053,12 +3058,12 @@ void webkitWebViewBasePageClosed(WebKitWebViewBase* webkitWebViewBase) +@@ -2909,12 +2914,12 @@ void webkitWebViewBasePageClosed(WebKitWebViewBase* webkitWebViewBase) webkitWebViewBase->priv->acceleratedBackingStore->update({ }); } @@ -11537,7 +10944,7 @@ index 6147a00162bbbde87746db7ce16b474a77aaa343..96600573d75e0bdc779071632517c11d #if !USE(GTK4) diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h -index a003c198a6ec179454b010fda093a303250da7b0..125b1960ba73b1dd26daff90eb415e9735b13cfa 100644 +index fec76e55f1680da5b248552db6c96134742bdcba..dfb0b07c2e2447b9b4ee3841b90726b245cfbdd3 100644 --- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h +++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h @@ -27,6 +27,7 @@ @@ -11548,7 +10955,7 @@ index a003c198a6ec179454b010fda093a303250da7b0..125b1960ba73b1dd26daff90eb415e97 #include "APIPageConfiguration.h" #include "InputMethodState.h" #include "SameDocumentNavigationType.h" -@@ -100,7 +101,7 @@ void webkitWebViewBaseStartDrag(WebKitWebViewBase*, WebCore::SelectionData&&, Op +@@ -102,7 +103,7 @@ void webkitWebViewBaseStartDrag(WebKitWebViewBase*, WebCore::SelectionData&&, Op void webkitWebViewBaseDidPerformDragControllerAction(WebKitWebViewBase*); #endif @@ -11557,10 +10964,10 @@ index a003c198a6ec179454b010fda093a303250da7b0..125b1960ba73b1dd26daff90eb415e97 void webkitWebViewBaseSetEnableBackForwardNavigationGesture(WebKitWebViewBase*, bool enabled); WebKit::ViewGestureController* webkitWebViewBaseViewGestureController(WebKitWebViewBase*); -@@ -133,3 +134,5 @@ void webkitWebViewBaseSynthesizeWheelEvent(WebKitWebViewBase*, const GdkEvent*, - void webkitWebViewBaseMakeBlank(WebKitWebViewBase*, bool); - void webkitWebViewBasePageGrabbedTouch(WebKitWebViewBase*); - void webkitWebViewBaseSetShouldNotifyFocusEvents(WebKitWebViewBase*, bool); +@@ -141,3 +142,5 @@ void webkitWebViewBaseToplevelWindowStateChanged(WebKitWebViewBase*, uint32_t, u + void webkitWebViewBaseToplevelWindowMonitorChanged(WebKitWebViewBase*, GdkMonitor*); + + void webkitWebViewBaseCallAfterNextPresentationUpdate(WebKitWebViewBase*, CompletionHandler&&); + +WebKit::AcceleratedBackingStore* webkitWebViewBaseGetAcceleratedBackingStore(WebKitWebViewBase*); diff --git a/Source/WebKit/UIProcess/API/wpe/APIViewClient.h b/Source/WebKit/UIProcess/API/wpe/APIViewClient.h @@ -11586,13 +10993,13 @@ index 5506eb798d7df211e975b88f293428d7a00e8f65..41b4a0169a4479a0f2131227aadc7350 virtual void didChangePageID(WKWPE::View&) { } virtual void didReceiveUserMessage(WKWPE::View&, WebKit::UserMessage&&, CompletionHandler&& completionHandler) { completionHandler(WebKit::UserMessage()); } diff --git a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp -index 7a1548fcbe2667f71602bfa69cdd0b25fc7a6056..24e1db8e7b9f65fa0c064b8a741adb4c6bbba45e 100644 +index f927aeea12d50643000bcce90ce2d31ab5c17072..9fd3b35bb6d6831c0e9e7ec8e12d99ace3c40062 100644 --- a/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp +++ b/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp @@ -33,8 +33,11 @@ #include "NativeWebWheelEvent.h" #include "TouchGestureController.h" - #include "WPEView.h" + #include "WPEWebView.h" +#include "WebColorPickerWPE.h" +#include "WebDateTimePickerWPE.h" #include "WebContextMenuProxy.h" @@ -11692,10 +11099,10 @@ index d14abff9ca046b2c3a1423c4a47341210b7198d1..f717239df9de9097bfa31193b817e26b WKWPE::View& m_view; }; -diff --git a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp -index d6f4b65c9dd7249d89d0ee56c556c8bd26b5a55a..e77f1530c94584fa260670e99b33cf91fc25bfa0 100644 ---- a/Source/WebKit/UIProcess/API/wpe/WPEView.cpp -+++ b/Source/WebKit/UIProcess/API/wpe/WPEView.cpp +diff --git a/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp b/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp +index 762e771e09ca5f40afbd32bd35930c6217272ddc..97698110ac1652e902135427552eaf6cfb03cb3e 100644 +--- a/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp ++++ b/Source/WebKit/UIProcess/API/wpe/WPEWebView.cpp @@ -76,7 +76,9 @@ View::View(struct wpe_view_backend* backend, const API::PageConfiguration& baseC if (preferences) { preferences->setAcceleratedCompositingEnabled(true); @@ -11704,9 +11111,9 @@ index d6f4b65c9dd7249d89d0ee56c556c8bd26b5a55a..e77f1530c94584fa260670e99b33cf91 + // Playwright override begin + preferences->setThreadedScrollingEnabled(false); + // Playwright override end - preferences->setWebGLEnabled(true); } + auto* pool = configuration->processPool(); diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h b/Source/WebKit/UIProcess/API/wpe/WebKitBrowserInspector.h new file mode 100644 index 0000000000000000000000000000000000000000..273c5105cdf1638955cea01128c9bbab3e64436c @@ -12001,10 +11408,10 @@ index 8a8356b94e0632118a24bb9adf5a1fe72f10fb8d..f332ffe5e633dce8e8a7f0f2a411ca29 void didChangePageID(WKWPE::View&) override; void didReceiveUserMessage(WKWPE::View&, WebKit::UserMessage&&, CompletionHandler&&) override; diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -index b3f4ddba8d65cdb8f67f4f3370f5fa63da84c735..011446c18963da3fa3341f550ee58a09c8b59aa1 100644 +index de794bd3c1e9a598ae76b326d6171cebf4289fa9..5db786bccc7db3be4ce82fac3e3d2f5ccd5a07a6 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp -@@ -140,7 +140,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau +@@ -144,7 +144,11 @@ void AuxiliaryProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& lau launchOptions.processCmdPrefix = String::fromUTF8(processCmdPrefix); #endif // ENABLE(DEVELOPER_MODE) && (PLATFORM(GTK) || PLATFORM(WPE)) @@ -12017,10 +11424,10 @@ index b3f4ddba8d65cdb8f67f4f3370f5fa63da84c735..011446c18963da3fa3341f550ee58a09 platformGetLaunchOptions(launchOptions); } diff --git a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -index 9aff8c5be29dee4751dfd98615d4b6dfbba2c010..ab3841c8017dee65bdacdb0f9487a6955de2cba0 100644 +index c951a2baaf6819908b2d18e276b048f2aa69c86c..12ac9e139ee9aad1e4e6502e01b03e5d16888113 100644 --- a/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h +++ b/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h -@@ -207,13 +207,16 @@ protected: +@@ -221,13 +221,16 @@ protected: static RefPtr fetchAudioComponentServerRegistrations(); #endif @@ -12183,7 +11590,7 @@ index 957f7f088087169668a9b4f1ba65d9f206a2a836..15e44c8d5b6a3eafb7f1148707366b0c class PopUpSOAuthorizationSession final : public SOAuthorizationSession { public: diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h -index 7b4841ee8a15252d24fa7378a2005efb2db96f6f..d3eb7886316c7c1b45fb4673df15b7438249c65c 100644 +index ca367804b622de941ab3792edcf79d17f3a19193..6249e19713f3b13cca3e1081a3469ef5eef2f698 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h @@ -95,6 +95,7 @@ private: @@ -12194,7 +11601,7 @@ index 7b4841ee8a15252d24fa7378a2005efb2db96f6f..d3eb7886316c7c1b45fb4673df15b743 void presentStorageAccessConfirmDialog(const WTF::String& requestingDomain, const WTF::String& currentDomain, CompletionHandler&&); void requestStorageAccessConfirm(WebPageProxy&, WebFrameProxy*, const WebCore::RegistrableDomain& requestingDomain, const WebCore::RegistrableDomain& currentDomain, CompletionHandler&&) final; void decidePolicyForGeolocationPermissionRequest(WebPageProxy&, WebFrameProxy&, const FrameInfoData&, Function&) final; -@@ -203,6 +204,7 @@ private: +@@ -205,6 +206,7 @@ private: bool webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler : 1; @@ -12203,7 +11610,7 @@ index 7b4841ee8a15252d24fa7378a2005efb2db96f6f..d3eb7886316c7c1b45fb4673df15b743 bool webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1; bool webViewRequestGeolocationPermissionForFrameDecisionHandler : 1; diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm -index 2b48d6de50f8dd8831e4b368105c032902c23188..459588046d140d21544d9f8838e66c6d9e0f0bbb 100644 +index be7f2e3a3dcdf9f22ff1a950b07f03488cbc1c3f..8148730b798729df7be190673f84a3c6e98c08bd 100644 --- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm +++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm @@ -117,6 +117,7 @@ void UIDelegate::setDelegate(id delegate) @@ -12214,7 +11621,7 @@ index 2b48d6de50f8dd8831e4b368105c032902c23188..459588046d140d21544d9f8838e66c6d m_delegateMethods.webViewRequestStorageAccessPanelUnderFirstPartyCompletionHandler = [delegate respondsToSelector:@selector(_webView:requestStorageAccessPanelForDomain:underCurrentDomain:completionHandler:)]; m_delegateMethods.webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:)]; m_delegateMethods.webViewRequestGeolocationPermissionForOriginDecisionHandler = [delegate respondsToSelector:@selector(_webView:requestGeolocationPermissionForOrigin:initiatedByFrame:decisionHandler:)]; -@@ -429,6 +430,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St +@@ -437,6 +438,15 @@ void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy& page, const WTF::St }).get()]; } @@ -12231,10 +11638,10 @@ index 2b48d6de50f8dd8831e4b368105c032902c23188..459588046d140d21544d9f8838e66c6d { if (!m_uiDelegate) diff --git a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm -index 3e2492348a0aa797686552bcd75ca3ed5a26295a..72222350d4019d07ea20f32ad7d92b8efff7e463 100644 +index 3c58aeaad9a258806eb6979bd40eb59f298ac190..05c638cdbad087fe8bbdd0ed9fe84b13e27feea1 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm -@@ -37,6 +37,7 @@ +@@ -38,6 +38,7 @@ #import "LoadParameters.h" #import "MessageSenderInlines.h" #import "PageClient.h" @@ -12242,7 +11649,7 @@ index 3e2492348a0aa797686552bcd75ca3ed5a26295a..72222350d4019d07ea20f32ad7d92b8e #import "PlaybackSessionManagerProxy.h" #import "QuickLookThumbnailLoader.h" #import "RemoteLayerTreeTransaction.h" -@@ -278,10 +279,87 @@ bool WebPageProxy::scrollingUpdatesDisabledForTesting() +@@ -279,10 +280,87 @@ bool WebPageProxy::scrollingUpdatesDisabledForTesting() void WebPageProxy::startDrag(const DragItem& dragItem, ShareableBitmap::Handle&& dragImageHandle) { @@ -12332,10 +11739,10 @@ index 3e2492348a0aa797686552bcd75ca3ed5a26295a..72222350d4019d07ea20f32ad7d92b8e #if ENABLE(ATTACHMENT_ELEMENT) diff --git a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -index f064a1cfe684ce89caa2c45ccae4cd673b0d526d..65e866b3a6b9ab535c0cddcfef19c9db10c75103 100644 +index fa8a3ce8b0585f9e81308dcea0a9f6721b82e31d..2fc423491020f88ff19f4934699568f33150f141 100644 --- a/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm +++ b/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm -@@ -457,7 +457,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END +@@ -404,7 +404,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END auto screenProperties = WebCore::collectScreenProperties(); parameters.screenProperties = WTFMove(screenProperties); #if PLATFORM(MAC) @@ -12356,7 +11763,7 @@ index f064a1cfe684ce89caa2c45ccae4cd673b0d526d..65e866b3a6b9ab535c0cddcfef19c9db m_activationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationDidBecomeActiveNotification object:NSApp queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) { diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp -index be4de15c34e3baa6d4a7db749c705c549f5dd207..39e78fae0c6481de28ef800dc621b268ac02b62b 100644 +index ff5329fb9b917a9bc53e8b017516099a10b6925e..8f57d208a81c81d255a68ca7130059e956d5b3db 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp @@ -33,14 +33,17 @@ @@ -12403,9 +11810,9 @@ index be4de15c34e3baa6d4a7db749c705c549f5dd207..39e78fae0c6481de28ef800dc621b268 void DrawingAreaProxyCoordinatedGraphics::setBackingStoreIsDiscardable(bool isBackingStoreDiscardable) { #if !PLATFORM(WPE) -@@ -229,6 +244,45 @@ void DrawingAreaProxyCoordinatedGraphics::targetRefreshRateDidChange(unsigned ra +@@ -222,6 +237,45 @@ void DrawingAreaProxyCoordinatedGraphics::updateAcceleratedCompositingMode(uint6 + updateAcceleratedCompositingMode(layerTreeContext); } - #endif +#if PLATFORM(WIN) +void DrawingAreaProxyCoordinatedGraphics::didChangeAcceleratedCompositingMode(bool enabled) @@ -12449,7 +11856,7 @@ index be4de15c34e3baa6d4a7db749c705c549f5dd207..39e78fae0c6481de28ef800dc621b268 bool DrawingAreaProxyCoordinatedGraphics::alwaysUseCompositing() const { return m_webPageProxy->preferences().acceleratedCompositingEnabled() && m_webPageProxy->preferences().forceCompositingMode(); -@@ -283,6 +337,11 @@ void DrawingAreaProxyCoordinatedGraphics::didUpdateGeometry() +@@ -276,6 +330,11 @@ void DrawingAreaProxyCoordinatedGraphics::didUpdateGeometry() // we need to resend the new size here. if (m_lastSentSize != m_size) sendUpdateGeometry(); @@ -12462,7 +11869,7 @@ index be4de15c34e3baa6d4a7db749c705c549f5dd207..39e78fae0c6481de28ef800dc621b268 #if !PLATFORM(WPE) diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h -index d5d61ca02c9acba5b359fcfcb7bbae3632ef8ce4..ca9b4cdb1276b4e53b3c256bc1459fa40d549de5 100644 +index 16ce79d7f60b4f8df74ed74ad11502d269462a44..301e74438fd199c2021dd3108d17c56b5cb18d09 100644 --- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h +++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h @@ -30,6 +30,7 @@ @@ -12484,17 +11891,17 @@ index d5d61ca02c9acba5b359fcfcb7bbae3632ef8ce4..ca9b4cdb1276b4e53b3c256bc1459fa4 void dispatchAfterEnsuringDrawing(CompletionHandler&&); -@@ -75,6 +80,9 @@ private: - #if !PLATFORM(GTK) - void targetRefreshRateDidChange(unsigned) override; - #endif +@@ -72,6 +77,9 @@ private: + void enterAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) override; + void exitAcceleratedCompositingMode(uint64_t backingStoreStateID, UpdateInfo&&) override; + void updateAcceleratedCompositingMode(uint64_t backingStoreStateID, const LayerTreeContext&) override; +#if PLATFORM(WIN) + void didChangeAcceleratedCompositingMode(bool enabled) override; +#endif bool shouldSendWheelEventsToEventDispatcher() const override { return true; } -@@ -124,6 +132,7 @@ private: +@@ -114,6 +122,7 @@ private: // The last size we sent to the web process. WebCore::IntSize m_lastSentSize; @@ -12502,7 +11909,7 @@ index d5d61ca02c9acba5b359fcfcb7bbae3632ef8ce4..ca9b4cdb1276b4e53b3c256bc1459fa4 #if !PLATFORM(WPE) bool m_isBackingStoreDiscardable { true }; -@@ -132,6 +141,10 @@ private: +@@ -122,6 +131,10 @@ private: RunLoop::Timer m_discardBackingStoreTimer; #endif std::unique_ptr m_drawingMonitor; @@ -12514,7 +11921,7 @@ index d5d61ca02c9acba5b359fcfcb7bbae3632ef8ce4..ca9b4cdb1276b4e53b3c256bc1459fa4 } // namespace WebKit diff --git a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp -index 3778bb4b451fb4e61dba05293fef541c39022e02..689e54828a1cf2536169feb0d30971908fb81137 100644 +index c6eeb8dca2ad5eb2b8a385cea8bf33795b15fd3a..14c9ef83023b1303d1c05fa73aaa67618e0502f8 100644 --- a/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp +++ b/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp @@ -41,8 +41,10 @@ @@ -12606,7 +12013,7 @@ index 9b69cad753b5b2e3844caac57b44c067507e68e7..1e898d7311a2cb8cb6d9a4042f91f41c } // namespace WebKit diff --git a/Source/WebKit/UIProcess/DrawingAreaProxy.h b/Source/WebKit/UIProcess/DrawingAreaProxy.h -index 3e9751ffb6e3069227dc0c92f0c9b9c18f7111f8..b66739b19aba8be7b69c8a7600d2b1b4c28844ff 100644 +index f740edbcc1e243089bb9ad48b03d58cf1587bd8d..24c271c24298bcd6145ddd5efba9fbb792753bd4 100644 --- a/Source/WebKit/UIProcess/DrawingAreaProxy.h +++ b/Source/WebKit/UIProcess/DrawingAreaProxy.h @@ -87,6 +87,7 @@ public: @@ -12615,9 +12022,9 @@ index 3e9751ffb6e3069227dc0c92f0c9b9c18f7111f8..b66739b19aba8be7b69c8a7600d2b1b4 bool setSize(const WebCore::IntSize&, const WebCore::IntSize& scrollOffset = { }); + void waitForSizeUpdate(Function&&); - #if !PLATFORM(GTK) && (USE(COORDINATED_GRAPHICS) || USE(TEXTURE_MAPPER)) - virtual void targetRefreshRateDidChange(unsigned) { } -@@ -166,6 +167,10 @@ private: + virtual void minimumSizeForAutoLayoutDidChange() { } + virtual void sizeToContentAutoSizeMaximumSizeDidChange() { } +@@ -162,6 +163,10 @@ private: virtual void update(uint64_t /* backingStoreStateID */, UpdateInfo&&) { } virtual void exitAcceleratedCompositingMode(uint64_t /* backingStoreStateID */, UpdateInfo&&) { } #endif @@ -12930,10 +12337,10 @@ index 0000000000000000000000000000000000000000..4ec8b96bbbddf8a7b042f53a8068754a +cairo_status_t cairo_image_surface_write_to_jpeg_mem(cairo_surface_t *sfc, unsigned char **data, size_t *len, int quality); diff --git a/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..9e726eaeab1d547b6a0dc4885868a15cc42c4862 +index 0000000000000000000000000000000000000000..844f559af924de3fddce8cfcea8550261a8da95b --- /dev/null +++ b/Source/WebKit/UIProcess/Inspector/Agents/InspectorScreencastAgent.cpp -@@ -0,0 +1,303 @@ +@@ -0,0 +1,305 @@ +/* + * Copyright (C) 2020 Microsoft Corporation. + * @@ -13174,6 +12581,8 @@ index 0000000000000000000000000000000000000000..9e726eaeab1d547b6a0dc4885868a15c + RunLoop::main().dispatchAfter(Seconds(1.0 / ScreencastEncoder::fps), [agent = WeakPtr { this }]() mutable { + if (!agent) + return; ++ if (!agent->m_page.hasPageClient()) ++ return; + + agent->encodeFrame(); + agent->scheduleFrameEncoding(); @@ -14776,7 +14185,7 @@ index 0000000000000000000000000000000000000000..d0e11ed81a6257c011df23d5870da740 +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..24dd8c24c555475ae707cb2abb22f8ffd669846c +index 0000000000000000000000000000000000000000..a494ee1006f70d398149753f8953515d434cbcd4 --- /dev/null +++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp @@ -0,0 +1,1019 @@ @@ -15267,10 +14676,10 @@ index 0000000000000000000000000000000000000000..24dd8c24c555475ae707cb2abb22f8ff + WebsiteDataStore::forEachWebsiteDataStore([this] (WebsiteDataStore& dataStore) { + dataStore.setDownloadInstrumentation(this); + }); -+ for (auto& pool : WebProcessPool::allProcessPools()) { -+ for (auto& process : pool->processes()) { -+ for (auto& page : process->pages()) -+ didCreateInspectorController(*page.get()); ++ for (Ref pool : WebProcessPool::allProcessPools()) { ++ for (Ref process : pool->processes()) { ++ for (Ref page : process->pages()) ++ didCreateInspectorController(WTFMove(page)); + } + } + return { }; @@ -15326,16 +14735,16 @@ index 0000000000000000000000000000000000000000..24dd8c24c555475ae707cb2abb22f8ff + +void InspectorPlaywrightAgent::closeImpl(Function&& callback) +{ -+ Vector pages; ++ Vector> pages; + // If Web Process crashed it will be disconnected from its pool until + // the page reloads. So we cannot discover such processes and the pages + // by traversing all process pools and their processes. Instead we look at + // all existing Web Processes wether in a pool or not. -+ for (auto& process : WebProcessProxy::allProcessesForInspector()) { -+ for (auto& page : process->pages()) -+ pages.append(page.get()); ++ for (Ref process : WebProcessProxy::allProcessesForInspector()) { ++ for (Ref page : process->pages()) ++ pages.append(WTFMove(page)); + } -+ for (auto* page : pages) ++ for (Ref page : pages) + page->closePage(); + + if (!m_defaultContext) { @@ -16015,7 +15424,7 @@ index 0000000000000000000000000000000000000000..e7a3dcc533294bb6e12f65d79b5b716b + +#endif // ENABLE(REMOTE_INSPECTOR) diff --git a/Source/WebKit/UIProcess/Launcher/win/ProcessLauncherWin.cpp b/Source/WebKit/UIProcess/Launcher/win/ProcessLauncherWin.cpp -index e81f64cb2b4fdc6a44e31d52ff912a4f6818182d..86a7cab139bf883eb047b45260ce246849e2319a 100644 +index 1a26781907e71c9cc3e99aff38d8060c4387abd7..b4e6e7edec5a716da63c74a6be5d08b6e1981f52 100644 --- a/Source/WebKit/UIProcess/Launcher/win/ProcessLauncherWin.cpp +++ b/Source/WebKit/UIProcess/Launcher/win/ProcessLauncherWin.cpp @@ -97,8 +97,11 @@ void ProcessLauncher::launchProcess() @@ -16044,10 +15453,10 @@ index 3fe0abcfe36bef7ca45bed5661a737ed2bfe56d0..510656948af01ec65d4543c805e9667a #include "RemoteMediaSessionCoordinatorProxyMessages.h" #include "WebPageProxy.h" diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h -index ed7fea3c0ae4b0567f592226ca34a53f6a453c9a..6eed8f4a0f69f3d45e09f68a33d76d49908ab0d6 100644 +index f906572268a24f05062d0a844b783a3ed00e1679..4467af8a12f62b8f69e50c90570935be01d003b8 100644 --- a/Source/WebKit/UIProcess/PageClient.h +++ b/Source/WebKit/UIProcess/PageClient.h -@@ -85,6 +85,10 @@ OBJC_CLASS WKView; +@@ -84,6 +84,10 @@ OBJC_CLASS WKView; #endif #endif @@ -16058,7 +15467,7 @@ index ed7fea3c0ae4b0567f592226ca34a53f6a453c9a..6eed8f4a0f69f3d45e09f68a33d76d49 namespace API { class Attachment; class HitTestResult; -@@ -333,7 +337,16 @@ public: +@@ -332,7 +336,16 @@ public: virtual void selectionDidChange() = 0; #endif @@ -16202,7 +15611,7 @@ index 0000000000000000000000000000000000000000..3c8fd0549f1847515d35092f0f49b060 + +#endif // ENABLE(FULLSCREEN_API) diff --git a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp -index 529513b85bdad92abf0f72021545780b4c03f0d9..cacc725db7660d956222a85a164f88d477bbc659 100644 +index c3252ba8c21e33c4c6d1ebd98570b0e2aec811c8..51ba95e41f175b703f8e29822218340dc178b760 100644 --- a/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp +++ b/Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp @@ -25,6 +25,7 @@ @@ -16532,7 +15941,7 @@ index f8c06bc779b6be310018840147a044b7c34fed3c..0c35907c6d0e0d2c3bba1f40b2ef59fb namespace WebCore { class PlatformWheelEvent; diff --git a/Source/WebKit/UIProcess/RemotePageProxy.cpp b/Source/WebKit/UIProcess/RemotePageProxy.cpp -index 6714d262e7db42fe3341e29c6d06150749117b9e..f6a74d735df19a3376c2f386489326bc4a3571c8 100644 +index 58e3200ece686308bb282f913aa074ed2d18df92..4e29489d67e3c5486b669f291d36e82138fe970b 100644 --- a/Source/WebKit/UIProcess/RemotePageProxy.cpp +++ b/Source/WebKit/UIProcess/RemotePageProxy.cpp @@ -41,6 +41,7 @@ @@ -16540,11 +15949,11 @@ index 6714d262e7db42fe3341e29c6d06150749117b9e..f6a74d735df19a3376c2f386489326bc #include "WebProcessMessages.h" #include "WebProcessProxy.h" +#include "WebProcessMessages.h" - #include + #include namespace WebKit { diff --git a/Source/WebKit/UIProcess/WebContextMenuProxy.cpp b/Source/WebKit/UIProcess/WebContextMenuProxy.cpp -index 2c36e80c79519b09f1969701dbd8c712b50089de..b6a2e3dd03496a57238e7381880ad2f78d8f4b72 100644 +index d9dea84804e03c1fe6ff17d095ba78d68124a583..a6d8b4ef0c477f9bea172b1f408094fb60c6d9a1 100644 --- a/Source/WebKit/UIProcess/WebContextMenuProxy.cpp +++ b/Source/WebKit/UIProcess/WebContextMenuProxy.cpp @@ -33,6 +33,7 @@ @@ -16556,7 +15965,7 @@ index 2c36e80c79519b09f1969701dbd8c712b50089de..b6a2e3dd03496a57238e7381880ad2f7 namespace WebKit { diff --git a/Source/WebKit/UIProcess/WebContextMenuProxy.h b/Source/WebKit/UIProcess/WebContextMenuProxy.h -index 2071f653d6fd7413dd5336b85d02c6a92cab68b2..af9409c0adfc97a60d4ed789999310a7745a26be 100644 +index e7d6621532fcc73212cc9130a7cafbb13f458d1d..ec931c8f19d2a61c0fa7d78b52df7f3f94bdd2c5 100644 --- a/Source/WebKit/UIProcess/WebContextMenuProxy.h +++ b/Source/WebKit/UIProcess/WebContextMenuProxy.h @@ -46,6 +46,7 @@ public: @@ -16568,7 +15977,7 @@ index 2071f653d6fd7413dd5336b85d02c6a92cab68b2..af9409c0adfc97a60d4ed789999310a7 WebPageProxy* page() const { return m_page.get(); } diff --git a/Source/WebKit/UIProcess/WebFrameProxy.cpp b/Source/WebKit/UIProcess/WebFrameProxy.cpp -index e838f905d68e3a0450c8923a5ba0fcbd34e01cbf..a99b6e7f5b3fadf30229da3c740e1119fd1c53cf 100644 +index 582a8a4e432af9b896b4c1b8885de8dcb717252a..930b5ff816a60ba3db82ad3dc0d0c3f0e17a8b5c 100644 --- a/Source/WebKit/UIProcess/WebFrameProxy.cpp +++ b/Source/WebKit/UIProcess/WebFrameProxy.cpp @@ -30,6 +30,7 @@ @@ -16588,7 +15997,7 @@ index e838f905d68e3a0450c8923a5ba0fcbd34e01cbf..a99b6e7f5b3fadf30229da3c740e1119 #include "WebPageProxy.h" #include "WebPageProxyMessages.h" diff --git a/Source/WebKit/UIProcess/WebNavigationState.h b/Source/WebKit/UIProcess/WebNavigationState.h -index 74fd2c3075956a4c05ae4c3c4b7c1c2505b27c19..5a7009ad97c1694b9129c21f9086d4c937b422fa 100644 +index f68592e910d61293346fbc251afd9bcbd28cd3a5..2f92c407fa357031a1d054aa39a65a20cbe30751 100644 --- a/Source/WebKit/UIProcess/WebNavigationState.h +++ b/Source/WebKit/UIProcess/WebNavigationState.h @@ -29,6 +29,7 @@ @@ -16609,7 +16018,7 @@ index 74fd2c3075956a4c05ae4c3c4b7c1c2505b27c19..5a7009ad97c1694b9129c21f9086d4c9 class WebNavigationState : public CanMakeWeakPtr { diff --git a/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..e83fdca27ddeeb90df68f96a23f992d7d7602dff +index 0000000000000000000000000000000000000000..fef34b5cf77742521c679a46f38111c1e198b9bf --- /dev/null +++ b/Source/WebKit/UIProcess/WebPageInspectorEmulationAgent.cpp @@ -0,0 +1,147 @@ @@ -16718,7 +16127,7 @@ index 0000000000000000000000000000000000000000..e83fdca27ddeeb90df68f96a23f992d7 +Inspector::Protocol::ErrorStringOr WebPageInspectorEmulationAgent::setAuthCredentials(const String& username, const String& password, const String& origin) +{ + if (!!username && !!password) -+ m_page.setAuthCredentialsForAutomation(WebCore::Credential(username, password, WebCore::CredentialPersistencePermanent), URL(origin)); ++ m_page.setAuthCredentialsForAutomation(WebCore::Credential(username, password, WebCore::CredentialPersistence::Permanent), URL(origin)); + else + m_page.setAuthCredentialsForAutomation(std::optional(), std::optional()); + return { }; @@ -16843,7 +16252,7 @@ index 0000000000000000000000000000000000000000..12657f8e7c4b2596707680d299dc8084 +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageInspectorInputAgent.cpp b/Source/WebKit/UIProcess/WebPageInspectorInputAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..d21c7462293142fbc8b05fd17f030a20f3ab7bde +index 0000000000000000000000000000000000000000..f4519d0655e1e92e6d47a9e59cf01b0fd07ababf --- /dev/null +++ b/Source/WebKit/UIProcess/WebPageInspectorInputAgent.cpp @@ -0,0 +1,334 @@ @@ -17124,9 +16533,9 @@ index 0000000000000000000000000000000000000000..d21c7462293142fbc8b05fd17f030a20 + // operating system. This is turned off in the callback. + m_page.setInterceptDrags(true); +#if PLATFORM(MAC) -+ ASSERT_UNUSED(eventType, 1); -+ ASSERT_UNUSED(eventButton, 1); -+ ASSERT_UNUSED(eventClickCount, 1); ++ UNUSED_VARIABLE(eventType); ++ UNUSED_VARIABLE(eventButton); ++ UNUSED_VARIABLE(eventClickCount); + platformDispatchMouseEvent(type, x, y, WTFMove(modifiers), button, WTFMove(clickCount), eventButtons); +#elif PLATFORM(GTK) || PLATFORM(WPE) || PLATFORM(WIN) + WallTime timestamp = WallTime::now(); @@ -17274,10 +16683,10 @@ index 0000000000000000000000000000000000000000..3e87bf40ced2301f4fb145c6cb31f2cf + +} // namespace WebKit diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp -index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf74323676418 100644 +index 8455defdbbcf688a5da2ba2b06ce04288c6e9849..553e7b446c1c332d5e9703db0e286f5254d5537a 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit/UIProcess/WebPageProxy.cpp -@@ -174,12 +174,14 @@ +@@ -175,12 +175,14 @@ #include #include #include @@ -17292,7 +16701,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #include #include #include -@@ -198,17 +200,20 @@ +@@ -199,17 +201,20 @@ #include #include #include @@ -17304,7 +16713,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #include #include +#include - #include + #include #include #include #include @@ -17313,9 +16722,9 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #include #include #include -@@ -277,6 +282,9 @@ - - #if PLATFORM(GTK) +@@ -281,6 +286,9 @@ + #include "AcceleratedBackingStoreDMABuf.h" + #endif #include "GtkSettingsManager.h" +#endif + @@ -17323,7 +16732,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #include #endif -@@ -386,6 +394,8 @@ static constexpr Seconds tryCloseTimeoutDelay = 50_ms; +@@ -390,6 +398,8 @@ static constexpr Seconds tryCloseTimeoutDelay = 50_ms; static constexpr Seconds audibleActivityClearDelay = 10_s; #endif @@ -17332,10 +16741,10 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, webPageProxyCounter, ("WebPageProxy")); #if PLATFORM(COCOA) -@@ -759,6 +769,10 @@ WebPageProxy::~WebPageProxy() - - internals().remotePageProxyInOpenerProcess = nullptr; - internals().openedRemotePageProxies.clear(); +@@ -761,6 +771,10 @@ WebPageProxy::~WebPageProxy() + if (preferences->mediaSessionCoordinatorEnabled()) + GroupActivitiesSessionNotifier::sharedNotifier().removeWebPage(*this); + #endif + +#if PLATFORM(COCOA) + releaseInspectorDragPasteboard(); @@ -17343,7 +16752,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 } void WebPageProxy::addAllMessageReceivers() -@@ -1225,6 +1239,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) +@@ -1247,6 +1261,7 @@ void WebPageProxy::finishAttachingToWebProcess(ProcessLaunchReason reason) pageClient().didRelaunchProcess(); internals().pageLoadState.didSwapWebProcesses(); @@ -17351,7 +16760,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 } void WebPageProxy::didAttachToRunningProcess() -@@ -1233,7 +1248,7 @@ void WebPageProxy::didAttachToRunningProcess() +@@ -1255,7 +1270,7 @@ void WebPageProxy::didAttachToRunningProcess() #if ENABLE(FULLSCREEN_API) ASSERT(!m_fullScreenManager); @@ -17360,7 +16769,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #endif #if ENABLE(VIDEO_PRESENTATION_MODE) ASSERT(!m_playbackSessionManager); -@@ -1622,6 +1637,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() +@@ -1656,6 +1671,21 @@ WebProcessProxy& WebPageProxy::ensureRunningProcess() return m_process; } @@ -17375,15 +16784,15 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 + loadParameters.request = WTFMove(request); + loadParameters.shouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldNotAllow; + loadParameters.shouldTreatAsContinuingLoad = ShouldTreatAsContinuingLoad::No; -+ m_process->send(Messages::WebPage::LoadRequestInFrameForInspector(loadParameters, frame->frameID()), internals().webPageID); ++ m_process->send(Messages::WebPage::LoadRequestInFrameForInspector(WTFMove(loadParameters), frame->frameID()), internals().webPageID); + return navigation; +} + RefPtr WebPageProxy::loadRequest(ResourceRequest&& request, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, API::Object* userData) { if (m_isClosed) -@@ -2179,6 +2209,32 @@ void WebPageProxy::setControlledByAutomation(bool controlled) - websiteDataStore().networkProcess().send(Messages::NetworkProcess::SetSessionIsControlledByAutomation(m_websiteDataStore->sessionID(), m_controlledByAutomation), 0); +@@ -2218,6 +2248,42 @@ void WebPageProxy::setControlledByAutomation(bool controlled) + websiteDataStore().protectedNetworkProcess()->send(Messages::NetworkProcess::SetSessionIsControlledByAutomation(m_websiteDataStore->sessionID(), m_controlledByAutomation), 0); } +void WebPageProxy::setAuthCredentialsForAutomation(std::optional&& credentials, std::optional&& origin) @@ -17397,6 +16806,16 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 + m_permissionsForAutomation = permissions; +} + ++std::optional WebPageProxy::permissionForAutomation(const String& origin, const String& permission) const ++{ ++ auto permissions = m_permissionsForAutomation.find(origin); ++ if (permissions == m_permissionsForAutomation.end()) ++ permissions = m_permissionsForAutomation.find("*"_s); ++ if (permissions == m_permissionsForAutomation.end()) ++ return std::nullopt; ++ return permissions->value.contains(permission); ++} ++ +void WebPageProxy::setActiveForAutomation(std::optional active) { + m_activeForAutomation = active; + OptionSet state; @@ -17415,7 +16834,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 void WebPageProxy::createInspectorTarget(const String& targetId, Inspector::InspectorTargetType type) { MESSAGE_CHECK(m_process, !targetId.isEmpty()); -@@ -2421,6 +2477,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) +@@ -2460,6 +2526,25 @@ void WebPageProxy::updateActivityState(OptionSet flagsToUpdate) { bool wasVisible = isViewVisible(); internals().activityState.remove(flagsToUpdate); @@ -17441,25 +16860,34 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 if (flagsToUpdate & ActivityState::IsFocused && pageClient().isViewFocused()) internals().activityState.add(ActivityState::IsFocused); if (flagsToUpdate & ActivityState::WindowIsActive && pageClient().isViewWindowActive()) -@@ -3106,6 +3181,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag - { +@@ -3146,7 +3231,7 @@ void WebPageProxy::performDragOperation(DragData& dragData, const String& dragSt + grantAccessToCurrentPasteboardData(dragStorageName); + #endif + +-#if PLATFORM(GTK) ++#if PLATFORM(GTK) || PLATFORM(WPE) + performDragControllerAction(DragControllerAction::PerformDragOperation, dragData); + #else + if (!hasRunningProcess()) +@@ -3163,6 +3248,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag if (!hasRunningProcess()) return; -+ if (action == DragControllerAction::Entered || action == DragControllerAction::Updated) -+ m_dragEventsQueued++; - #if PLATFORM(GTK) - UNUSED_PARAM(dragStorageName); - UNUSED_PARAM(sandboxExtensionHandle); -@@ -3116,6 +3193,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag - m_process->assumeReadAccessToBaseURL(*this, url); + ++ m_dragEventsQueued++; ++ + auto completionHandler = [this, protectedThis = Ref { *this }, action, dragData] (std::optional dragOperation, WebCore::DragHandlingMethod dragHandlingMethod, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted, const IntRect& insertionRect, const IntRect& editableElementRect, std::optional remoteUserInputEventData) mutable { + if (!remoteUserInputEventData) { + didPerformDragControllerAction(dragOperation, dragHandlingMethod, mouseIsOverFileInput, numberOfItemsToBeAccepted, insertionRect, editableElementRect); +@@ -3179,6 +3266,8 @@ void WebPageProxy::performDragControllerAction(DragControllerAction action, Drag + protectedProcess()->assumeReadAccessToBaseURL(*this, url); ASSERT(dragData.platformData()); +#endif +#if PLATFORM(GTK) || PLATFORM(WPE) - send(Messages::WebPage::PerformDragControllerAction(action, dragData.clientPosition(), dragData.globalPosition(), dragData.draggingSourceOperationMask(), *dragData.platformData(), dragData.flags())); + sendWithAsyncReply(Messages::WebPage::PerformDragControllerAction(action, dragData.clientPosition(), dragData.globalPosition(), dragData.draggingSourceOperationMask(), *dragData.platformData(), dragData.flags()), WTFMove(completionHandler)); #else - send(Messages::WebPage::PerformDragControllerAction(action, dragData, sandboxExtensionHandle, sandboxExtensionsForUpload)); -@@ -3131,18 +3210,41 @@ void WebPageProxy::didPerformDragControllerAction(std::optional dragOperationMask) - { - if (!hasRunningProcess()) -@@ -3151,6 +3253,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo + didStartDrag(); + } + #endif +@@ -3222,6 +3333,24 @@ void WebPageProxy::dragEnded(const IntPoint& clientPosition, const IntPoint& glo setDragCaretRect({ }); } @@ -17526,10 +16949,10 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 +} +#endif + - void WebPageProxy::didPerformDragOperation(bool handled) + void WebPageProxy::didStartDrag() { - pageClient().didPerformDragOperation(handled); -@@ -3163,6 +3283,16 @@ void WebPageProxy::didStartDrag() + if (!hasRunningProcess()) +@@ -3229,6 +3358,16 @@ void WebPageProxy::didStartDrag() discardQueuedMouseEvents(); send(Messages::WebPage::DidStartDrag()); @@ -17546,8 +16969,8 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 } void WebPageProxy::dragCancelled() -@@ -3319,17 +3449,38 @@ void WebPageProxy::processNextQueuedMouseEvent() - m_process->startResponsivenessTimer(); +@@ -3373,17 +3512,38 @@ void WebPageProxy::processNextQueuedMouseEvent() + process->startResponsivenessTimer(); } - std::optional> sandboxExtensions; @@ -17558,17 +16981,17 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #if PLATFORM(MAC) - bool eventMayStartDrag = !m_currentDragOperation && eventType == WebEventType::MouseMove && event.button() != WebMouseEventButton::None; - if (eventMayStartDrag) -- sandboxExtensions = SandboxExtension::createHandlesForMachLookup({ "com.apple.iconservices"_s, "com.apple.iconservices.store"_s }, process().auditToken(), SandboxExtension::MachBootstrapOptions::EnableMachBootstrap); +- sandboxExtensions = SandboxExtension::createHandlesForMachLookup({ "com.apple.iconservices"_s, "com.apple.iconservices.store"_s }, process->auditToken(), SandboxExtension::MachBootstrapOptions::EnableMachBootstrap); + bool eventMayStartDrag = !m_currentDragOperation && eventType == WebEventType::MouseMove && event.button() != WebMouseEventButton::None; + if (eventMayStartDrag) -+ sandboxExtensions = SandboxExtension::createHandlesForMachLookup({ "com.apple.iconservices"_s, "com.apple.iconservices.store"_s }, process().auditToken(), SandboxExtension::MachBootstrapOptions::EnableMachBootstrap); ++ sandboxExtensions = SandboxExtension::createHandlesForMachLookup({ "com.apple.iconservices"_s, "com.apple.iconservices.store"_s }, process->auditToken(), SandboxExtension::MachBootstrapOptions::EnableMachBootstrap); #endif - LOG_WITH_STREAM(MouseHandling, stream << "UIProcess: sent mouse event " << eventType << " (queue size " << internals().mouseEventQueue.size() << ")"); -- m_process->recordUserGestureAuthorizationToken(event.authorizationToken()); +- process->recordUserGestureAuthorizationToken(event.authorizationToken()); - sendMouseEvent(m_mainFrame->frameID(), event, WTFMove(sandboxExtensions)); + LOG_WITH_STREAM(MouseHandling, stream << "UIProcess: sent mouse event " << eventType << " (queue size " << internals().mouseEventQueue.size() << ")"); -+ m_process->recordUserGestureAuthorizationToken(event.authorizationToken()); ++ process->recordUserGestureAuthorizationToken(event.authorizationToken()); + sendMouseEvent(m_mainFrame->frameID(), event, WTFMove(sandboxExtensions)); + } else { +#if PLATFORM(WIN) || PLATFORM(COCOA) @@ -17592,16 +17015,16 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 } void WebPageProxy::doAfterProcessingAllPendingMouseEvents(WTF::Function&& action) -@@ -3489,6 +3640,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) +@@ -3543,6 +3703,8 @@ void WebPageProxy::wheelEventHandlingCompleted(bool wasHandled) - if (auto* automationSession = process().processPool().automationSession()) + if (RefPtr automationSession = process().processPool().automationSession()) automationSession->wheelEventsFlushedForPage(*this); + + m_inspectorController->didProcessAllPendingWheelEvents(); } void WebPageProxy::cacheWheelEventScrollingAccelerationCurve(const NativeWebWheelEvent& nativeWheelEvent) -@@ -3643,7 +3796,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) +@@ -3690,7 +3852,7 @@ static TrackingType mergeTrackingTypes(TrackingType a, TrackingType b) void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent) { @@ -17610,16 +17033,16 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 for (auto& touchPoint : touchStartEvent.touchPoints()) { auto location = touchPoint.location(); auto update = [this, location](TrackingType& trackingType, EventTrackingRegions::EventType eventType) { -@@ -4071,6 +4224,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& processNavi +@@ -4161,6 +4323,8 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& processNavi if (policyAction != PolicyAction::Use || (!preferences().siteIsolationEnabled() && !frame.isMainFrame()) || !navigation) { + if (policyAction == PolicyAction::Download && navigation) + internals().decidePolicyForResponseRequest = navigation->currentRequest(); auto previousPendingNavigationID = internals().pageLoadState.pendingAPIRequest().navigationID; - receivedPolicyDecision(policyAction, navigation, navigation->websitePolicies(), WTFMove(navigationAction), WTFMove(sender), WillContinueLoadInNewProcess::No, std::nullopt); + receivedPolicyDecision(policyAction, navigation, navigation->protectedWebsitePolicies().get(), WTFMove(navigationAction), WTFMove(sender), WillContinueLoadInNewProcess::No, std::nullopt); #if HAVE(APP_SSO) -@@ -4178,6 +4333,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& processNavi +@@ -4268,6 +4432,7 @@ void WebPageProxy::receivedNavigationPolicyDecision(WebProcessProxy& processNavi void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, RefPtr&& websitePolicies, std::variant, Ref>&& navigationActionOrResponse, Ref&& sender, WillContinueLoadInNewProcess willContinueLoadInNewProcess, std::optional sandboxExtensionHandle) { @@ -17627,7 +17050,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 if (!hasRunningProcess()) { sender->send(PolicyDecision { isNavigatingToAppBoundDomain() }); return; -@@ -5031,6 +5187,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) +@@ -5131,6 +5296,11 @@ void WebPageProxy::pageScaleFactorDidChange(double scaleFactor) m_pageScaleFactor = scaleFactor; } @@ -17639,7 +17062,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 void WebPageProxy::pluginScaleFactorDidChange(double pluginScaleFactor) { MESSAGE_CHECK(m_process, scaleFactorIsValid(pluginScaleFactor)); -@@ -5548,6 +5709,7 @@ void WebPageProxy::didDestroyNavigationShared(Ref&& process, ui +@@ -5644,6 +5814,7 @@ void WebPageProxy::didDestroyNavigationShared(Ref&& process, ui PageClientProtector protector(pageClient()); m_navigationState->didDestroyNavigation(process->coreProcessIdentifier(), navigationID); @@ -17647,7 +17070,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 } void WebPageProxy::didStartProvisionalLoadForFrame(FrameIdentifier frameID, FrameInfoData&& frameInfo, ResourceRequest&& request, uint64_t navigationID, URL&& url, URL&& unreachableURL, const UserData& userData) -@@ -5794,6 +5956,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p +@@ -5898,6 +6069,8 @@ void WebPageProxy::didFailProvisionalLoadForFrameShared(Ref&& p m_failingProvisionalLoadURL = { }; @@ -17656,32 +17079,32 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 // If the provisional page's load fails then we destroy the provisional page. if (m_provisionalPage && m_provisionalPage->mainFrame() == &frame && willContinueLoading == WillContinueLoading::No) m_provisionalPage = nullptr; -@@ -6402,7 +6566,15 @@ void WebPageProxy::beginSafeBrowsingCheck(const URL&, bool, WebFramePolicyListen +@@ -6517,7 +6690,15 @@ void WebPageProxy::beginSafeBrowsingCheck(const URL&, bool, WebFramePolicyListen void WebPageProxy::decidePolicyForNavigationActionAsync(FrameInfoData&& frameInfo, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfo, std::optional originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, CompletionHandler&& completionHandler) { -- decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); +- decidePolicyForNavigationActionAsyncShared(protectedProcess(), internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); + if (m_inspectorController->shouldPauseLoading()) { -+ decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); ++ decidePolicyForNavigationActionAsyncShared(protectedProcess(), internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); + m_inspectorController->setContinueLoadingCallback([this, protectedThis = Ref { *this }, frameInfo = WTFMove(frameInfo), navigationID, navigationActionData = WTFMove(navigationActionData), + originatingFrameInfo = WTFMove(originatingFrameInfo), originatingPageID, originalRequest, request = WTFMove(request), requestBody = WTFMove(requestBody), completionHandler = WTFMove(completionHandler)] () mutable { -+ decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); ++ decidePolicyForNavigationActionAsyncShared(protectedProcess(), internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); + }); + } else { -+ decidePolicyForNavigationActionAsyncShared(Ref { process() }, internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); ++ decidePolicyForNavigationActionAsyncShared(protectedProcess(), internals().webPageID, WTFMove(frameInfo), navigationID, WTFMove(navigationActionData), WTFMove(originatingFrameInfo), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(completionHandler)); + } } void WebPageProxy::decidePolicyForNavigationActionAsyncShared(Ref&& process, PageIdentifier webPageID, FrameInfoData&& frameInfo, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfo, std::optional originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, CompletionHandler&& completionHandler) -@@ -6984,6 +7156,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa - if (auto* page = originatingFrameInfo->page()) +@@ -7102,6 +7283,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa + if (RefPtr page = originatingFrameInfo->page()) openerAppInitiatedState = page->lastNavigationWasAppInitiated(); + m_inspectorController->willCreateNewPage(windowFeatures, request.url()); auto completionHandler = [this, protectedThis = Ref { *this }, mainFrameURL, request, reply = WTFMove(reply), privateClickMeasurement = navigationActionData.privateClickMeasurement, openerAppInitiatedState = WTFMove(openerAppInitiatedState), openerFrameID = originatingFrameInfoData.frameID] (RefPtr newPage) mutable { if (!newPage) { reply(std::nullopt, std::nullopt); -@@ -7031,6 +7204,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa +@@ -7150,6 +7332,7 @@ void WebPageProxy::createNewPage(FrameInfoData&& originatingFrameInfoData, WebPa void WebPageProxy::showPage() { m_uiClient->showPage(this); @@ -17689,7 +17112,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 } bool WebPageProxy::hasOpenedPage() const -@@ -7110,6 +7284,10 @@ void WebPageProxy::closePage() +@@ -7229,6 +7412,10 @@ void WebPageProxy::closePage() if (isClosed()) return; @@ -17700,7 +17123,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 WEBPAGEPROXY_RELEASE_LOG(Process, "closePage:"); pageClient().clearAllEditCommands(); m_uiClient->close(this); -@@ -7146,6 +7324,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f +@@ -7265,6 +7452,8 @@ void WebPageProxy::runJavaScriptAlert(FrameIdentifier frameID, FrameInfoData&& f } runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [reply = WTFMove(reply)](WebPageProxy& page, WebFrameProxy* frame, FrameInfoData&& frameInfo, const String& message, CompletionHandler&& completion) mutable { @@ -17709,8 +17132,8 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 page.m_uiClient->runJavaScriptAlert(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)]() mutable { reply(); completion(); -@@ -7167,6 +7347,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& - if (auto* automationSession = process().processPool().automationSession()) +@@ -7286,6 +7475,8 @@ void WebPageProxy::runJavaScriptConfirm(FrameIdentifier frameID, FrameInfoData&& + if (RefPtr automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } + if (m_inspectorDialogAgent) @@ -17718,8 +17141,8 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [reply = WTFMove(reply)](WebPageProxy& page, WebFrameProxy* frame, FrameInfoData&& frameInfo, const String& message, CompletionHandler&& completion) mutable { page.m_uiClient->runJavaScriptConfirm(page, message, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)](bool result) mutable { -@@ -7190,6 +7372,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& - if (auto* automationSession = process().processPool().automationSession()) +@@ -7309,6 +7500,8 @@ void WebPageProxy::runJavaScriptPrompt(FrameIdentifier frameID, FrameInfoData&& + if (RefPtr automationSession = process().processPool().automationSession()) automationSession->willShowJavaScriptDialog(*this); } + if (m_inspectorDialogAgent) @@ -17727,7 +17150,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 runModalJavaScriptDialog(WTFMove(frame), WTFMove(frameInfo), message, [reply = WTFMove(reply), defaultValue](WebPageProxy& page, WebFrameProxy* frame, FrameInfoData&& frameInfo, const String& message, CompletionHandler&& completion) mutable { page.m_uiClient->runJavaScriptPrompt(page, message, defaultValue, frame, WTFMove(frameInfo), [reply = WTFMove(reply), completion = WTFMove(completion)](auto& result) mutable { -@@ -7304,6 +7488,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf +@@ -7425,6 +7618,8 @@ void WebPageProxy::runBeforeUnloadConfirmPanel(FrameIdentifier frameID, FrameInf return; } } @@ -17735,8 +17158,8 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 + m_inspectorDialogAgent->javascriptDialogOpening("beforeunload"_s, message); // Since runBeforeUnloadConfirmPanel() can spin a nested run loop we need to turn off the responsiveness timer and the tryClose timer. - m_process->stopResponsivenessTimer(); -@@ -7754,6 +7940,11 @@ void WebPageProxy::resourceLoadDidCompleteWithError(ResourceLoadInfo&& loadInfo, + protectedProcess()->stopResponsivenessTimer(); +@@ -7883,6 +8078,11 @@ void WebPageProxy::resourceLoadDidCompleteWithError(ResourceLoadInfo&& loadInfo, } #if ENABLE(FULLSCREEN_API) @@ -17748,32 +17171,42 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 WebFullScreenManagerProxy* WebPageProxy::fullScreenManager() { return m_fullScreenManager.get(); -@@ -8671,6 +8862,8 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) - if (auto* automationSession = process().processPool().automationSession()) - automationSession->mouseEventsFlushedForPage(*this); - didFinishProcessingAllPendingMouseEvents(); -+ if (m_dragEventsQueued == 0) -+ m_inspectorController->didProcessAllPendingMouseEvents(); - } - break; +@@ -7959,6 +8159,17 @@ void WebPageProxy::requestDOMPasteAccess(WebCore::DOMPasteAccessCategory pasteAc + { + MESSAGE_CHECK_COMPLETION(m_process, !originIdentifier.isEmpty(), completionHandler(DOMPasteAccessResponse::DeniedForGesture)); + ++ if (isControlledByAutomation()) { ++ DOMPasteAccessResponse response = DOMPasteAccessResponse::DeniedForGesture; ++ if (permissionForAutomation(originIdentifier, "clipboard-read"_s).value_or(false)) { ++ response = DOMPasteAccessResponse::GrantedForGesture; ++ // Grant access to general pasteboard. ++ willPerformPasteCommand(DOMPasteAccessCategory::General); ++ } ++ completionHandler(response); ++ return; ++ } ++ + m_pageClient->requestDOMPasteAccess(pasteAccessCategory, elementRect, originIdentifier, WTFMove(completionHandler)); + } + +@@ -8762,6 +8973,8 @@ void WebPageProxy::mouseEventHandlingCompleted(std::optional event + if (RefPtr automationSession = process().processPool().automationSession()) + automationSession->mouseEventsFlushedForPage(*this); + didFinishProcessingAllPendingMouseEvents(); ++ if (m_dragEventsQueued == 0) ++ m_inspectorController->didProcessAllPendingMouseEvents(); } -@@ -8709,7 +8902,6 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) - // The call to doneWithKeyEvent may close this WebPage. - // Protect against this being destroyed. - Ref protect(*this); -- - pageClient().doneWithKeyEvent(event, handled); - if (!handled) - m_uiClient->didNotHandleKeyEvent(this, event); -@@ -8718,6 +8910,7 @@ void WebPageProxy::didReceiveEvent(WebEventType eventType, bool handled) - if (!canProcessMoreKeyEvents) { - if (auto* automationSession = process().processPool().automationSession()) - automationSession->keyboardEventsFlushedForPage(*this); -+ m_inspectorController->didProcessAllPendingKeyboardEvents(); - } - break; + } + +@@ -8796,6 +9009,7 @@ void WebPageProxy::keyEventHandlingCompleted(std::optional eventTy + if (!canProcessMoreKeyEvents) { + if (RefPtr automationSession = process().processPool().automationSession()) + automationSession->keyboardEventsFlushedForPage(*this); ++ m_inspectorController->didProcessAllPendingKeyboardEvents(); } -@@ -9072,7 +9265,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) + } + +@@ -9201,7 +9415,10 @@ void WebPageProxy::dispatchProcessDidTerminate(ProcessTerminationReason reason) { WEBPAGEPROXY_RELEASE_LOG_ERROR(Loading, "dispatchProcessDidTerminate: reason=%" PUBLIC_LOG_STRING, processTerminationReasonToString(reason)); @@ -17785,7 +17218,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 if (m_loaderClient) handledByClient = reason != ProcessTerminationReason::RequestedByClient && m_loaderClient->processDidCrash(*this); else -@@ -9445,6 +9641,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const +@@ -9564,6 +9781,7 @@ bool WebPageProxy::useGPUProcessForDOMRenderingEnabled() const WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr&& websitePolicies) { @@ -17793,7 +17226,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 WebPageCreationParameters parameters; parameters.processDisplayName = configuration().processDisplayName(); -@@ -9646,6 +9843,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc +@@ -9770,6 +9988,8 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc parameters.httpsUpgradeEnabled = preferences().upgradeKnownHostsToHTTPSEnabled() ? m_configuration->httpsUpgradeEnabled() : false; @@ -17802,7 +17235,7 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 #if PLATFORM(IOS) || PLATFORM(VISION) // FIXME: This is also being passed over the to WebProcess via the PreferencesStore. parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload = allowsDeprecatedSynchronousXMLHttpRequestDuringUnload(); -@@ -9730,8 +9929,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam +@@ -9858,8 +10078,42 @@ void WebPageProxy::gamepadActivity(const Vector>& gam #endif @@ -17845,24 +17278,47 @@ index 198ba50873059dc6dc9afb8d6bc97ed0538ed4ee..8ca9b6b657d70c1996c84c7b19aaf743 if (negotiatedLegacyTLS == NegotiatedLegacyTLS::Yes) { m_navigationClient->shouldAllowLegacyTLS(*this, authenticationChallenge.get(), [this, protectedThis = Ref { *this }, authenticationChallenge] (bool shouldAllowLegacyTLS) { if (shouldAllowLegacyTLS) -@@ -9835,6 +10068,15 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge +@@ -9963,6 +10217,12 @@ void WebPageProxy::requestGeolocationPermissionForFrame(GeolocationIdentifier ge request->deny(); }; -+ auto securityOrigin = frameInfo.securityOrigin.securityOrigin(); -+ auto permissions = m_permissionsForAutomation.find(securityOrigin->toString()); -+ if (permissions == m_permissionsForAutomation.end()) -+ permissions = m_permissionsForAutomation.find("*"_s); -+ if (permissions != m_permissionsForAutomation.end()) { -+ completionHandler(permissions->value.contains("geolocation"_s)); ++ if (isControlledByAutomation()) { ++ auto securityOrigin = frameInfo.securityOrigin.securityOrigin(); ++ completionHandler(permissionForAutomation(securityOrigin->toString(), "geolocation"_s).value_or(false)); + return; + } + // FIXME: Once iOS migrates to the new WKUIDelegate SPI, clean this up // and make it one UIClient call that calls the completionHandler with false // if there is no delegate instead of returning the completionHandler +@@ -10017,6 +10277,12 @@ void WebPageProxy::queryPermission(const ClientOrigin& clientOrigin, const Permi + shouldChangeDeniedToPrompt = false; + + if (sessionID().isEphemeral()) { ++ auto permission = permissionForAutomation(clientOrigin.topOrigin.toString(), name); ++ if (permission.has_value()) { ++ completionHandler(permission.value() ? PermissionState::Granted : PermissionState::Denied); ++ return; ++ } ++ + completionHandler(shouldChangeDeniedToPrompt ? PermissionState::Prompt : PermissionState::Denied); + return; + } +@@ -10031,6 +10297,12 @@ void WebPageProxy::queryPermission(const ClientOrigin& clientOrigin, const Permi + return; + } + ++ auto permission = permissionForAutomation(clientOrigin.topOrigin.toString(), name); ++ if (permission.has_value()) { ++ completionHandler(permission.value() ? PermissionState::Granted : PermissionState::Denied); ++ return; ++ } ++ + if (!canAPISucceed) { + completionHandler(shouldChangeDeniedToPrompt ? PermissionState::Prompt : PermissionState::Denied); + return; diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h -index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4a2ba5b31 100644 +index 81e3d314c82e29d9c6f157ed1764e6b26b34f1e9..303b0c6a886e56f70d7e155a1758ebd41bbdc880 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.h +++ b/Source/WebKit/UIProcess/WebPageProxy.h @@ -26,6 +26,7 @@ @@ -17872,8 +17328,8 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 +#include "APIWebsitePolicies.h" #include "MessageReceiver.h" #include "MessageSender.h" - #include -@@ -34,6 +35,24 @@ + #include +@@ -35,6 +36,24 @@ #include #include #include @@ -17898,7 +17354,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 namespace API { class Attachment; -@@ -94,6 +113,7 @@ class DestinationColorSpace; +@@ -95,6 +114,7 @@ class DestinationColorSpace; class DragData; class FloatPoint; class FloatQuad; @@ -17914,7 +17370,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 class WebInspectorUIProxy; class WebKeyboardEvent; class WebMouseEvent; -@@ -580,6 +601,8 @@ public: +@@ -595,6 +616,8 @@ public: void setControlledByAutomation(bool); WebPageInspectorController& inspectorController() { return *m_inspectorController; } @@ -17923,7 +17379,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 #if PLATFORM(IOS_FAMILY) void showInspectorIndication(); -@@ -614,6 +637,7 @@ public: +@@ -628,6 +651,7 @@ public: bool hasSleepDisabler() const; #if ENABLE(FULLSCREEN_API) @@ -17931,7 +17387,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 WebFullScreenManagerProxy* fullScreenManager(); API::FullscreenClient& fullscreenClient() const { return *m_fullscreenClient; } -@@ -702,6 +726,11 @@ public: +@@ -716,6 +740,11 @@ public: void setPageLoadStateObserver(std::unique_ptr&&); @@ -17943,7 +17399,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 void initializeWebPage(); void setDrawingArea(std::unique_ptr&&); -@@ -728,6 +757,7 @@ public: +@@ -739,6 +768,7 @@ public: void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&); RefPtr loadRequest(WebCore::ResourceRequest&&); RefPtr loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy, API::Object* userData = nullptr); @@ -17951,7 +17407,15 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 RefPtr loadFile(const String& fileURL, const String& resourceDirectoryURL, bool isAppInitiated = true, API::Object* userData = nullptr); RefPtr loadData(const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr); RefPtr loadData(const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData, WebCore::ShouldOpenExternalURLsPolicy); -@@ -1299,6 +1329,7 @@ public: +@@ -802,6 +832,7 @@ public: + void restoreSelectionInFocusedEditableElement(); + + PageClient& pageClient() const; ++ bool hasPageClient() const { return !!m_pageClient; } + + void setViewNeedsDisplay(const WebCore::Region&); + void requestScroll(const WebCore::FloatPoint& scrollPosition, const WebCore::IntPoint& scrollOrigin, WebCore::ScrollIsAnimated); +@@ -1309,6 +1340,7 @@ public: #endif void pageScaleFactorDidChange(double); @@ -17959,7 +17423,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 void pluginScaleFactorDidChange(double); void pluginZoomFactorDidChange(double); -@@ -1389,14 +1420,20 @@ public: +@@ -1398,14 +1430,20 @@ public: void didStartDrag(); void dragCancelled(); void setDragCaretRect(const WebCore::IntRect&); @@ -17981,7 +17445,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 #endif void processDidBecomeUnresponsive(); -@@ -1614,6 +1651,7 @@ public: +@@ -1625,6 +1663,7 @@ public: void setViewportSizeForCSSViewportUnits(const WebCore::FloatSize&); WebCore::FloatSize viewportSizeForCSSViewportUnits() const; @@ -17989,7 +17453,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 void didReceiveAuthenticationChallengeProxy(Ref&&, NegotiatedLegacyTLS); void negotiatedLegacyTLS(); void didNegotiateModernTLS(const URL&); -@@ -1648,6 +1686,8 @@ public: +@@ -1659,6 +1698,8 @@ public: #if PLATFORM(COCOA) || PLATFORM(GTK) RefPtr takeViewSnapshot(std::optional&&); @@ -17998,7 +17462,15 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 #endif #if ENABLE(WEB_CRYPTO) -@@ -2923,8 +2963,10 @@ private: +@@ -2484,6 +2525,7 @@ private: + RefPtr launchProcessForReload(); + + void requestNotificationPermission(const String& originString, CompletionHandler&&); ++ std::optional permissionForAutomation(const String& origin, const String& permission) const; + + void didChangeContentSize(const WebCore::IntSize&); + void didChangeIntrinsicContentSize(const WebCore::IntSize&); +@@ -2953,8 +2995,10 @@ private: String m_overrideContentSecurityPolicy; RefPtr m_inspector; @@ -18009,7 +17481,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 std::unique_ptr m_fullScreenManager; std::unique_ptr m_fullscreenClient; #endif -@@ -3106,6 +3148,22 @@ private: +@@ -3138,6 +3182,22 @@ private: std::optional m_currentDragOperation; bool m_currentDragIsOverFileInput { false }; unsigned m_currentDragNumberOfFilesToBeAccepted { 0 }; @@ -18032,7 +17504,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 #endif bool m_mainFrameHasHorizontalScrollbar { false }; -@@ -3273,6 +3331,10 @@ private: +@@ -3307,6 +3367,10 @@ private: RefPtr messageBody; }; Vector m_pendingInjectedBundleMessages; @@ -18044,7 +17516,7 @@ index 09dc8e03ab68b452cfae3b93f20565ff0d80f5a0..0a8f50078a2f7bc965ed34e067a6d5d4 #if PLATFORM(IOS_FAMILY) && ENABLE(DEVICE_ORIENTATION) std::unique_ptr m_webDeviceOrientationUpdateProviderProxy; diff --git a/Source/WebKit/UIProcess/WebPageProxy.messages.in b/Source/WebKit/UIProcess/WebPageProxy.messages.in -index 2531bdf69d387b180de1e9e917e493c20ad64cbd..56042234d6c5a31792c4bf7b398f13345024bf99 100644 +index e6184097085ccafc1aa7d012314c84eee090300a..7be7efca7dd8cf4092d5be39c9ee59856275b998 100644 --- a/Source/WebKit/UIProcess/WebPageProxy.messages.in +++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in @@ -29,6 +29,7 @@ messages -> WebPageProxy { @@ -18055,7 +17527,7 @@ index 2531bdf69d387b180de1e9e917e493c20ad64cbd..56042234d6c5a31792c4bf7b398f1334 DidChangeViewportProperties(struct WebCore::ViewportAttributes attributes) DidReceiveEvent(enum:uint8_t WebKit::WebEventType eventType, bool handled) -@@ -179,6 +180,7 @@ messages -> WebPageProxy { +@@ -182,6 +183,7 @@ messages -> WebPageProxy { #endif PageScaleFactorDidChange(double scaleFactor) @@ -18063,7 +17535,7 @@ index 2531bdf69d387b180de1e9e917e493c20ad64cbd..56042234d6c5a31792c4bf7b398f1334 PluginScaleFactorDidChange(double zoomFactor) PluginZoomFactorDidChange(double zoomFactor) -@@ -308,10 +310,12 @@ messages -> WebPageProxy { +@@ -307,10 +309,14 @@ messages -> WebPageProxy { StartDrag(struct WebCore::DragItem dragItem, WebKit::ShareableBitmap::Handle dragImage) SetPromisedDataForImage(String pasteboardName, WebKit::SharedMemory::Handle imageHandle, String filename, String extension, String title, String url, String visibleURL, WebKit::SharedMemory::Handle archiveHandle, String originIdentifier) #endif @@ -18071,18 +17543,19 @@ index 2531bdf69d387b180de1e9e917e493c20ad64cbd..56042234d6c5a31792c4bf7b398f1334 +#if (PLATFORM(GTK) || PLATFORM(WPE)) && ENABLE(DRAG_SUPPORT) StartDrag(WebCore::SelectionData selectionData, OptionSet dragOperationMask, std::optional dragImage, WebCore::IntPoint dragImageHotspot) #endif -- + +#if PLATFORM(WIN) && ENABLE(DRAG_SUPPORT) + StartDrag(HashMap> dragDataMap) +#endif - #if ENABLE(DRAG_SUPPORT) - DidPerformDragOperation(bool handled) - #endif ++ + #if PLATFORM(IOS_FAMILY) && ENABLE(DRAG_SUPPORT) + DidHandleDragStartRequest(bool started) + DidHandleAdditionalDragItemsRequest(bool added) diff --git a/Source/WebKit/UIProcess/WebProcessCache.cpp b/Source/WebKit/UIProcess/WebProcessCache.cpp -index b94b04e7b3558585f49927e1e3bd370e6619bad6..c0cf985d704368bc5c1d4b8e4d556671b3d386e7 100644 +index 1329e19aa1f93077c7d2f5fe98838731b79692a5..8e697f27ef47f0b66f1de6197ab1ce2503f2ed0f 100644 --- a/Source/WebKit/UIProcess/WebProcessCache.cpp +++ b/Source/WebKit/UIProcess/WebProcessCache.cpp -@@ -81,6 +81,10 @@ bool WebProcessCache::canCacheProcess(WebProcessProxy& process) const +@@ -82,6 +82,10 @@ bool WebProcessCache::canCacheProcess(WebProcessProxy& process) const return false; } @@ -18094,10 +17567,10 @@ index b94b04e7b3558585f49927e1e3bd370e6619bad6..c0cf985d704368bc5c1d4b8e4d556671 } diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp -index 278394445e636fc68adb47ae178274e2a5dced14..0de9f2a8fb4a3327a3b53b9cf01526c0eeef1c87 100644 +index 9fa1ce31e9dfd76e51588fa287989a43bfb1075a..50dcd16e303bebeb0f6f1a31e2c4df544827b2c4 100644 --- a/Source/WebKit/UIProcess/WebProcessPool.cpp +++ b/Source/WebKit/UIProcess/WebProcessPool.cpp -@@ -384,10 +384,10 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& +@@ -376,10 +376,10 @@ void WebProcessPool::setAutomationClient(std::unique_ptr& void WebProcessPool::setOverrideLanguages(Vector&& languages) { @@ -18109,11 +17582,11 @@ index 278394445e636fc68adb47ae178274e2a5dced14..0de9f2a8fb4a3327a3b53b9cf01526c0 + sendToAllProcesses(Messages::WebProcess::UserPreferredLanguagesChanged(m_configuration->overrideLanguages())); #if ENABLE(GPU_PROCESS) - if (auto* gpuProcess = GPUProcessProxy::singletonIfCreated()) -@@ -395,9 +395,10 @@ void WebProcessPool::setOverrideLanguages(Vector&& languages) + if (RefPtr gpuProcess = GPUProcessProxy::singletonIfCreated()) +@@ -387,9 +387,10 @@ void WebProcessPool::setOverrideLanguages(Vector&& languages) #endif #if USE(SOUP) - for (auto networkProcess : NetworkProcessProxy::allNetworkProcesses()) + for (Ref networkProcess : NetworkProcessProxy::allNetworkProcesses()) - networkProcess->send(Messages::NetworkProcess::UserPreferredLanguagesChanged(overrideLanguages()), 0); + networkProcess->send(Messages::NetworkProcess::UserPreferredLanguagesChanged(m_configuration->overrideLanguages()), 0); #endif @@ -18122,22 +17595,7 @@ index 278394445e636fc68adb47ae178274e2a5dced14..0de9f2a8fb4a3327a3b53b9cf01526c0 void WebProcessPool::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled) { -@@ -533,6 +534,14 @@ void WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess(Remo - - RefPtr requestingProcess = requestingProcessIdentifier ? WebProcessProxy::processForIdentifier(*requestingProcessIdentifier) : nullptr; - WebProcessPool* processPool = requestingProcess ? &requestingProcess->processPool() : processPools()[0]; -+ // Playwright begin -+ for (auto& process : websiteDataStore->processes()) { -+ if (process.processPoolIfExists()) { -+ processPool = process.processPoolIfExists(); -+ break; -+ } -+ } -+ // Playwright end - ASSERT(processPool); - - WebProcessProxy* remoteWorkerProcessProxy { nullptr }; -@@ -841,7 +850,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa +@@ -829,7 +830,7 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa #endif parameters.cacheModel = LegacyGlobalSettings::singleton().cacheModel(); @@ -18147,22 +17605,22 @@ index 278394445e636fc68adb47ae178274e2a5dced14..0de9f2a8fb4a3327a3b53b9cf01526c0 parameters.urlSchemesRegisteredAsEmptyDocument = copyToVector(m_schemesToRegisterAsEmptyDocument); diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp -index e515c6978a3b9e1d408541afa4e8b82875c7f376..b36cab14e2989a692a3f7976b0bef9d5b621f0c9 100644 +index 8e19e14a7dec67b23ed4570523f4e8f53e2cf57a..ca634c57e08ffc346abd22852d9923c4165f0e9f 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp -@@ -170,6 +170,11 @@ Vector> WebProcessProxy::allProcesses() +@@ -173,6 +173,11 @@ Vector> WebProcessProxy::allProcesses() }); } -+Vector> WebProcessProxy::allProcessesForInspector() ++Vector> WebProcessProxy::allProcessesForInspector() +{ + return copyToVector(allProcesses()); +} + RefPtr WebProcessProxy::processForIdentifier(ProcessIdentifier identifier) { - return allProcessMap().get(identifier).get(); -@@ -486,6 +491,26 @@ void WebProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOpt + return allProcessMap().get(identifier); +@@ -513,6 +518,26 @@ void WebProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOpt if (WebKit::isInspectorProcessPool(processPool())) launchOptions.extraInitializationData.add("inspector-process"_s, "1"_s); @@ -18190,22 +17648,22 @@ index e515c6978a3b9e1d408541afa4e8b82875c7f376..b36cab14e2989a692a3f7976b0bef9d5 if (isPrewarmed()) diff --git a/Source/WebKit/UIProcess/WebProcessProxy.h b/Source/WebKit/UIProcess/WebProcessProxy.h -index a80bc87a48f681e0a2ab3078839ac0cf8e3b9d85..e59c287057661d594862533bf97212f2120d9e65 100644 +index 17944648b6baf0adec20f6756e65f192fa82cd1d..66aee2da889d85cba8462c9a7a6f36ff32346713 100644 --- a/Source/WebKit/UIProcess/WebProcessProxy.h +++ b/Source/WebKit/UIProcess/WebProcessProxy.h -@@ -164,6 +164,7 @@ public: +@@ -161,6 +161,7 @@ public: static void forWebPagesWithOrigin(PAL::SessionID, const WebCore::SecurityOriginData&, const Function&); static Vector> allowedFirstPartiesForCookies(); -+ static Vector> allProcessesForInspector(); ++ static Vector> allProcessesForInspector(); WebConnection* webConnection() const { return m_webConnection.get(); } - + RefPtr protectedWebConnection() const { return m_webConnection; } diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -index ff22a4dd064d2eecd549e6c44ebd34ca15492ebc..4001117d975aeeeaed5536f0c5afa36077e72a75 100644 +index 6bed35d7964b9ccb1d510cab1203fa6b99db45ea..fde4f063f52bcae25b0788f33c64d02e951b407b 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp -@@ -294,7 +294,8 @@ SOAuthorizationCoordinator& WebsiteDataStore::soAuthorizationCoordinator(const W +@@ -298,7 +298,8 @@ SOAuthorizationCoordinator& WebsiteDataStore::soAuthorizationCoordinator(const W static Ref networkProcessForSession(PAL::SessionID sessionID) { @@ -18215,7 +17673,7 @@ index ff22a4dd064d2eecd549e6c44ebd34ca15492ebc..4001117d975aeeeaed5536f0c5afa360 if (sessionID.isEphemeral()) { // Reuse a previous persistent session network process for ephemeral sessions. for (auto& dataStore : allDataStores().values()) { -@@ -2216,6 +2217,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, +@@ -2147,6 +2148,12 @@ void WebsiteDataStore::originDirectoryForTesting(WebCore::ClientOrigin&& origin, protectedNetworkProcess()->websiteDataOriginDirectoryForTesting(m_sessionID, WTFMove(origin), type, WTFMove(completionHandler)); } @@ -18229,10 +17687,10 @@ index ff22a4dd064d2eecd549e6c44ebd34ca15492ebc..4001117d975aeeeaed5536f0c5afa360 void WebsiteDataStore::hasAppBoundSession(CompletionHandler&& completionHandler) const { diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -index 9fb3ac0e6abcd6732b774c7adac72c91088c4f37..1bce09f386c5541e9932f6a26cbb374d8114567c 100644 +index 5f316ed41917644063eb06e1ee1dcf7985580723..8305c0187811d936390d30d6481bc901e51794fc 100644 --- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h +++ b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h -@@ -96,6 +96,7 @@ class DeviceIdHashSaltStorage; +@@ -97,6 +97,7 @@ class DeviceIdHashSaltStorage; class DownloadProxy; class NetworkProcessProxy; class SOAuthorizationCoordinator; @@ -18240,17 +17698,16 @@ index 9fb3ac0e6abcd6732b774c7adac72c91088c4f37..1bce09f386c5541e9932f6a26cbb374d class VirtualAuthenticatorManager; class WebPageProxy; class WebProcessPool; -@@ -107,6 +108,7 @@ enum class UnifiedOriginStorageLevel : uint8_t; +@@ -111,12 +112,21 @@ enum class UnifiedOriginStorageLevel : uint8_t; enum class WebsiteDataFetchOption : uint8_t; enum class WebsiteDataType : uint32_t; +struct FrameInfoData; + struct ITPThirdPartyData; struct NetworkProcessConnectionInfo; struct WebPushMessage; struct WebsiteDataRecord; -@@ -118,6 +120,14 @@ enum class StorageAccessStatus : uint8_t; - enum class StorageAccessPromptStatus; - #endif + struct WebsiteDataStoreParameters; +class DownloadInstrumentation { +public: @@ -18263,7 +17720,7 @@ index 9fb3ac0e6abcd6732b774c7adac72c91088c4f37..1bce09f386c5541e9932f6a26cbb374d class WebsiteDataStore : public API::ObjectImpl, public Identified, public CanMakeWeakPtr, public CanMakeCheckedPtr { public: static Ref defaultDataStore(); -@@ -318,11 +328,13 @@ public: +@@ -314,11 +324,13 @@ public: const WebCore::CurlProxySettings& networkProxySettings() const { return m_proxySettings; } #endif @@ -18278,7 +17735,7 @@ index 9fb3ac0e6abcd6732b774c7adac72c91088c4f37..1bce09f386c5541e9932f6a26cbb374d void setNetworkProxySettings(WebCore::SoupNetworkProxySettings&&); const WebCore::SoupNetworkProxySettings& networkProxySettings() const { return m_networkProxySettings; } void setCookiePersistentStorage(const String&, SoupCookiePersistentStorageType); -@@ -407,6 +419,12 @@ public: +@@ -403,6 +415,12 @@ public: static const String& defaultBaseDataDirectory(); #endif @@ -18291,7 +17748,7 @@ index 9fb3ac0e6abcd6732b774c7adac72c91088c4f37..1bce09f386c5541e9932f6a26cbb374d void resetQuota(CompletionHandler&&); void resetStoragePersistedState(CompletionHandler&&); #if PLATFORM(IOS_FAMILY) -@@ -566,9 +584,11 @@ private: +@@ -565,9 +583,11 @@ private: WebCore::CurlProxySettings m_proxySettings; #endif @@ -18304,7 +17761,7 @@ index 9fb3ac0e6abcd6732b774c7adac72c91088c4f37..1bce09f386c5541e9932f6a26cbb374d WebCore::SoupNetworkProxySettings m_networkProxySettings; String m_cookiePersistentStoragePath; SoupCookiePersistentStorageType m_cookiePersistentStorageType { SoupCookiePersistentStorageType::SQLite }; -@@ -597,6 +617,10 @@ private: +@@ -596,6 +616,10 @@ private: RefPtr m_cookieStore; RefPtr m_networkProcess; @@ -18673,10 +18130,10 @@ index 71fb4cbd4338bcbda3a61019cbf4a914bf74953e..6f56e4afb345c23b4d8b91ee77f1991c virtual void unrealize() { }; virtual int renderHostFileDescriptor() { return -1; } diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp -index 9c0f5efdfb0e3ea188fdb48e9953a79c00671df6..8bf763775887898ff160dd42813735475cb7149d 100644 +index 1d19978e9d898171ba74bdb526f7db67840e25d1..c2c4118782744c01c67153d46284fcae70dd0291 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.cpp -@@ -358,6 +358,25 @@ void AcceleratedBackingStoreDMABuf::RendererCairo::paint(GtkWidget* widget, cair +@@ -413,6 +413,25 @@ void AcceleratedBackingStoreDMABuf::RendererCairo::paint(GtkWidget* widget, cair } #endif @@ -18699,10 +18156,10 @@ index 9c0f5efdfb0e3ea188fdb48e9953a79c00671df6..8bf763775887898ff160dd4281373547 + return m_flippedSurface.get(); +} + - void AcceleratedBackingStoreDMABuf::didCreateBuffer(uint64_t id, WTF::UnixFileDescriptor&& fd, const WebCore::IntSize& size, uint32_t format, uint32_t offset, uint32_t stride, uint64_t modifier) + void AcceleratedBackingStoreDMABuf::didCreateBuffer(uint64_t id, const WebCore::IntSize& size, uint32_t format, Vector&& fds, Vector&& offsets, Vector&& strides, uint64_t modifier) { #if USE(GBM) -@@ -520,6 +539,15 @@ bool AcceleratedBackingStoreDMABuf::paint(cairo_t* cr, const WebCore::IntRect& c +@@ -576,6 +595,15 @@ bool AcceleratedBackingStoreDMABuf::paint(cairo_t* cr, const WebCore::IntRect& c } #endif @@ -18719,10 +18176,10 @@ index 9c0f5efdfb0e3ea188fdb48e9953a79c00671df6..8bf763775887898ff160dd4281373547 #endif // USE(EGL) diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h -index 66f42a891c7672604c0163d0b3157cbc9af7fc44..bebaa3f0bd732fbba75a158ce2b02bbd3f6d9c77 100644 +index b73a9be34afe38a37e06eca0c8bfd78dfab88e99..b3bf1185fddaa7f61da0845a05869301689709e4 100644 --- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h +++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreDMABuf.h -@@ -86,6 +86,7 @@ private: +@@ -89,6 +89,7 @@ private: #else bool paint(cairo_t*, const WebCore::IntRect&) override; #endif @@ -18730,7 +18187,7 @@ index 66f42a891c7672604c0163d0b3157cbc9af7fc44..bebaa3f0bd732fbba75a158ce2b02bbd void unrealize() override; void update(const LayerTreeContext&) override; -@@ -175,6 +176,7 @@ private: +@@ -178,6 +179,7 @@ private: #else virtual void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const = 0; #endif @@ -18738,7 +18195,7 @@ index 66f42a891c7672604c0163d0b3157cbc9af7fc44..bebaa3f0bd732fbba75a158ce2b02bbd Buffer* buffer() const { return m_buffer.get(); } -@@ -199,6 +201,7 @@ private: +@@ -202,6 +204,7 @@ private: #else void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const override; #endif @@ -18746,7 +18203,7 @@ index 66f42a891c7672604c0163d0b3157cbc9af7fc44..bebaa3f0bd732fbba75a158ce2b02bbd unsigned m_textureID { 0 }; #if USE(GTK4) -@@ -220,8 +223,10 @@ private: +@@ -223,8 +226,10 @@ private: #else void paint(GtkWidget*, cairo_t*, const WebCore::IntRect&) const override; #endif @@ -19018,11 +18475,28 @@ index 0000000000000000000000000000000000000000..6a204c5bba8fb95ddb2d1c14cae7a3a7 +} + +} // namespace WebKit +diff --git a/Source/WebKit/UIProcess/gtk/WebPasteboardProxyGtk.cpp b/Source/WebKit/UIProcess/gtk/WebPasteboardProxyGtk.cpp +index d18b3e777203ef5d0f33884f909bc598d3526831..aef80b47359d7a2e4805a006dc59cd60d499a60e 100644 +--- a/Source/WebKit/UIProcess/gtk/WebPasteboardProxyGtk.cpp ++++ b/Source/WebKit/UIProcess/gtk/WebPasteboardProxyGtk.cpp +@@ -77,8 +77,10 @@ void WebPasteboardProxy::setPrimarySelectionOwner(WebFrameProxy* frame) + if (m_primarySelectionOwner == frame) + return; + +- if (m_primarySelectionOwner) +- m_primarySelectionOwner->collapseSelection(); ++// Playwright begin: do not change selection in another page! ++ // if (m_primarySelectionOwner) ++ // m_primarySelectionOwner->collapseSelection(); ++// Playwright end + + m_primarySelectionOwner = frame; + } diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -index a36702e99ff8212d5a4154b0880e63ad457d231b..e5efeee83c835551ed034c480061416479f1ef5d 100644 +index 347b40907e576ab0ba78d65bb91f12de70437a95..58307d07baca9d00c2318074e2a8610d0f09e1c6 100644 --- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm +++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm -@@ -465,6 +465,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) +@@ -472,6 +472,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect) void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled) { @@ -19241,7 +18715,7 @@ index 0000000000000000000000000000000000000000..721826c8c98fc85b68a4f45deaee69c1 + +#endif diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.h b/Source/WebKit/UIProcess/mac/PageClientImplMac.h -index 8b42f45a887fe7605c043f794432785da5c7a2f3..be6283c27e3e15d76cb766355c0c4e4320697295 100644 +index fc5dd0e2a5f27081287e7e438f3a2104c693ac6b..00748ae080a91519c24804b7857fcdf33961a346 100644 --- a/Source/WebKit/UIProcess/mac/PageClientImplMac.h +++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.h @@ -54,6 +54,8 @@ class PageClientImpl final : public PageClientImplCocoa @@ -19275,7 +18749,7 @@ index 8b42f45a887fe7605c043f794432785da5c7a2f3..be6283c27e3e15d76cb766355c0c4e43 void navigationGestureWillEnd(bool willNavigate, WebBackForwardListItem&) override; void navigationGestureDidEnd(bool willNavigate, WebBackForwardListItem&) override; diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm -index f57fbfcb950259723f5d7672198ec811491003a2..30eb73f44f4b8d2dc8888f86128b22155c0abf34 100644 +index 8ec513d0904d5c3a34971254f3da4e6773cda603..ccac6f3f492ea5ea0d96cffde215264691d2aade 100644 --- a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm +++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm @@ -81,6 +81,7 @@ @@ -19396,7 +18870,7 @@ index f57fbfcb950259723f5d7672198ec811491003a2..30eb73f44f4b8d2dc8888f86128b2215 } diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h -index 46aaf12accb35a2e7685d61887e76f0fe14d76c5..37f418197dcc3f6c74fac258ba77d00df0effeb2 100644 +index 6ab7aacaebfda818e3010bb06db72c8552ac598a..3e19cba50d73084392f62f176ad4c3153803e579 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h @@ -68,6 +68,7 @@ private: @@ -19408,10 +18882,10 @@ index 46aaf12accb35a2e7685d61887e76f0fe14d76c5..37f418197dcc3f6c74fac258ba77d00d bool showAfterPostProcessingContextData(); diff --git a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -index a38ea69b1ad0d77f4736b3de5e0e81741c0b9a98..86ce1429522e5f76fc432e3e903e72d920fc5791 100644 +index 57b1c6f4ecdbae5d8ffdcccfd60e1c083387c00d..f4961b46b3c348a62f31ca13c40be04aae76e02d 100644 --- a/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm +++ b/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm -@@ -480,6 +480,12 @@ void WebContextMenuProxyMac::getShareMenuItem(CompletionHandler&& listener) -@@ -986,6 +1000,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet +@@ -981,6 +995,11 @@ void WebLoaderStrategy::isResourceLoadFinished(CachedResource& resource, Complet void WebLoaderStrategy::setOnLineState(bool isOnLine) { @@ -20813,7 +20287,7 @@ index dead79df15381da7b12e6195b3617dc470bb6209..325fe0755e3cb1c31e6e4bfad54a4e2b if (m_isOnLine == isOnLine) return; -@@ -994,6 +1013,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) +@@ -989,6 +1008,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine) listener(isOnLine); } @@ -20827,7 +20301,7 @@ index dead79df15381da7b12e6195b3617dc470bb6209..325fe0755e3cb1c31e6e4bfad54a4e2b { WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::SetCaptureExtraNetworkLoadMetricsEnabled(enabled), 0); diff --git a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h -index 9c7b0d517fe931f248039a6084b517c224823fd4..bb74ca5c7479a84aeb83ebfe9eefe65ddcfc81cb 100644 +index c934b96510c03ed6301d3695edbb30710331d7f6..ee2e7ba36e50c14aee91e9f09d70b80026aeb8d5 100644 --- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h +++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h @@ -42,6 +42,7 @@ struct FetchOptions; @@ -20893,10 +20367,10 @@ index ee9c3c4f48c328daaa015e2122235e51349bd999..5b3a4d3e742147195e0ff9e88176759d auto permissionHandlers = m_requestsPerOrigin.take(securityOrigin); diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -index 9514de26d42a2fe4935c392213db2eb13d11ea2b..0300f932059a1b574e60397f4e510de2414dc7fa 100644 +index f7e7166c5905b7de9225d54447ff392c70996c35..37f543662f58af9ff4b5846c0d6b9ed60f0ed83a 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp -@@ -437,6 +437,8 @@ void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel lev +@@ -455,6 +455,8 @@ void WebChromeClient::addMessageToConsole(MessageSource source, MessageLevel lev { // Notify the bundle client. auto page = protectedPage(); @@ -20906,7 +20380,7 @@ index 9514de26d42a2fe4935c392213db2eb13d11ea2b..0300f932059a1b574e60397f4e510de2 } diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebDragClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebDragClient.cpp -index 87121e8b57e5ad7ef74857685f0db65e164a5bf8..580dca6ca0709a2d620d3999beb69856981a54e8 100644 +index 2eb0886f13ed035a53b8eaa60605de4dfe53fbe3..c46393209cb4f80704bbc9268fad4371347d5b30 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebDragClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebDragClient.cpp @@ -29,6 +29,13 @@ @@ -20929,14 +20403,14 @@ index 87121e8b57e5ad7ef74857685f0db65e164a5bf8..580dca6ca0709a2d620d3999beb69856 -#if !PLATFORM(COCOA) && !PLATFORM(GTK) +#if !PLATFORM(COCOA) && !PLATFORM(GTK) && !PLATFORM(WPE) && !PLATFORM(WIN) - void WebDragClient::startDrag(DragItem, DataTransfer&, LocalFrame&) + void WebDragClient::startDrag(DragItem, DataTransfer&, Frame&) { } diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp -index 9c27ea6ed43608c07cf17d8f76f10db802404ae0..a1cf6f75abd6f4dc05dbc0f0e3485c305809fd69 100644 +index 11640a4a126ac8f2b04f427687f1d3a4ec521bfc..e03eac20cabd7f0eb2c2e841b40844de24d8c2e1 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp +++ b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp -@@ -1540,14 +1540,6 @@ void WebLocalFrameLoaderClient::transitionToCommittedForNewPage() +@@ -1533,14 +1533,6 @@ void WebLocalFrameLoaderClient::transitionToCommittedForNewPage() if (webPage->scrollPinningBehavior() != ScrollPinningBehavior::DoNotPin) view->setScrollPinningBehavior(webPage->scrollPinningBehavior()); @@ -20952,10 +20426,10 @@ index 9c27ea6ed43608c07cf17d8f76f10db802404ae0..a1cf6f75abd6f4dc05dbc0f0e3485c30 void WebLocalFrameLoaderClient::didRestoreFromBackForwardCache() diff --git a/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm b/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm -index d54cfeeab7d873196f6ee7cebe42dce8d349d565..523c5496a669dcd3a3a5c4d6041ab30f5eda2fd2 100644 +index de80b6dd7b7b441d4f74f9f0504a76fec54a04be..26917ef68184952cb18186979ff9e5d41d3c390f 100644 --- a/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm +++ b/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm -@@ -133,7 +133,8 @@ static WebCore::CachedImage* cachedImage(Element& element) +@@ -129,7 +129,8 @@ static WebCore::CachedImage* cachedImage(Element& element) void WebDragClient::declareAndWriteDragImage(const String& pasteboardName, Element& element, const URL& url, const String& label, LocalFrame*) { @@ -20967,10 +20441,10 @@ index d54cfeeab7d873196f6ee7cebe42dce8d349d565..523c5496a669dcd3a3a5c4d6041ab30f diff --git a/Source/WebKit/WebProcess/WebCoreSupport/win/WebDragClientWin.cpp b/Source/WebKit/WebProcess/WebCoreSupport/win/WebDragClientWin.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..ba14bf43794ef03a4b090135631a8f7f880a2f02 +index 0000000000000000000000000000000000000000..af697fb9921aefa18da1d1148c5e93c3970960db --- /dev/null +++ b/Source/WebKit/WebProcess/WebCoreSupport/win/WebDragClientWin.cpp -@@ -0,0 +1,59 @@ +@@ -0,0 +1,58 @@ +/* + * Copyright (C) 2011 Igalia S.L. + * @@ -21010,7 +20484,6 @@ index 0000000000000000000000000000000000000000..ba14bf43794ef03a4b090135631a8f7f +#include +#include +#include -+#include + +//#include + @@ -21021,7 +20494,7 @@ index 0000000000000000000000000000000000000000..ba14bf43794ef03a4b090135631a8f7f +{ +} + -+void WebDragClient::startDrag(DragItem, DataTransfer& dataTransfer, LocalFrame& frame) ++void WebDragClient::startDrag(DragItem, DataTransfer& dataTransfer, Frame& frame) +{ + m_page->willStartDrag(); + m_page->send(Messages::WebPageProxy::StartDrag(dataTransfer.pasteboard().createDragDataMap())); @@ -21032,10 +20505,10 @@ index 0000000000000000000000000000000000000000..ba14bf43794ef03a4b090135631a8f7f +#endif // ENABLE(DRAG_SUPPORT) diff --git a/Source/WebKit/WebProcess/WebCoreSupport/wpe/WebDragClientWPE.cpp b/Source/WebKit/WebProcess/WebCoreSupport/wpe/WebDragClientWPE.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..dd5a7c8d64fda2abb888cfad417f6325b7e7bf78 +index 0000000000000000000000000000000000000000..af21b0d1dd4e9b1f74387a8f8a928244ae47bae6 --- /dev/null +++ b/Source/WebKit/WebProcess/WebCoreSupport/wpe/WebDragClientWPE.cpp -@@ -0,0 +1,59 @@ +@@ -0,0 +1,58 @@ +/* + * Copyright (C) 2011 Igalia S.L. + * @@ -21073,7 +20546,6 @@ index 0000000000000000000000000000000000000000..dd5a7c8d64fda2abb888cfad417f6325 +#include "WebPageProxyMessages.h" +#include +#include -+#include +#include +#include + @@ -21084,7 +20556,7 @@ index 0000000000000000000000000000000000000000..dd5a7c8d64fda2abb888cfad417f6325 +{ +} + -+void WebDragClient::startDrag(DragItem, DataTransfer& dataTransfer, LocalFrame&) ++void WebDragClient::startDrag(DragItem, DataTransfer& dataTransfer, Frame&) +{ + m_page->willStartDrag(); + @@ -21096,7 +20568,7 @@ index 0000000000000000000000000000000000000000..dd5a7c8d64fda2abb888cfad417f6325 + +#endif // ENABLE(DRAG_SUPPORT) diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp -index 600e8fe1ae52b0c5b1ee1826dc858b1666d9cc07..3b4583e76102070e19b114c8e48bd90cb8339f5a 100644 +index 488473aad91d0f79265bcb56e3ce9b411d079122..58802769990c6d0a134e831e5454281de46f9c1a 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp @@ -40,6 +40,7 @@ @@ -21107,7 +20579,7 @@ index 600e8fe1ae52b0c5b1ee1826dc858b1666d9cc07..3b4583e76102070e19b114c8e48bd90c #include #include #include -@@ -109,6 +110,16 @@ void DrawingAreaCoordinatedGraphics::scroll(const IntRect& scrollRect, const Int +@@ -105,6 +106,16 @@ void DrawingAreaCoordinatedGraphics::scroll(const IntRect& scrollRect, const Int ASSERT(m_scrollRect.isEmpty()); ASSERT(m_scrollOffset.isEmpty()); ASSERT(m_dirtyRegion.isEmpty()); @@ -21124,7 +20596,7 @@ index 600e8fe1ae52b0c5b1ee1826dc858b1666d9cc07..3b4583e76102070e19b114c8e48bd90c m_layerTreeHost->scrollNonCompositedContents(scrollRect); return; } -@@ -236,6 +247,7 @@ void DrawingAreaCoordinatedGraphics::updatePreferences(const WebPreferencesStore +@@ -218,6 +229,7 @@ void DrawingAreaCoordinatedGraphics::updatePreferences(const WebPreferencesStore settings.setAcceleratedCompositingEnabled(false); } #endif @@ -21132,7 +20604,7 @@ index 600e8fe1ae52b0c5b1ee1826dc858b1666d9cc07..3b4583e76102070e19b114c8e48bd90c settings.setForceCompositingMode(store.getBoolValueForKey(WebPreferencesKey::forceCompositingModeKey())); // Fixed position elements need to be composited and create stacking contexts // in order to be scrolled by the ScrollingCoordinator. -@@ -635,6 +647,11 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay +@@ -573,6 +585,11 @@ void DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode(GraphicsLay m_scrollOffset = IntSize(); m_displayTimer.stop(); m_isWaitingForDidUpdate = false; @@ -21144,7 +20616,7 @@ index 600e8fe1ae52b0c5b1ee1826dc858b1666d9cc07..3b4583e76102070e19b114c8e48bd90c } void DrawingAreaCoordinatedGraphics::sendEnterAcceleratedCompositingModeIfNeeded() -@@ -696,6 +713,11 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() +@@ -630,6 +647,11 @@ void DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode() // UI process, we still need to let it know about the new contents, so send an Update message. send(Messages::DrawingAreaProxy::Update(0, WTFMove(updateInfo))); } @@ -21157,10 +20629,10 @@ index 600e8fe1ae52b0c5b1ee1826dc858b1666d9cc07..3b4583e76102070e19b114c8e48bd90c void DrawingAreaCoordinatedGraphics::scheduleDisplay() diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -index 0b5c370117f2afbbd17132462c4a67738f9751ff..192a19e8d4da8f6b11135f06e147d2a6f5abcebc 100644 +index 0bd870f9c0f2ff5cbb638701dab0dca3595bbc4a..fd09e59c2a94324a2ebb4266196e910d53b54686 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp -@@ -209,8 +209,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) +@@ -198,8 +198,16 @@ void LayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer) void LayerTreeHost::scrollNonCompositedContents(const IntRect& rect) { auto* frameView = m_webPage.localMainFrameView(); @@ -21176,8 +20648,8 @@ index 0b5c370117f2afbbd17132462c4a67738f9751ff..192a19e8d4da8f6b11135f06e147d2a6 +// Playwright end m_viewportController.didScroll(rect.location()); - if (m_isDiscardable) -@@ -349,6 +357,10 @@ void LayerTreeHost::didChangeViewport() + didChangeViewport(); +@@ -324,6 +332,10 @@ void LayerTreeHost::didChangeViewport() if (!view->useFixedLayout()) view->notifyScrollPositionChanged(m_lastScrollPosition); @@ -21189,10 +20661,10 @@ index 0b5c370117f2afbbd17132462c4a67738f9751ff..192a19e8d4da8f6b11135f06e147d2a6 if (m_lastPageScaleFactor != pageScale) { diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h -index 507dd0fcac6cf81a355532cc37004d161f03e8a3..a2b2690120f6f8f01f8ce2cbc2a2d7e01b1637fe 100644 +index d8f40210a6e2dfbaeec672e0871a6cb5aaab24af..9053ecf0d9736c02581c14a5af140f39d01b191e 100644 --- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h +++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h -@@ -116,6 +116,13 @@ public: +@@ -112,6 +112,13 @@ public: void adjustTransientZoom(double, WebCore::FloatPoint); void commitTransientZoom(double, WebCore::FloatPoint); #endif @@ -21233,10 +20705,10 @@ index 30c1f55828df6bf4e48543cc3347dde1ee41e10f..e71997ca8292530c5c01ce141443ad42 { if (m_hasRemovedMessageReceiver) diff --git a/Source/WebKit/WebProcess/WebPage/DrawingArea.h b/Source/WebKit/WebProcess/WebPage/DrawingArea.h -index 4f80d0ea4ad74216239024a49b1d7f94d7a03371..8f8e6094eba5c8742aa3d6733de56f8dfea53a3e 100644 +index 6ba3b77dc8eaa403ab2ca1a4f25f85eed228af5f..190d9c223c1a99aaa7f5de43b094087875f3fe4e 100644 --- a/Source/WebKit/WebProcess/WebPage/DrawingArea.h +++ b/Source/WebKit/WebProcess/WebPage/DrawingArea.h -@@ -167,6 +167,9 @@ public: +@@ -163,6 +163,9 @@ public: virtual void deviceOrPageScaleFactorChanged() = 0; virtual bool enterAcceleratedCompositingModeIfNeeded() = 0; #endif @@ -21247,7 +20719,7 @@ index 4f80d0ea4ad74216239024a49b1d7f94d7a03371..8f8e6094eba5c8742aa3d6733de56f8d virtual void adoptLayersFromDrawingArea(DrawingArea&) { } virtual void adoptDisplayRefreshMonitorsFromDrawingArea(DrawingArea&) { } diff --git a/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp b/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp -index 40b7ce31237d9de6a149c1d685c03634e44f8de6..85527188ef7b085d16a526fbed249a17d5c48230 100644 +index 35586a9dfccfe82ec7e6d38c4aa2c624b6d05597..58912fc3e33887e5ccfe8ac05c706f473c709566 100644 --- a/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp @@ -43,6 +43,7 @@ @@ -21258,7 +20730,7 @@ index 40b7ce31237d9de6a149c1d685c03634e44f8de6..85527188ef7b085d16a526fbed249a17 #include #include #include -@@ -353,4 +354,10 @@ void WebCookieJar::removeChangeListener(const String& host, const WebCore::Cooki +@@ -351,4 +352,10 @@ void WebCookieJar::removeChangeListener(const String& host, const WebCore::Cooki } #endif @@ -21283,11 +20755,11 @@ index 2aebbbd13594712f8cb3cd1de16da6818bbf4706..125d77abfafe41c2a49568f02a7cde6e WebCookieJar(); diff --git a/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.cpp b/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.cpp -index 005edbd861f90edeb6188ad3a066472469f1d694..2a89e26092a08eaadec35b6ee640484fa989eef2 100644 +index 3d55eaca35e4e6642d0ee65ab2cbfec2f45e68f4..606cb422287fe2a1975be381424a5de6a3e5d352 100644 --- a/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.cpp -@@ -46,6 +46,14 @@ void WebDocumentLoader::detachFromFrame() - DocumentLoader::detachFromFrame(); +@@ -46,6 +46,14 @@ void WebDocumentLoader::detachFromFrame(LoadWillContinueInAnotherProcess loadWil + DocumentLoader::detachFromFrame(loadWillContinueInAnotherProcess); } +void WebDocumentLoader::replacedByFragmentNavigation(LocalFrame& frame) @@ -21295,14 +20767,14 @@ index 005edbd861f90edeb6188ad3a066472469f1d694..2a89e26092a08eaadec35b6ee640484f + ASSERT(!this->frame()); + // Notify WebPageProxy that the navigation has been converted into same page navigation. + if (m_navigationID) -+ WebFrame::fromCoreFrame(frame)->documentLoaderDetached(m_navigationID); ++ WebFrame::fromCoreFrame(frame)->documentLoaderDetached(m_navigationID, false); +} + void WebDocumentLoader::setNavigationID(uint64_t navigationID) { ASSERT(navigationID); diff --git a/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.h b/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.h -index 04efd703491f1c32009c066a84647d7dda3d79ce..473fa1b3a7b7ccf375bfe26f528417d4e5b8ef6d 100644 +index 22a2194e393c7bfcc6a6635b6fdb7e95994db3e9..a060b7aff37549c79c63cde23fa66938988e1dd0 100644 --- a/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.h +++ b/Source/WebKit/WebProcess/WebPage/WebDocumentLoader.h @@ -27,6 +27,7 @@ @@ -21319,16 +20791,16 @@ index 04efd703491f1c32009c066a84647d7dda3d79ce..473fa1b3a7b7ccf375bfe26f528417d4 + uint64_t loaderIDForInspector() override { return navigationID(); } + - void detachFromFrame() override; + void detachFromFrame(WebCore::LoadWillContinueInAnotherProcess) override; + void replacedByFragmentNavigation(WebCore::LocalFrame&) override; uint64_t m_navigationID { 0 }; }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3b1af615c 100644 +index 5dc0f3459c55b5ac6d13ae939dd7221b4649da65..c4387bf9fe6e0f1959e5757f39bc92c20dffef20 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp +++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp -@@ -1046,6 +1046,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) +@@ -1041,6 +1041,9 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters) #endif #endif // HAVE(SANDBOX_STATE_FLAGS) @@ -21338,7 +20810,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 updateThrottleState(); #if ENABLE(ACCESSIBILITY_ANIMATION_CONTROL) updateImageAnimationEnabled(); -@@ -1896,6 +1899,22 @@ void WebPage::transitionFrameToLocal(LocalFrameCreationParameters&& creationPara +@@ -1915,6 +1918,22 @@ void WebPage::transitionFrameToLocal(LocalFrameCreationParameters&& creationPara frame->transitionToLocal(creationParameters.layerHostingContextIdentifier); } @@ -21361,7 +20833,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 void WebPage::loadRequest(LoadParameters&& loadParameters) { WEBPAGE_RELEASE_LOG(Loading, "loadRequest: navigationID=%" PRIu64 ", shouldTreatAsContinuingLoad=%u, lastNavigationWasAppInitiated=%d, existingNetworkResourceLoadIdentifierToResume=%" PRIu64, loadParameters.navigationID, static_cast(loadParameters.shouldTreatAsContinuingLoad), loadParameters.request.isAppInitiated(), valueOrDefault(loadParameters.existingNetworkResourceLoadIdentifierToResume).toUInt64()); -@@ -2181,17 +2200,14 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) +@@ -2200,17 +2219,14 @@ void WebPage::setSize(const WebCore::IntSize& viewSize) view->resize(viewSize); m_drawingArea->setNeedsDisplay(); @@ -21379,7 +20851,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArguments) { RefPtr localMainFrame = dynamicDowncast(m_page->mainFrame()); -@@ -2216,20 +2232,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2235,20 +2251,18 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg ViewportAttributes attr = computeViewportAttributes(viewportArguments, minimumLayoutFallbackWidth, deviceWidth, deviceHeight, 1, m_viewSize); @@ -21407,7 +20879,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 #if USE(COORDINATED_GRAPHICS) m_drawingArea->didChangeViewportAttributes(WTFMove(attr)); -@@ -2237,7 +2251,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg +@@ -2256,7 +2270,6 @@ void WebPage::sendViewportAttributesChanged(const ViewportArguments& viewportArg send(Messages::WebPageProxy::DidChangeViewportProperties(attr)); #endif } @@ -21415,7 +20887,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 void WebPage::scrollMainFrameIfNotAtMaxScrollPosition(const IntSize& scrollOffset) { -@@ -2533,6 +2546,7 @@ void WebPage::scaleView(double scale) +@@ -2552,6 +2565,7 @@ void WebPage::scaleView(double scale) } m_page->setViewScaleFactor(scale); @@ -21423,7 +20895,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 scalePage(pageScale, scrollPositionAtNewScale); } -@@ -2712,18 +2726,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum +@@ -2731,18 +2745,14 @@ void WebPage::viewportPropertiesDidChange(const ViewportArguments& viewportArgum viewportConfigurationChanged(); #endif @@ -21443,7 +20915,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 } #if !PLATFORM(IOS_FAMILY) -@@ -3687,6 +3697,97 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent, CompletionHandlermainFrame().frameID(), touchEvent, m_page.get()).wasHandled(); + } + { + Vector touchPoints; @@ -21482,7 +20954,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 + WebTouchEvent touchEvent({WebEventType::TouchEnd, eventModifiers, WallTime::now()}, WTFMove(touchPoints)); + + CurrentEvent currentEvent(touchEvent); -+ handled = handleTouchEvent(touchEvent, m_page.get()) || handled; ++ handled = handleTouchEvent(m_page->mainFrame().frameID(), touchEvent, m_page.get()).wasHandled() || handled; + } + if (!handled) { + FloatPoint adjustedPoint; @@ -21541,7 +21013,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 #endif void WebPage::cancelPointer(WebCore::PointerID pointerId, const WebCore::IntPoint& documentPoint) -@@ -3764,6 +3865,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m +@@ -3791,6 +3892,11 @@ void WebPage::sendMessageToTargetBackend(const String& targetId, const String& m m_inspectorTargetController->sendMessageToTargetBackend(targetId, message); } @@ -21553,7 +21025,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 void WebPage::insertNewlineInQuotedContent() { Ref frame = CheckedRef(m_page->focusController())->focusedOrMainFrame(); -@@ -3975,6 +4081,7 @@ void WebPage::didCompletePageTransition() +@@ -4002,6 +4108,7 @@ void WebPage::didCompletePageTransition() void WebPage::show() { send(Messages::WebPageProxy::ShowPage()); @@ -21561,16 +21033,16 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 } void WebPage::setIsTakingSnapshotsForApplicationSuspension(bool isTakingSnapshotsForApplicationSuspension) -@@ -4999,7 +5106,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana +@@ -5031,7 +5138,7 @@ NotificationPermissionRequestManager* WebPage::notificationPermissionRequestMana #if ENABLE(DRAG_SUPPORT) -#if PLATFORM(GTK) +#if PLATFORM(GTK) || PLATFORM(WPE) - void WebPage::performDragControllerAction(DragControllerAction action, const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet draggingSourceOperationMask, SelectionData&& selectionData, OptionSet flags) + void WebPage::performDragControllerAction(DragControllerAction action, const IntPoint& clientPosition, const IntPoint& globalPosition, OptionSet draggingSourceOperationMask, SelectionData&& selectionData, OptionSet flags, CompletionHandler, DragHandlingMethod, bool, unsigned, IntRect, IntRect, std::optional)>&& completionHandler) { - if (!m_page) { -@@ -7254,6 +7361,10 @@ void WebPage::didCommitLoad(WebFrame* frame) + if (!m_page) +@@ -7297,6 +7404,10 @@ void WebPage::didCommitLoad(WebFrame* frame) #endif flushDeferredDidReceiveMouseEvent(); @@ -21581,7 +21053,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 } void WebPage::didFinishDocumentLoad(WebFrame& frame) -@@ -7483,6 +7594,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou +@@ -7526,6 +7637,9 @@ Ref WebPage::createDocumentLoader(LocalFrame& frame, const Resou WebsitePoliciesData::applyToDocumentLoader(WTFMove(*m_pendingWebsitePolicies), documentLoader); m_pendingWebsitePolicies = std::nullopt; } @@ -21592,7 +21064,7 @@ index c724f61d2449b195326cacf8119e9da8133d8772..567a4b06bf858e78a1ade2a17e76dce3 return documentLoader; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h -index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716c10bdc52 100644 +index fa5a03b9faeced1c3f428507ee458f34fc0f5553..760d3f6cdcfc2a72eb1f25b411c359b545250dd8 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.h +++ b/Source/WebKit/WebProcess/WebPage/WebPage.h @@ -69,6 +69,7 @@ @@ -21614,21 +21086,21 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 #if PLATFORM(GTK) || PLATFORM(WPE) #include "InputMethodState.h" #endif -@@ -1088,11 +1093,11 @@ public: +@@ -1099,11 +1104,11 @@ public: void clearSelection(); void restoreSelectionInFocusedEditableElement(); -#if ENABLE(DRAG_SUPPORT) && PLATFORM(GTK) -+#if ENABLE(DRAG_SUPPORT) && (PLATFORM(GTK) || PLATFORM(WPE)) - void performDragControllerAction(DragControllerAction, const WebCore::IntPoint& clientPosition, const WebCore::IntPoint& globalPosition, OptionSet draggingSourceOperationMask, WebCore::SelectionData&&, OptionSet); ++#if ENABLE(DRAG_SUPPORT) && (PLATFORM(GTK) || PLATFORM(WPE)) + void performDragControllerAction(DragControllerAction, const WebCore::IntPoint& clientPosition, const WebCore::IntPoint& globalPosition, OptionSet draggingSourceOperationMask, WebCore::SelectionData&&, OptionSet, CompletionHandler, WebCore::DragHandlingMethod, bool, unsigned, WebCore::IntRect, WebCore::IntRect, std::optional)>&&); #endif -#if ENABLE(DRAG_SUPPORT) && !PLATFORM(GTK) +#if ENABLE(DRAG_SUPPORT) && !PLATFORM(GTK) && !PLATFORM(WPE) - void performDragControllerAction(DragControllerAction, WebCore::DragData&&, SandboxExtension::Handle&&, Vector&&); + void performDragControllerAction(std::optional, DragControllerAction, WebCore::DragData&&, CompletionHandler, WebCore::DragHandlingMethod, bool, unsigned, WebCore::IntRect, WebCore::IntRect, std::optional)>&&); + void performDragOperation(WebCore::DragData&&, SandboxExtension::Handle&&, Vector&&, CompletionHandler&&); #endif - -@@ -1106,6 +1111,9 @@ public: +@@ -1118,6 +1123,9 @@ public: void didStartDrag(); void dragCancelled(); OptionSet allowedDragSourceActions() const { return m_allowedDragSourceActions; } @@ -21638,7 +21110,7 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 #endif void beginPrinting(WebCore::FrameIdentifier, const PrintInfo&); -@@ -1333,6 +1341,7 @@ public: +@@ -1345,6 +1353,7 @@ public: void connectInspector(const String& targetId, Inspector::FrontendChannel::ConnectionType); void disconnectInspector(const String& targetId); void sendMessageToTargetBackend(const String& targetId, const String& message); @@ -21646,7 +21118,7 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 void insertNewlineInQuotedContent(); -@@ -1763,6 +1772,7 @@ private: +@@ -1778,6 +1787,7 @@ private: void tryClose(CompletionHandler&&); void platformDidReceiveLoadParameters(const LoadParameters&); void transitionFrameToLocal(LocalFrameCreationParameters&&, WebCore::FrameIdentifier); @@ -21654,7 +21126,7 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 void loadRequest(LoadParameters&&); [[noreturn]] void loadRequestWaitingForProcessLaunch(LoadParameters&&, URL&&, WebPageProxyIdentifier, bool); void loadData(LoadParameters&&); -@@ -1801,6 +1811,7 @@ private: +@@ -1816,6 +1826,7 @@ private: void updatePotentialTapSecurityOrigin(const WebTouchEvent&, bool wasHandled); #elif ENABLE(TOUCH_EVENTS) void touchEvent(const WebTouchEvent&, CompletionHandler, bool)>&&); @@ -21662,7 +21134,7 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 #endif void cancelPointer(WebCore::PointerID, const WebCore::IntPoint&); -@@ -1941,9 +1952,7 @@ private: +@@ -1960,9 +1971,7 @@ private: void addLayerForFindOverlay(CompletionHandler&&); void removeLayerForFindOverlay(CompletionHandler&&); @@ -21672,7 +21144,7 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 void didChangeSelectedIndexForActivePopupMenu(int32_t newIndex); void setTextForActivePopupMenu(int32_t index); -@@ -2496,6 +2505,7 @@ private: +@@ -2514,6 +2523,7 @@ private: UserActivity m_userActivity; uint64_t m_pendingNavigationID { 0 }; @@ -21681,10 +21153,10 @@ index cdc6e9622d72353a1ecfeaa96d4ae38bbd05ce4d..d3f29a5abe0df32e0903d7e642426716 bool m_mainFrameProgressCompleted { false }; diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -index 315803b14bb755f44f187d8a1dab4b278cdfc4ba..703834ddc9b3a8b8861406fcda1a5b2aabe1db40 100644 +index 0a070bebea8468979e5a8b9d4d57a768930aab70..1c092d5d6860ab0fb9ef37c38d4c01140e87eef6 100644 --- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in +++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in -@@ -150,6 +150,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -149,6 +149,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType ConnectInspector(String targetId, Inspector::FrontendChannel::ConnectionType connectionType) DisconnectInspector(String targetId) SendMessageToTargetBackend(String targetId, String message) @@ -21692,7 +21164,7 @@ index 315803b14bb755f44f187d8a1dab4b278cdfc4ba..703834ddc9b3a8b8861406fcda1a5b2a #if ENABLE(REMOTE_INSPECTOR) SetIndicating(bool indicating); -@@ -160,6 +161,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -159,6 +160,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType #endif #if !ENABLE(IOS_TOUCH_EVENTS) && ENABLE(TOUCH_EVENTS) TouchEvent(WebKit::WebTouchEvent event) -> (std::optional eventType, bool handled) @@ -21700,7 +21172,7 @@ index 315803b14bb755f44f187d8a1dab4b278cdfc4ba..703834ddc9b3a8b8861406fcda1a5b2a #endif CancelPointer(WebCore::PointerID pointerId, WebCore::IntPoint documentPoint) -@@ -191,6 +193,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -190,6 +192,7 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType LoadDataInFrame(IPC::DataReference data, String MIMEType, String encodingName, URL baseURL, WebCore::FrameIdentifier frameID) LoadRequest(struct WebKit::LoadParameters loadParameters) TransitionFrameToLocal(struct WebKit::LocalFrameCreationParameters creationParameters, WebCore::FrameIdentifier frameID) @@ -21714,14 +21186,14 @@ index 315803b14bb755f44f187d8a1dab4b278cdfc4ba..703834ddc9b3a8b8861406fcda1a5b2a # Drag and drop. -#if PLATFORM(GTK) && ENABLE(DRAG_SUPPORT) +#if (PLATFORM(GTK) || PLATFORM(WPE)) && ENABLE(DRAG_SUPPORT) - PerformDragControllerAction(enum:uint8_t WebKit::DragControllerAction action, WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, OptionSet draggingSourceOperationMask, WebCore::SelectionData selection, OptionSet flags) + PerformDragControllerAction(enum:uint8_t WebKit::DragControllerAction action, WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, OptionSet draggingSourceOperationMask, WebCore::SelectionData selection, OptionSet flags) -> (std::optional dragOperation, enum:uint8_t WebCore::DragHandlingMethod dragHandlingMethod, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted, WebCore::IntRect insertionRect, WebCore::IntRect editableElementRect, struct std::optional remoteUserInputEventData) #endif -#if !PLATFORM(GTK) && ENABLE(DRAG_SUPPORT) +#if !PLATFORM(GTK) && !PLATFORM(WPE) && ENABLE(DRAG_SUPPORT) - PerformDragControllerAction(enum:uint8_t WebKit::DragControllerAction action, WebCore::DragData dragData, WebKit::SandboxExtension::Handle sandboxExtensionHandle, Vector sandboxExtensionsForUpload) + PerformDragControllerAction(std::optional frameID, enum:uint8_t WebKit::DragControllerAction action, WebCore::DragData dragData) -> (std::optional dragOperation, enum:uint8_t WebCore::DragHandlingMethod dragHandlingMethod, bool mouseIsOverFileInput, unsigned numberOfItemsToBeAccepted, WebCore::IntRect insertionRect, WebCore::IntRect editableElementRect, struct std::optional remoteUserInputEventData) + PerformDragOperation(WebCore::DragData dragData, WebKit::SandboxExtension::Handle sandboxExtensionHandle, Vector sandboxExtensionsForUpload) -> (bool handled) #endif - #if ENABLE(DRAG_SUPPORT) -@@ -365,6 +368,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType +@@ -366,6 +369,10 @@ GenerateSyntheticEditingCommand(enum:uint8_t WebKit::SyntheticEditingCommandType DragCancelled() #endif @@ -21733,10 +21205,10 @@ index 315803b14bb755f44f187d8a1dab4b278cdfc4ba..703834ddc9b3a8b8861406fcda1a5b2a RequestDragStart(WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, OptionSet allowedActionsMask) RequestAdditionalItemsForDragSession(WebCore::IntPoint clientPosition, WebCore::IntPoint globalPosition, OptionSet allowedActionsMask) diff --git a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm -index b757269682383ff9d9cd423ce6309e3340bddc0d..4fc702660c715fec8f678cdada99f18586b5d4e8 100644 +index e2a6c27fabb4304c344f467c877aff40ee3226e3..29e7cfcc6c7e1066dbb9e35ec4477bd49aa045bb 100644 --- a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm +++ b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm -@@ -825,21 +825,37 @@ String WebPage::platformUserAgent(const URL&) const +@@ -813,21 +813,37 @@ String WebPage::platformUserAgent(const URL&) const bool WebPage::hoverSupportedByPrimaryPointingDevice() const { @@ -21825,10 +21297,10 @@ index f17f5d719d892309ed9c7093384945866b5117b9..1dba47bbf0dbd0362548423a74b38034 } diff --git a/Source/WebKit/WebProcess/WebProcess.cpp b/Source/WebKit/WebProcess/WebProcess.cpp -index ede84d5c3f81e53f51b81dc308212a9081193545..48ee261dec83ba8296cc86f7703286164f39339e 100644 +index e4d40bb685e7784d7952002227cc61b0151b0dfd..ddfb3c382d38a2a58e042d5be233d63dfcf8108f 100644 --- a/Source/WebKit/WebProcess/WebProcess.cpp +++ b/Source/WebKit/WebProcess/WebProcess.cpp -@@ -94,6 +94,7 @@ +@@ -87,6 +87,7 @@ #include "WebsiteData.h" #include "WebsiteDataStoreParameters.h" #include "WebsiteDataType.h" @@ -21836,7 +21308,7 @@ index ede84d5c3f81e53f51b81dc308212a9081193545..48ee261dec83ba8296cc86f770328616 #include #include #include -@@ -374,6 +375,8 @@ void WebProcess::initializeProcess(const AuxiliaryProcessInitializationParameter +@@ -360,6 +361,8 @@ void WebProcess::initializeProcess(const AuxiliaryProcessInitializationParameter platformInitializeProcess(parameters); updateCPULimit(); @@ -21846,10 +21318,10 @@ index ede84d5c3f81e53f51b81dc308212a9081193545..48ee261dec83ba8296cc86f770328616 void WebProcess::initializeConnection(IPC::Connection* connection) diff --git a/Source/WebKit/WebProcess/WebProcess.h b/Source/WebKit/WebProcess/WebProcess.h -index 5dbd3733234f4ee42fcf6f6a0e6181ee0e1b8a22..5b44ea308dbff133e98dc889b1f9434ab30ad61d 100644 +index 6c0e1aa6282c404614ef7a76ec8df7556f146906..5e54a06e574845cf2bd5acd3ca8adc8bd94403a8 100644 --- a/Source/WebKit/WebProcess/WebProcess.h +++ b/Source/WebKit/WebProcess/WebProcess.h -@@ -753,7 +753,7 @@ private: +@@ -775,7 +775,7 @@ private: WeakHashMap m_userGestureTokens; @@ -21874,7 +21346,7 @@ index 8987c3964a9308f2454759de7f8972215a3ae416..bcac0afeb94ed8123d1f9fb0b932c849 SetProcessDPIAware(); return true; diff --git a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm -index 2a111c33c93e477538c5fca177bd1ae258322605..52e07e5a7ff9f0f6758bb613dd7e6057940540d4 100644 +index 08ab3227d2bb9ec7375cce834522ecfa59df226b..0dc27f05f5bf07169ca80706dc2b755e6200a610 100644 --- a/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm @@ -4210,7 +4210,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END @@ -21887,10 +21359,10 @@ index 2a111c33c93e477538c5fca177bd1ae258322605..52e07e5a7ff9f0f6758bb613dd7e6057 - (void)touch:(WebEvent *)event { diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm -index a4e615892112df50314ee59680000e5e322ccd5a..8f0050e522e0cb081460fc11a145f66a80a81476 100644 +index 76c630c56615e95bee5767099ad3af417e56c9d3..10769addcd4eeef5dc497daacbbb0bfad122d0ba 100644 --- a/Source/WebKitLegacy/mac/WebView/WebView.mm +++ b/Source/WebKitLegacy/mac/WebView/WebView.mm -@@ -3963,7 +3963,7 @@ + (void)_doNotStartObservingNetworkReachability +@@ -3976,7 +3976,7 @@ + (void)_doNotStartObservingNetworkReachability } #endif // PLATFORM(IOS_FAMILY) @@ -21899,7 +21371,7 @@ index a4e615892112df50314ee59680000e5e322ccd5a..8f0050e522e0cb081460fc11a145f66a - (NSArray *)_touchEventRegions { -@@ -4005,7 +4005,7 @@ - (NSArray *)_touchEventRegions +@@ -4018,7 +4018,7 @@ - (NSArray *)_touchEventRegions }).autorelease(); } @@ -21940,7 +21412,7 @@ index 0000000000000000000000000000000000000000..dd6a53e2d57318489b7e49dd7373706d + LIBVPX_LIBRARIES +) diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake -index abad3a9cd4842a176e62225e06bbcf7d766f26f6..43d43416fb79848f2d629ca13248359414f6e54b 100644 +index 26e4e4d9a16897e3685fd9cf5aacb7fce24390b6..ae01866884bc6cbde28425f66847521a14c4f3ae 100644 --- a/Source/cmake/OptionsGTK.cmake +++ b/Source/cmake/OptionsGTK.cmake @@ -11,8 +11,13 @@ if (${CMAKE_VERSION} VERSION_LESS "3.20" AND NOT ${CMAKE_GENERATOR} STREQUAL "Ni @@ -21987,16 +21459,16 @@ index abad3a9cd4842a176e62225e06bbcf7d766f26f6..43d43416fb79848f2d629ca132483594 WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_JPEGXL PUBLIC ON) # Private options shared with other WebKit ports. Add options here when -@@ -133,7 +142,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PRIVATE ON) +@@ -132,7 +141,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_MONTH PRIVATE ON) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_WEEK PRIVATE ON) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TRACKING_PREVENTION PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LAYER_BASED_SVG_ENGINE PRIVATE ON) -WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION_PLAYLIST PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STREAM PRIVATE ON) -@@ -146,7 +155,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION P +@@ -145,7 +154,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION P WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_CACHE_STALE_WHILE_REVALIDATE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_OFFSCREEN_CANVAS_IN_WORKERS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -22005,7 +21477,7 @@ index abad3a9cd4842a176e62225e06bbcf7d766f26f6..43d43416fb79848f2d629ca132483594 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SERVICE_WORKER PRIVATE ON) -@@ -157,6 +166,15 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) +@@ -156,6 +165,15 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_API_STATISTICS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_RTC PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -22021,7 +21493,7 @@ index abad3a9cd4842a176e62225e06bbcf7d766f26f6..43d43416fb79848f2d629ca132483594 include(GStreamerDependencies) # Finalize the value for all options. Do not attempt to use an option before -@@ -272,6 +290,7 @@ if (NOT EXISTS "${TOOLS_DIR}/glib/apply-build-revision-to-files.py") +@@ -271,6 +289,7 @@ if (NOT EXISTS "${TOOLS_DIR}/glib/apply-build-revision-to-files.py") endif () SET_AND_EXPOSE_TO_BUILD(USE_ATSPI ${ENABLE_ACCESSIBILITY}) @@ -22030,7 +21502,7 @@ index abad3a9cd4842a176e62225e06bbcf7d766f26f6..43d43416fb79848f2d629ca132483594 SET_AND_EXPOSE_TO_BUILD(HAVE_OS_DARK_MODE_SUPPORT 1) diff --git a/Source/cmake/OptionsWPE.cmake b/Source/cmake/OptionsWPE.cmake -index db463c118d6e6006b9d8e324c6b215e006f9734e..45295ec365715a933dc40bb087e245ce21cd6330 100644 +index cf6f8972fa4e26cb4a31331da27ac22c77804cbe..55b822bfb9167d81fe855cd2cc3e9951a2fe98f9 100644 --- a/Source/cmake/OptionsWPE.cmake +++ b/Source/cmake/OptionsWPE.cmake @@ -9,8 +9,13 @@ if (${CMAKE_VERSION} VERSION_LESS "3.20" AND NOT ${CMAKE_GENERATOR} STREQUAL "Ni @@ -22062,8 +21534,8 @@ index db463c118d6e6006b9d8e324c6b215e006f9734e..45295ec365715a933dc40bb087e245ce WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_JPEGXL PUBLIC ON) # Private options shared with other WebKit ports. Add options here only if -@@ -62,7 +67,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GPU_PROCESS PRIVATE OFF) - WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TRACKING_PREVENTION PRIVATE ON) +@@ -61,7 +66,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) + WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GPU_PROCESS PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LAYER_BASED_SVG_ENGINE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CONTROLS_CONTEXT_MENUS PRIVATE ON) -WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_RECORDER PRIVATE ON) @@ -22071,7 +21543,7 @@ index db463c118d6e6006b9d8e324c6b215e006f9734e..45295ec365715a933dc40bb087e245ce WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SESSION_PLAYLIST PRIVATE OFF) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STREAM PRIVATE ON) -@@ -77,7 +82,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) +@@ -76,7 +81,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PERIODIC_MEMORY_MONITOR PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SERVICE_WORKER PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHAREABLE_RESOURCE PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPEECH_SYNTHESIS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) @@ -22080,7 +21552,7 @@ index db463c118d6e6006b9d8e324c6b215e006f9734e..45295ec365715a933dc40bb087e245ce WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VARIATION_FONTS PRIVATE ON) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CODECS PRIVATE ${ENABLE_EXPERIMENTAL_FEATURES}) -@@ -88,13 +93,30 @@ if (WPE_VERSION VERSION_GREATER_EQUAL 1.13.90) +@@ -87,13 +92,30 @@ if (WPE_VERSION VERSION_GREATER_EQUAL 1.13.90) WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PUBLIC ON) endif () @@ -22113,7 +21585,7 @@ index db463c118d6e6006b9d8e324c6b215e006f9734e..45295ec365715a933dc40bb087e245ce WEBKIT_OPTION_DEFINE(USE_GBM "Whether to enable usage of GBM." PUBLIC ON) WEBKIT_OPTION_DEFINE(USE_LCMS "Whether to enable support for image color management using libcms2." PUBLIC ON) diff --git a/Source/cmake/OptionsWin.cmake b/Source/cmake/OptionsWin.cmake -index 1d358332016df580af0c125bdc6c909967acb11d..649afb06efc04b17c9333ced2308820b1f1ae2e7 100644 +index afe74b5ddfbae35ccb449cd83e25d55f1c1ed568..3df741316d7603d52c20aa36bc887937820d7016 100644 --- a/Source/cmake/OptionsWin.cmake +++ b/Source/cmake/OptionsWin.cmake @@ -97,16 +97,37 @@ if (OpenJPEG_FOUND) @@ -22158,7 +21630,7 @@ index 1d358332016df580af0c125bdc6c909967acb11d..649afb06efc04b17c9333ced2308820b WEBKIT_OPTION_BEGIN() # FIXME: Most of these options should not be public. -@@ -186,6 +207,17 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CRYPTO PRIVATE ${ENABLE_EXPERIMENTAL +@@ -184,6 +205,16 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_CRYPTO PRIVATE ${ENABLE_EXPERIMENTAL # No support planned WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) @@ -22167,7 +21639,6 @@ index 1d358332016df580af0c125bdc6c909967acb11d..649afb06efc04b17c9333ced2308820b +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DARK_MODE_CSS PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DEVICE_ORIENTATION PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DOWNLOAD_ATTRIBUTE PRIVATE ON) -+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_POINTER_LOCK PRIVATE ON) +WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PRIVATE ON) @@ -22177,7 +21648,7 @@ index 1d358332016df580af0c125bdc6c909967acb11d..649afb06efc04b17c9333ced2308820b WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API PRIVATE OFF) diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake -index 82d26ca244a46427f3fdc81ec418943c3d0c675f..15dcaf559b1a5ff1e447e92c8ec9aad4ef8e1915 100644 +index df8464ed9d2227db3e801e01e63fafab581e625e..a2fa79209908a6d072faace91e0c5b102843aae7 100644 --- a/Source/cmake/WebKitCompilerFlags.cmake +++ b/Source/cmake/WebKitCompilerFlags.cmake @@ -87,7 +87,7 @@ macro(WEBKIT_ADD_TARGET_CXX_FLAGS _target) @@ -22259,7 +21730,7 @@ index 61616b96e2f4e21aa6d098445e0f1a933e512a9c..33732da18013679a869ff8eb2b445434 } diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c -index 58eb5ae39e2e042435c520553e7540388ba98dbc..61033c71963e61f8ccd7a22c9acf42451f9872ca 100644 +index 87ec298a5863a4147b8ee2a000af3f696cc5d615..fe081059e18163d4274c7b4087b3f8fec9981b77 100644 --- a/Tools/MiniBrowser/gtk/BrowserWindow.c +++ b/Tools/MiniBrowser/gtk/BrowserWindow.c @@ -73,7 +73,7 @@ struct _BrowserWindowClass { @@ -22505,7 +21976,7 @@ index 451e0333dd4e8f5d6313fa80c5027ef2661a61ac..7398af4772ed9a479b1632e38af2d4ee return exitAfterLoad && webProcessCrashed ? 1 : 0; diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp -index 1d3cb1aeb14068a69cee73a60ce82cfb059322ba..fb282a323701a45ee98396b0b40e4de7de261e57 100644 +index 1d3cb1aeb14068a69cee73a60ce82cfb059322ba..62d47a408869ec476a3c46b5af9fd850860f3268 100644 --- a/Tools/MiniBrowser/wpe/main.cpp +++ b/Tools/MiniBrowser/wpe/main.cpp @@ -45,6 +45,9 @@ static gboolean headlessMode; @@ -22528,7 +21999,7 @@ index 1d3cb1aeb14068a69cee73a60ce82cfb059322ba..fb282a323701a45ee98396b0b40e4de7 { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, nullptr, "[URL]" }, { nullptr, 0, 0, G_OPTION_ARG_NONE, nullptr, nullptr, nullptr } }; -@@ -156,6 +162,11 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul +@@ -156,15 +162,38 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul g_main_loop_quit(data->mainLoop); } @@ -22540,7 +22011,9 @@ index 1d3cb1aeb14068a69cee73a60ce82cfb059322ba..fb282a323701a45ee98396b0b40e4de7 static void webViewClose(WebKitWebView* webView, gpointer user_data) { // Hash table key delete func takes care of unref'ing the view -@@ -164,7 +175,25 @@ static void webViewClose(WebKitWebView* webView, gpointer user_data) + g_hash_table_remove(openViews, webView); +- if (!g_hash_table_size(openViews)) ++ if (!g_hash_table_size(openViews) && user_data) g_application_quit(G_APPLICATION(user_data)); } @@ -22804,7 +22277,7 @@ index 1067b31bc989748dfcc5502209d36d001b9b239e..7629263fb8bc93dca6dfc01c75eed8d2 + add_subdirectory(Playwright/win) +endif () diff --git a/Tools/Scripts/build-webkit b/Tools/Scripts/build-webkit -index d9f1afca539b01fcd9e32e4a5182a9b8101e5a92..4c6022fcd7fde326000dade4788f869167707912 100755 +index e4cc9fe0cb259211f8fd297885b76539425f7193..8d962dc3c07494a98606aaf07eaacf199cf00fc5 100755 --- a/Tools/Scripts/build-webkit +++ b/Tools/Scripts/build-webkit @@ -272,7 +272,7 @@ if (isAppleCocoaWebKit()) { @@ -22832,10 +22305,10 @@ index 9e53f459e444b9c10fc5248f0e8059df6c1e0041..c17c875a7dd3ca05c4489578ab32378b "${WebKitTestRunner_DIR}/InjectedBundle/Bindings/AccessibilityController.idl" "${WebKitTestRunner_DIR}/InjectedBundle/Bindings/AccessibilityTextMarker.idl" diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp -index 8b4371425fc78e7ddb34966186d5985575fa5cb7..2b0763a80853e93595bf813155a4aadece62c11e 100644 +index 6b905b186bba5d23a6e968404a4d26d475b087af..a712c4631bc185754862f58dd6941b338144bf01 100644 --- a/Tools/WebKitTestRunner/TestController.cpp +++ b/Tools/WebKitTestRunner/TestController.cpp -@@ -962,6 +962,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) +@@ -959,6 +959,7 @@ void TestController::createWebViewWithOptions(const TestOptions& options) 0, // requestStorageAccessConfirm shouldAllowDeviceOrientationAndMotionAccess, runWebAuthenticationPanel, @@ -22900,7 +22373,7 @@ index 397cacf02ea61a9463050870216251f5a2ef7b06..6d1b612e25ecf4bf4a80878d265844f6 + } // namespace WTR diff --git a/Tools/glib/dependencies/apt b/Tools/glib/dependencies/apt -index ab8ce021ed0a2a07de9faaaa0766c39006e48887..3d8a0522dd6e4d76d673e26236dc459119b3517f 100644 +index 9f05f879dbd29d93dd189ee05925d1686c6fcaa4..b4c013d0267b77b2bdbcf4d70eb6522168a2969e 100644 --- a/Tools/glib/dependencies/apt +++ b/Tools/glib/dependencies/apt @@ -1,11 +1,11 @@ @@ -22917,15 +22390,7 @@ index ab8ce021ed0a2a07de9faaaa0766c39006e48887..3d8a0522dd6e4d76d673e26236dc4591 echo $2 fi } -@@ -60,6 +60,7 @@ PACKAGES=( - libpng-dev - libseccomp-dev - $(aptIfExists libsoup-3.0-dev) -+ libnghttp2-dev - libsqlite3-dev - libsystemd-dev - libtasn1-6-dev -@@ -70,10 +71,12 @@ PACKAGES=( +@@ -71,10 +71,12 @@ PACKAGES=( $(aptIfExists libwpe-1.0-dev) $(aptIfExists libwpebackend-fdo-1.0-dev) libxml2-utils @@ -22939,10 +22404,10 @@ index ab8ce021ed0a2a07de9faaaa0766c39006e48887..3d8a0522dd6e4d76d673e26236dc4591 # These are dependencies necessary for running tests. diff --git a/Tools/gtk/dependencies/apt b/Tools/gtk/dependencies/apt -index e86c94f00fa39b8186a20c6e696a3ad02f93bbba..f7c96a597faf538281aa637cf8b8e1379d72023f 100644 +index 30d4fb51cbf8d2c1e18132209ffaf6256ed7019d..7df5fe173e3f2d96864245a61ec6d8748b10d976 100644 --- a/Tools/gtk/dependencies/apt +++ b/Tools/gtk/dependencies/apt -@@ -36,6 +36,9 @@ PACKAGES+=( +@@ -37,6 +37,9 @@ PACKAGES+=( nasm unifdef xfonts-utils @@ -22953,7 +22418,7 @@ index e86c94f00fa39b8186a20c6e696a3ad02f93bbba..f7c96a597faf538281aa637cf8b8e137 # These are dependencies necessary for running tests. cups-daemon diff --git a/Tools/jhbuild/jhbuild-minimal.modules b/Tools/jhbuild/jhbuild-minimal.modules -index cf94e7a391a2af0bc6a2f59c5d6df0113b939d95..e762744314b5982c20e9626878d728d748b3cd2d 100644 +index 411cda9ffd07e5c58477afcdfb2637d4c9bb3392..e762744314b5982c20e9626878d728d748b3cd2d 100644 --- a/Tools/jhbuild/jhbuild-minimal.modules +++ b/Tools/jhbuild/jhbuild-minimal.modules @@ -24,7 +24,6 @@ @@ -22964,19 +22429,6 @@ index cf94e7a391a2af0bc6a2f59c5d6df0113b939d95..e762744314b5982c20e9626878d728d7 -@@ -241,9 +240,9 @@ - -DJPEGXL_ENABLE_SKCMS=ON"> - libjxl.pc - - - diff --git a/Tools/wpe/backends/fdo/HeadlessViewBackendFdo.cpp b/Tools/wpe/backends/fdo/HeadlessViewBackendFdo.cpp index 4b3d262528d33800ac46e4e9fc342b11f2744979..39d72bd2c04e79b94a5c7634b6abc9b227d5c148 100644 --- a/Tools/wpe/backends/fdo/HeadlessViewBackendFdo.cpp diff --git a/browser_patches/webkit/pw_run.sh b/browser_patches/webkit/pw_run.sh index 904c702d70120..f4f0f4ce940fc 100755 --- a/browser_patches/webkit/pw_run.sh +++ b/browser_patches/webkit/pw_run.sh @@ -26,11 +26,11 @@ function runLinux() { GIO_DIR=""; LD_PATH=""; BUNDLE_DIR=""; - DEPENDENCIES_FOLDER="DependenciesGTK"; + DEPENDENCIES_FOLDER="WebKitBuild/DependenciesGTK"; MINIBROWSER_FOLDER="minibrowser-gtk"; BUILD_FOLDER="WebKitBuild/GTK"; if [[ "$*" == *--headless* ]]; then - DEPENDENCIES_FOLDER="DependenciesWPE"; + DEPENDENCIES_FOLDER="WebKitBuild/DependenciesWPE"; MINIBROWSER_FOLDER="minibrowser-wpe"; BUILD_FOLDER="WebKitBuild/WPE"; fi @@ -41,15 +41,15 @@ function runLinux() { if [[ -d $SCRIPT_PATH/$MINIBROWSER_FOLDER ]]; then MINIBROWSER="$SCRIPT_PATH/$MINIBROWSER_FOLDER/MiniBrowser" elif [[ -d $WK_CHECKOUT_PATH/$BUILD_FOLDER ]]; then - LD_PATH="$WK_CHECKOUT_PATH/$BUILD_FOLDER/$DEPENDENCIES_FOLDER/Root/lib:$SCRIPT_PATH/checkout/$BUILD_FOLDER/Release/bin" - GIO_DIR="$WK_CHECKOUT_PATH/$BUILD_FOLDER/$DEPENDENCIES_FOLDER/Root/lib/gio/modules" + LD_PATH="$WK_CHECKOUT_PATH/$DEPENDENCIES_FOLDER/Root/lib:$SCRIPT_PATH/checkout/$BUILD_FOLDER/Release/bin" + GIO_DIR="$WK_CHECKOUT_PATH/$DEPENDENCIES_FOLDER/Root/lib/gio/modules" BUNDLE_DIR="$WK_CHECKOUT_PATH/$BUILD_FOLDER/Release/lib" MINIBROWSER="$WK_CHECKOUT_PATH/$BUILD_FOLDER/Release/bin/MiniBrowser" elif [[ -f $SCRIPT_PATH/MiniBrowser ]]; then MINIBROWSER="$SCRIPT_PATH/MiniBrowser" elif [[ -d $SCRIPT_PATH/$BUILD_FOLDER ]]; then - LD_PATH="$SCRIPT_PATH/$BUILD_FOLDER/$DEPENDENCIES_FOLDER/Root/lib:$SCRIPT_PATH/$BUILD_FOLDER/Release/bin" - GIO_DIR="$SCRIPT_PATH/$BUILD_FOLDER/$DEPENDENCIES_FOLDER/Root/lib/gio/modules" + LD_PATH="$SCRIPT_PATH/$DEPENDENCIES_FOLDER/Root/lib:$SCRIPT_PATH/$BUILD_FOLDER/Release/bin" + GIO_DIR="$SCRIPT_PATH/$DEPENDENCIES_FOLDER/Root/lib/gio/modules" BUNDLE_DIR="$SCRIPT_PATH/$BUILD_FOLDER/Release/lib" MINIBROWSER="$SCRIPT_PATH/$BUILD_FOLDER/Release/bin/MiniBrowser" else