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.
I have a working patch for this that I am cleaning up.
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
Comment on attachment 10397 [details] Fixes this along with some other tweaks r=me
Landed in r16225.