Bug 10714

Summary: ObjC autogeneration needs safe-guards against easily modifying the public API
Product: WebKit Reporter: Timothy Hatcher <timothy>
Component: WebKit APIAssignee: Timothy Hatcher <timothy>
Status: RESOLVED FIXED    
Severity: Major    
Priority: P2    
Version: 420+   
Hardware: Mac   
OS: OS X 10.4   
Attachments:
Description Flags
Fixes this along with some other tweaks darin: review+

Timothy Hatcher
Reported 2006-09-03 13:29:41 PDT
The Exclude=ObjC attribute is used right now to preventing adding API that has not been approved. Ususally this happens by adding to a private header first, not just excluding it. We need a way to prevent acedental additions to the public API, an opt-in process. Right now even Exclude=ObjC is faulty if someone forgets to add it when making changes to the IDL files. I propose a file that contains the interfaces for all the public API. This can be cross referenced for changes and omisions when the auto-generation script makes the real interfaces. Only methods in the reference file will be public, everything else will be added to a private header. And Exclude=ObjC will only be used for the rare case when we don't want something exposed to ObjC.
Attachments
Fixes this along with some other tweaks (104.28 KB, patch)
2006-09-04 17:33 PDT, Timothy Hatcher
darin: review+
Timothy Hatcher
Comment 1 2006-09-03 13:30:17 PDT
I have a working patch for this that I am cleaning up.
Timothy Hatcher
Comment 2 2006-09-04 17:33:47 PDT
Created attachment 10397 [details] Fixes this along with some other tweaks - New PublicDOMInterfaces.h file is consulted when generating   the ObjC DOM files. All public DOM class interfaces, properties   and methods need to be in this file. Anything not in the file will   be generated into the appropriate private header file. During   generation if something changed or is missing in the public API   a build error will occur. New interfaces added to the IDLs files   will now not automatically be reflected in the public ObjC API.   Methods commented out in PublicDOMInterfaces.h are pending public   and will be uncommented once approved. - Removed most of the Exclude=ObjC uses from the IDL files. This   attribute was mostly used to prevent changes to the public headers. - Make a new parameter name if the original conflicts with a property name. - Simplified the generation code for dealing with exceptions. - Moved file opens to WriteData. Files are unlinked before   being opened to work around a Leopard file truncation bug. - Fixed #imports for DOMImplementation to be DOMDOMImplementation.h
Darin Adler
Comment 3 2006-09-04 18:37:13 PDT
Comment on attachment 10397 [details] Fixes this along with some other tweaks r=me
Timothy Hatcher
Comment 4 2006-09-04 19:39:22 PDT
Landed in r16225.
Note You need to log in before you can comment on or make changes to this bug.