[webkit-changes] [WebKit/WebKit] 498d27: Add plumbing to raise Xcode issues when client-sid...

Wenson Hsieh noreply at github.com
Tue Jan 3 19:09:03 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 498d27b7264195c8850d344b542b62f95946c211
      https://github.com/WebKit/WebKit/commit/498d27b7264195c8850d344b542b62f95946c211
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-01-03 (Tue, 03 Jan 2023)

  Changed paths:
    M Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
    M Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
    M Source/WebKit/Platform/SourcesCocoa.txt
    A Source/WebKit/Platform/cocoa/NetworkIssueReporter.h
    A Source/WebKit/Platform/cocoa/NetworkIssueReporter.mm
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Add plumbing to raise Xcode issues when client-side network issues are detected
https://bugs.webkit.org/show_bug.cgi?id=249897
rdar://102778314

Reviewed by Tim Horton.

Raise an Xcode issue when certain network activity is observed (`NetworkIssueReporter::shouldReport`
returns `true`).

* Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::reportNetworkIssue):

If `NetworkIssueReporter::shouldReport` returned `true`, send an IPC message to the UI process, with
the request URL.

* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::didReceiveResponse):

Consult `NetworkIssueReporter::shouldReport` upon receiving a request response.

* Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::configurationForSessionID):

Unconditionally set `_skipsStackTraceCapture` to `YES`, for WebKit. Regardless of whether or not
we're actively running in Xcode (and network issue reporting is runtime-enabled), it's never
necessary to surface stack traces in the WebKit network process to developers.

* Source/WebKit/Platform/SourcesCocoa.txt:
* Source/WebKit/Platform/cocoa/NetworkIssueReporter.h: Added.
* Source/WebKit/Platform/cocoa/NetworkIssueReporter.mm: Added.
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::reportNetworkIssue):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::prepareToLoadWebPage):

Add a new helper method that adds platform data to a given load parameters, and also creates a new
network issue reporter if needed. See below for call sites.

(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::loadSimulatedRequest):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):

Change several call sites of `addPlatformLoadParameters` to use `prepareToLoadWebPage` instead,
which additionally creates a new network issue reporter if needed when triggwering navigation via
API.

(WebKit::WebPageProxy::reportNetworkIssue):

Report the incoming issue if the page's `NetworkIssueReporter` has been created.

* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:%

Canonical link: https://commits.webkit.org/258419@main




More information about the webkit-changes mailing list