Maybe that had been better. But well, seems like no matter the solution one uses something trippy happens. But seems like a good idea, but not sure I want to to change now unless strictly necessary. It works OK copying in all headers. And then some day FPC team wants to integrate new headers I can comment it out.
But still... the problem is confusing:
//--
// WKUserContentController.inc
//--
type
WKUserContentController = objcclass external (NSObject, NSSecureCodingProtocol)
public
function userScripts: NSArray; message 'userScripts';
procedure addUserScript (userScript: WKUserScript); message 'addUserScript:';
procedure removeAllUserScripts; message 'removeAllUserScripts';
procedure addScriptMessageHandler_contentWorld_name (scriptMessageHandler: WKScriptMessageHandlerProtocol; world: WKContentWorld; name: NSString); message 'addScriptMessageHandler:contentWorld:name:'; { available in macos 11.0, ios 14.0 }
procedure addScriptMessageHandlerWithReply_contentWorld_name (scriptMessageHandlerWithReply: WKScriptMessageHandlerWithReplyProtocol; contentWorld: WKContentWorld; name: NSString); message 'addScriptMessageHandlerWithReply:contentWorld:name:'; { available in macos 11.0, ios 14.0 }
procedure addScriptMessageHandler_name (scriptMessageHandler: WKScriptMessageHandlerProtocol; name: NSString); message 'addScriptMessageHandler:name:';
procedure removeScriptMessageHandlerForName_contentWorld (name: NSString; contentWorld: WKContentWorld); message 'removeScriptMessageHandlerForName:contentWorld:'; { available in macos 11.0, ios 14.0 }
procedure removeScriptMessageHandlerForName (name: NSString); message 'removeScriptMessageHandlerForName:';
procedure removeAllScriptMessageHandlersFromContentWorld (contentWorld: WKContentWorld); message 'removeAllScriptMessageHandlersFromContentWorld:'; { available in macos 11.0, ios 14.0 }
procedure removeAllScriptMessageHandlers; message 'removeAllScriptMessageHandlers'; { available in macos 11.0, ios 14.0 }
procedure addContentRuleList (contentRuleList: WKContentRuleList); message 'addContentRuleList:'; { available in macos 10.13, ios 11.0 }
procedure removeContentRuleList (contentRuleList: WKContentRuleList); message 'removeContentRuleList:'; { available in macos 10.13, ios 11.0 }
procedure removeAllContentRuleLists; message 'removeAllContentRuleLists'; { available in macos 10.13, ios 11.0 }
{ Adopted protocols }
procedure encodeWithCoder (coder: NSCoder); message 'encodeWithCoder:';
function initWithCoder (coder: NSCoder): id; message 'initWithCoder:';
class function supportsSecureCoding: objcbool; message 'supportsSecureCoding';
end;
type
WKUserContentControllerPtr = ^WKUserContentController;
//--
// WKScriptMessageHandler.inc
//--
type
WKScriptMessageHandlerProtocol = objcprotocol external name 'WKScriptMessageHandler' (NSObjectProtocol)
required
procedure userContentController_didReceiveScriptMessage (userContentController: WKUserContentController; message_: WKScriptMessage); message 'userContentController:didReceiveScriptMessage:';
end;
Can't solve the circular reference between WKUserContentController and and WKScriptMessageHandlerProtocol
One additional oddness I have found is that copy from the updated headers I see code like this
type
WKScriptMessageHandlerProtocolPtr = ^WKScriptMessageHandlerProtocol;
WKScriptMessageHandlerProtocol = objcprotocol external name 'WKScriptMessageHandler' (NSObjectProtocol)
...
But when I compile Lazarus/FPC will not accept that and forces me to reverse order
type
WKScriptMessageHandlerProtocol = objcprotocol external name 'WKScriptMessageHandler' (NSObjectProtocol)
...
WKScriptMessageHandlerProtocolPtr = ^WKScriptMessageHandlerProtocol;
Not sure if the problem is related with some kind of forwards