<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>313900</bug_id>
          
          <creation_ts>2026-05-02 07:55:18 -0700</creation_ts>
          <short_desc>[WebKitLegacy] Eliminate WK_BUILD_FOR_TESTING by refactoring to Objective-C class method SPI</short_desc>
          <delta_ts>2026-05-04 13:55:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217960</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2206881</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2026-05-02 07:55:18 -0700</bug_when>
    <thetext>WebKitLegacy.framework uses the `WK_BUILD_FOR_TESTING` mechanism to conditionally export `TestWebPreferencesCacheModelForMainBundle()` for TestWebKitAPI.  This is the only testing symbol exported from WebKitLegacy, and its sole consumer is the `WebKitLegacy.CacheModelForMainBundle` API test.

The mechanism prevents TestWebKitAPI from linking to WebKitLegacy.framework in Production builds because the testing symbol is not exported in the Production configuration.

It is also overly complex for one symbol, involving six coordinated pieces: the `WK_BUILD_FOR_TESTING` xcconfig variable, the `-DENABLE_BUILD_FOR_TESTING` compiler flag, the `#if ENABLE(BUILD_FOR_TESTING)` guard in `WebPreferences.mm`, the `-extra-private-header TestingFunctions.h` TAPI flag, the `WebKit.Testing.exp` export symbol list, and a conditional block in the &quot;Generate Export Files&quot; build phase script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206882</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-02 07:55:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/176091724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206884</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2026-05-02 08:01:09 -0700</bug_when>
    <thetext>*** Bug 313841 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206885</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2026-05-02 08:03:39 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/64106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2207346</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-04 13:55:24 -0700</bug_when>
    <thetext>Committed 312551@main (029c5391653d): &lt;https://commits.webkit.org/312551@main&gt;

Reviewed commits have been landed. Closing PR #64106 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>