<?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>238003</bug_id>
          
          <creation_ts>2022-03-16 23:51:52 -0700</creation_ts>
          <short_desc>Allow push preference to be set programatically</short_desc>
          <delta_ts>2022-03-17 09:48:18 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852144</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-16 23:51:52 -0700</bug_when>
    <thetext>Allow push preference to be set programatically</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852146</commentid>
    <comment_count>1</comment_count>
      <attachid>454935</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-16 23:56:40 -0700</bug_when>
    <thetext>Created attachment 454935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852326</commentid>
    <comment_count>2</comment_count>
      <attachid>454935</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-17 09:29:52 -0700</bug_when>
    <thetext>Comment on attachment 454935
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=454935&amp;action=review

r=me

&gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:182
&gt;  @property (nonatomic, setter=_setStorageAPIEnabled:) BOOL _storageAPIEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt;  @property (nonatomic, setter=_setAccessHandleEnabled:) BOOL _accessHandleEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt;  @property (nonatomic, setter=_setNotificationsEnabled:) BOOL _notificationsEnabled WK_API_AVAILABLE(macos(10.13.4), ios(WK_IOS_TBA));
&gt; +@property (nonatomic, setter=_setPushAPIEnabled:) BOOL _pushAPIEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt;  @property (nonatomic, setter=_setModelDocumentEnabled:) BOOL _modelDocumentEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Kind of surprising to me that we have these toggles on WKPreferences, even though they&apos;re things that can&apos;t change after a webpage has loaded -- but I guess yours is not the first.

Do we not have a generic API for turning on an experimental feature? I believe we do, and it is used in the Develop-&gt;Experimental Features menu. What happens if the Experimental Feature is set to No and _setPushAPIEnabled: is set to YES?

I&apos;ll say r+ for now because this is fine; but please follow up on whether we can use the experimental features API instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852328</commentid>
    <comment_count>3</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-17 09:39:09 -0700</bug_when>
    <thetext>We do have that API but it&apos;s really meant to be used by the menu, which iterates over all experimental features and provides some logic to toggle each of the features on and off via the GUI. If you wanted to do it outside of that context then you would write something like:

```
for (_WKExperimentalFeature *feature in [WKPreferences _experimentalFeatures])
    if ([feature.key isEqualToString:@&quot;PushAPIEnabled&quot;])
        [preferences _setEnabled:YES forFeature:feature];
```

There are plenty of other properties in WKPreferences that manipulate experimental preferences like in this patch so you don&apos;t have to write the loop above.

