Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Web Inspector: URL breakpoints should also pause when HTML attributes…
… that trigger loads are set https://bugs.webkit.org/show_bug.cgi?id=218140 <rdar://problem/70636814> Reviewed by Patrick Angle. This will give developers even more power over understanding the cause of network requests. It's still the case that by the time the URL breakpoint pauses, we've already configured the network request (i.e. it cannot be changed), but at least this way a developer can pause when the request is made, rather than inferring that by looking at the backtrace afterwards. * Source/WebCore/inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::willSendRequestImpl): (WebCore::InspectorInstrumentation::willSendRequestOfTypeImpl): * Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h: * Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp: (WebCore::InspectorDOMDebuggerAgent::willSendRequest): Added. (WebCore::InspectorDOMDebuggerAgent::willSendRequestOfType): Added. (WebCore::InspectorDOMDebuggerAgent::breakOnURLIfNeeded): (WebCore::InspectorDOMDebuggerAgent::willSendXMLHttpRequest): (WebCore::InspectorDOMDebuggerAgent::willFetch): Leverage existing instrumentation to notify the `DOMDebugger` whenever a new network request is made, at which point the it can check for any existing URL breakpoints and pause if one is found. * Source/JavaScriptCore/inspector/protocol/Debugger.json: * Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js: (WI.DebuggerManager.pauseReasonFromPayload): * Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js: (WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection): Merge the `"XHR"` and `"Fetch"` pause reasons into a single `"URL"` since URL breakpoints can now be triggered by more than just those two APIs (i.e. DOM APIs too). * Source/WebCore/loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::shouldContinueAfterNotifyingLoadedFromMemoryCache): Make sure to also copy over the `ResourceRequest::Requester`. * Source/WebCore/dom/ScriptDisallowedScope.h: (WebCore::ScriptDisallowedScope::isScriptAllowedInMainThread): Renamed from `isEventAllowedInMainThread`. * Source/WebCore/dom/EventTarget.cpp: (WebCore::EventTarget::fireEventListeners): Drive-by: Rename to make it less specific to events, as the same logic can be useful elsewhere. * LayoutTests/inspector/dom-debugger/resources/dataDOM.json: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-all-requests.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-all-requests-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-containing.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-containing-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-matching.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-matching-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-dom-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-all-requests.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-all-requests-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-containing.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-containing-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-matching.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-matching-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-fetch-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-all-requests.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-all-requests-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-containing.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-containing-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-matching.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-matching-expected.txt: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr.html: Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-xhr-expected.txt: Added. * LayoutTests/inspector/worker/dom-debugger-url-breakpoints-fetch.html: Added. * LayoutTests/inspector/worker/dom-debugger-url-breakpoints-fetch-expected.txt: Added. * LayoutTests/inspector/worker/dom-debugger-url-breakpoints-xhr.html: Added. * LayoutTests/inspector/worker/dom-debugger-url-breakpoints-xhr-expected.txt: Added. * LayoutTests/inspector/worker/resources/dataDOM.json: Added. * LayoutTests/inspector/worker/resources/resource-utilities.js: (loadResourceDOM): Added. * LayoutTests/inspector/worker/resources/worker-dom-debugger.js: (const.functions.triggerXHRRequest): Renamed from `triggerXHR`. (const.functions.triggerFetchRequest): Renamed from `triggerFetch`. (const.functions.triggerDOMRequest): Added. * LayoutTests/inspector/dom-debugger/url-breakpoints-all-requests.html: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints-all-requests-expected.txt: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints-containing.html: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints-containing-expected.txt: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints-matching.html: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints-matching-expected.txt: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints.html: Removed. * LayoutTests/inspector/dom-debugger/url-breakpoints-expected.txt: Removed. * LayoutTests/inspector/worker/dom-debugger-url-breakpoints.html: Removed. * LayoutTests/inspector/worker/dom-debugger-url-breakpoints-expected.txt: Removed. Split URL breakpoint tests into separate files for each API (i.e. one for XHR, one for `fetch`, etc.). Canonical link: https://commits.webkit.org/254488@main
- Loading branch information