[webkit-changes] [WebKit/WebKit] 722fe4: Fix build failures when importing WebKit, when `-D...

Wenson Hsieh noreply at github.com
Mon Oct 16 12:12:09 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 722fe4fc50a4935023c450c325f8db75bdcc24a7
      https://github.com/WebKit/WebKit/commit/722fe4fc50a4935023c450c325f8db75bdcc24a7
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-10-16 (Mon, 16 Oct 2023)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h

  Log Message:
  -----------
  Fix build failures when importing WebKit, when `-DOS_OBJECT_USE_OBJC=0` is set
https://bugs.webkit.org/show_bug.cgi?id=263156
rdar://114438852

Reviewed by Richard Robinson.

Before iOS 17 / macOS Sonoma, it was possible to pull in WebKit headers (directly, or through Swift
modules) when compiling without ObjC-backed OS objects, by specifying `-DOS_OBJECT_USE_OBJC=0` as a
build setting. Some popular libraries and plugins such as the `flutter_inappwebview` plugin (see
also: <https://github.com/pichillilorenzo/flutter_inappwebview/issues/1735>) use this.

However, after we introduced the following public API in iOS 17:

```
@property (nullable, nonatomic, copy) NSArray<nw_proxy_config_t> *proxyConfigurations;
```

...this became impossible, since `nw_proxy_config_t` would be type-defined to an opaque struct
pointer in `Network.framework`, which is invalid as a type template argument in an `NSArray`. To fix
this, we adopt the same technique used in `Network/NSURLSession+Network.h` and simply expose a
generically-typed `NSArray` in the case where `OS_OBJECT_USE_OBJC` is off.

* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.h:

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




More information about the webkit-changes mailing list