Closed
Bug 363230
Opened 18 years ago
Closed 16 years ago
Adding a library definition (with a new UUID) around the ISimpleDomNode interface in ISimpleDomNode.idl and then compiling with midl to make a tlb causes a compile error with get_domNode.
Categories
(Core :: Disability Access APIs, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: mick, Assigned: surkov)
References
(Blocks 1 open bug)
Details
(Keywords: access)
Attachments
(2 files)
(deleted),
text/plain
|
Details | |
(deleted),
patch
|
aaronlev
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Build Identifier:
If languages such as python are to be able to use the interface, they will need an actual compiled typelib to use the interface, rather than just an IDL or C header files.
Reproducible: Always
Steps to Reproduce:
1. run midl ISimpleDomNode.idl
(See ISimpleDomNode.idl atached to this bug, it contains the library definition wrapping the interface).
2.
3.
Actual Results:
midl\oleaut32.dll : error MIDL2020 : error generating type library :
AddFuncDesc failed : get_nodeInfo (0x80070057)
Expected Results:
Should compile a .tlb file.
I am using the Microsoft Platform SDK, and MS Visual Studio 2003 express adition to compile the IDL file. I am using Windows XP service pack 2.
Reporter | ||
Comment 1•18 years ago
|
||
I am not sure if I have wrapped the interface correctly so that midl can create a typelib.
Updated•18 years ago
|
Comment 2•18 years ago
|
||
Does it really require a new UUID? AT vendors are already using ISimpleDOMNode, ISimpleDOMDocument and ISimpleDOMText. If we change the UUID it will break them.
Reporter | ||
Comment 3•18 years ago
|
||
The new UUID is for the library itself, not for the interfaces. The interface UUIDs have been left as they were. But, if there is to be a library wrapping all the interfaces, it needs its own UUID also. I would assume this won't change the way that others use these interfaces (but not being an expert, I can't be sure).
Comment 4•18 years ago
|
||
I'm not up on how the library aspect of this works. Do we use the same UUID when we wrap the ISimpleDOMText and ISimpleDOMDocument, since they're part of the same DLL? Or, do we not need to wrap those? (We probably do).
Updated•18 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
Reporter | ||
Comment 5•18 years ago
|
||
Good point. This would mean that all of the interfaces (ISimpleDomNode, ITextDom etc) will have to be in the one idl file, wrapped in one library definition. If this is anoying, I guess they could be in separate files, but each would have to be wrapped in its own library, with its own unique UUID. I don't believe that they could all share the same library UUID as surely this would cause conflicts when using more than one of the libraries.
Comment 6•18 years ago
|
||
I believe there will be a similar issue for IA2 support. Not sure if the IA2 .idl has been modified for this yet.
Comment 7•16 years ago
|
||
This one is blocking Bryan Garaventa on the mozilla.dev.accessibility mailing list.
Assignee: aaronleventhal → surkov.alexander
Assignee | ||
Comment 8•16 years ago
|
||
If I understand right then we should somehow to change ISimple* interfaces but we can't if we don't want to broke compatibility. Do I get correctly?
Comment 9•16 years ago
|
||
Surkov, I think it depends on what the change is. Apparently adding IDispatch support or the library definition won't break compatibility. And we'll make sure to test that.
What is necessary to change to make it compile?
Assignee | ||
Comment 10•16 years ago
|
||
(In reply to comment #9)
> Surkov, I think it depends on what the change is. Apparently adding IDispatch
> support or the library definition won't break compatibility. And we'll make
> sure to test that.
So the bug is we should include library definition into our idl files, right?
If so then should we declare one library definition for all ISimple* interfaces?
and should we generate type library additionally?
Comment 11•16 years ago
|
||
(In reply to comment #9)
> What is necessary to change to make it compile?
(In reply to comment #9)
> What is necessary to change to make it compile?
Ok I've tried to remind my self all this stuff and got the following
1) make those disp ID constants +ve integers. usually 1, 2, ,3 etc. that stop
the error you see (the COMM error is a parameter error which is not much help
in this case!)
2) you then have a problem with the local function but I'm not sure what you
are trying to do.
3) if this is supposed to be a disp interface then you want
interface ISimpleDOMNode : IDispatch
you have it inheriting from IUnknown
4) the first line in a library should be
importlib("stdole32.tlb"); and sometime "stdole.tlb";
can't remember quite why
Notes: you aught to add version, helpstrings and I personally would not nest
the definitions of the library and interface but but the library after the
iface. I deed if you already have the iface IDL then I pretty sure you can
reference it (include) rather than repeat it all here.
I'm not sure but you might want to declare an object in the librery IDL that
can be created using coclass, however I think in case there si a factory
someplace.
Hope that helps a little
Comment 12•16 years ago
|
||
Removing the id(foo) items from the *.idl allows it to compile a *.tlb (midl.exe no longer crashes when those are removed).
Assignee | ||
Comment 13•16 years ago
|
||
Attachment #330739 -
Flags: review?(aaronleventhal)
Assignee | ||
Comment 14•16 years ago
|
||
Could you check if the patch addressed the issue?
Comment 15•16 years ago
|
||
Comment on attachment 330739 [details] [diff] [review]
patch
What does the Makefile.in change do?
Assignee | ||
Comment 16•16 years ago
|
||
(In reply to comment #15)
> (From update of attachment 330739 [details] [diff] [review])
> What does the Makefile.in change do?
>
-I means include directory. I added import ISimpleDOMDocument and ISimpleDOMText into ISimpleDOMNode to keep them into one library.
Comment 17•16 years ago
|
||
Found no regressions with JAWS using this patch in a build.
Updated•16 years ago
|
Attachment #330739 -
Flags: review?(aaronleventhal) → review+
Assignee | ||
Comment 18•16 years ago
|
||
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Comment 19•11 years ago
|
||
https://developer.mozilla.org/en-US/docs/Accessibility/AT-APIs/ImplementationFeatures/MSAA links to old IDL files which don't have this fix. These links should probably be updated. I eventually found http://hg.mozilla.org/mozilla-central/raw-file/2520866d5874/accessible/public/msaa/ISimpleDOMNode.idl
Assignee | ||
Comment 20•11 years ago
|
||
(In reply to James Teh [:Jamie] from comment #19)
> https://developer.mozilla.org/en-US/docs/Accessibility/AT-APIs/
> ImplementationFeatures/MSAA links to old IDL files which don't have this
> fix. These links should probably be updated. I eventually found
> http://hg.mozilla.org/mozilla-central/raw-file/2520866d5874/accessible/
> public/msaa/ISimpleDOMNode.idl
done
You need to log in
before you can comment on or make changes to this bug.
Description
•