(In reply to Geoffrey Garen from comment #2)
&gt; Comment on attachment 454935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454935&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:182
&gt; &gt;  @property (nonatomic, setter=_setStorageAPIEnabled:) BOOL _storageAPIEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt;  @property (nonatomic, setter=_setAccessHandleEnabled:) BOOL _accessHandleEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt;  @property (nonatomic, setter=_setNotificationsEnabled:) BOOL _notificationsEnabled WK_API_AVAILABLE(macos(10.13.4), ios(WK_IOS_TBA));
&gt; &gt; +@property (nonatomic, setter=_setPushAPIEnabled:) BOOL _pushAPIEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt;  @property (nonatomic, setter=_setModelDocumentEnabled:) BOOL _modelDocumentEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Kind of surprising to me that we have these toggles on WKPreferences, even
&gt; though they&apos;re things that can&apos;t change after a webpage has loaded -- but I
&gt; guess yours is not the first.
&gt; 
&gt; Do we not have a generic API for turning on an experimental feature? I
&gt; believe we do, and it is used in the Develop-&gt;Experimental Features menu.
&gt; What happens if the Experimental Feature is set to No and
&gt; _setPushAPIEnabled: is set to YES?
&gt; 
&gt; I&apos;ll say r+ for now because this is fine; but please follow up on whether we
&gt; can use the experimental features API instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852332</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-17 09:47:01 -0700</bug_when>
    <thetext>Committed r291413 (248541@main): &lt;https://commits.webkit.org/248541@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454935.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852333</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-17 09:48:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90436709&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454935</attachid>
            <date>2022-03-16 23:56:40 -0700</date>
            <delta_ts>2022-03-17 09:47:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238003-20220316235640.patch</filename>
            <type>text/plain</type>
            <size>4522</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1ZmNhYmUyNTVjMTYxMjFk
ODViZmUzMGRlMTlmZGYyYmQxMmI1NjUuLmYzMTQ4OGI4MDM0NzQwMGYxMTA4YmI1NmM0MDg5OTlh
ZWJlOTBhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMTYgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcHVzaCBwcmVmZXJlbmNlIHRvIGJl
IHNldCBwcm9ncmFtYXRpY2FsbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgZXhwb3NlcyB0aGUgUHVzaEFQSUVuYWJsZWQgZXhwZXJpbWVudGFs
IHByZWZlcmVuY2UgdGhyb3VnaCBXS1ByZWZlcmVuY2VzIHNvIGl0IGNhbiBiZQorICAgICAgICBl
bmFibGVkIHByb2dyYW1hdGljYWxseSBieSBBUEkgY2xpZW50cy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNl
cyBfcHVzaEFQSUVuYWJsZWRdKToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2V0UHVzaEFQ
SUVuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oOgorCiAyMDIyLTAzLTE2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIEFsd2F5cyB1cGRhdGUgYXNzZXJ0aW9uIHN0YXRlIGZvciBleGlzdGluZyBk
ZWZhdWx0IG5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCA2YjQ2Mjg0NzhmOGM2M2JjNjdiMGFmMjE5
ZGY4ZThmMjUzYzY5ZGRhLi5lYjIzMjE2OWNmYjhhYTJiMjJkZTcxMzhmOThhZWY0NmMzOTA0OGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbQpAQCAtMTU3MCw2ICsxNTcwLDE2IEBAIC0gKEJPT0wpX25vdGlmaWNhdGlvbnNFbmFi
bGVkCiAgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+bm90aWZpY2F0aW9uc0VuYWJsZWQoKTsKIH0K
IAorLSAoQk9PTClfcHVzaEFQSUVuYWJsZWQKK3sKKyAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5w
dXNoQVBJRW5hYmxlZCgpOworfQorCistICh2b2lkKV9zZXRQdXNoQVBJRW5hYmxlZDooQk9PTClw
dXNoQVBJRW5hYmxlZAoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0UHVzaEFQSUVuYWJsZWQocHVz
aEFQSUVuYWJsZWQpOworfQorCiAtICh2b2lkKV9zZXRNb2RlbERvY3VtZW50RW5hYmxlZDooQk9P
TCllbmFibGVkCiB7CiAgICAgX3ByZWZlcmVuY2VzLT5zZXRNb2RlbERvY3VtZW50RW5hYmxlZChl
bmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNWU4MGJiOWE3NzJiZjg4MzZkZDY3N2RhYWFi
NDVmMzQ1MjAyNWRjYy4uN2E3OGUyYWVlYTc1ZmVhY2UzMjc2ZmI0NDgyZWYzZGY4MjIwNTEwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE3OCw2ICsxNzgsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBfV0tQaXRjaENvcnJlY3Rpb25BbGdvcml0aG0pIHsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldFN0b3JhZ2VBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFQSUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFjY2Vzc0hhbmRsZUVuYWJsZWQ6KSBC
T09MIF9hY2Nlc3NIYW5kbGVFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRO
b3RpZmljYXRpb25zRW5hYmxlZDopIEJPT0wgX25vdGlmaWNhdGlvbnNFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgc2V0dGVyPV9zZXRQdXNoQVBJRW5hYmxlZDopIEJPT0wgX3B1c2hBUElFbmFibGVk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNb2RlbERvY3VtZW50RW5hYmxlZDopIEJP
T0wgX21vZGVsRG9jdW1lbnRFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc0NzEwNTEzMzU3ZmY0
ZTcyZGI0MzRhMDdkOTI1YTYwY2ZkNzE4MzMuLjdkOGU4NzkyOTVjYzA0ZmRkZTE1YjBmZGVjY2Jj
MjdlOGQwMDZkYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0xNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBwdXNoIHByZWZlcmVuY2UgdG8gYmUgc2V0IHByb2dyYW1h
dGljYWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSB3ZWJwdXNoZCB0ZXN0cyBlbmFibGUgdGhlIHB1c2ggQVBJIHZpYSBXS1ByZWZlcmVuY2Vz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tOgorCiAyMDIyLTAzLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWVyZ2UtUXVldWVdIEFkZCBzdGVwIHRvIG1ha2UgY29tbWVudCBvbiBw
dWxsIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggZDE0Yzk3MDU3ZDdmYTYwM2I1N2M3NTUzOTZh
ZWQxOTQzZjE3NDQwYS4uOGM4OTI2NDg0YzMxNzdjMWNhMzU5YWY2ZDQ2YjU4NTdmYWIwY2FkOSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNo
RGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
UHVzaERhZW1vbi5tbQpAQCAtNDE2LDExICs0MTYsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBj
bGVhcldlYnNpdGVEYXRhU3RvcmUoW21fY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7
CiAKICAgICAgICAgW21fY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcyBfc2V0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQ6WUVTXTsKKyAgICAgICAgW21fY29uZmlndXJhdGlvbi5nZXQoKS5wcmVm
ZXJlbmNlcyBfc2V0UHVzaEFQSUVuYWJsZWQ6WUVTXTsKICAgICAgICAgZm9yIChfV0tFeHBlcmlt
ZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0
dXJlc10pIHsKICAgICAgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAi
QnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkIl0pCiAgICAgICAgICAgICAgICAgW1ttX2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVd
OwotICAgICAgICAgICAgZWxzZSBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIlB1
c2hBUElFbmFibGVkIl0pCi0gICAgICAgICAgICAgICAgW1ttX2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOwogICAgICAgICB9CiAK
ICAgICAgICAgbV90ZXN0TWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>