NS_STYLESHEETSERVICE_CID is not exported

RESOLVED INCOMPLETE

Status

()

Core
Embedding: APIs
RESOLVED INCOMPLETE
11 years ago
2 years ago

People

(Reporter: Ben Hutchings, Unassigned)

Tracking

Trunk
x86
All
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

11 years ago
User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060804 Firefox/1.0.4 (Debian package 1.0.4-2sarge10)
Build Identifier: 1.8.0.5

The contract id for the style-sheet service (NS_STYLESHEETSERVICE_CID) is defined in layout/base/nsStyleSheeetService.h, which is not exported into the SDK. This makes nsStyleSheetService hard to use when embedding Mozilla - I had to hunt around in LXR and then copy it into my own code.

Reproducible: Always
We should have some header for gklayout to export contracts and CIDs... nsLayoutCID doesn't seem to be it.  :(
Status: UNCONFIRMED → NEW
Ever confirmed: true
fwiw, CID and contract ID are different. also, nsIStyleSheetService is not frozen, so that's not part of the SDK either.
Yeah, I think we should be exporting the contractid... and we should probably work on fixing nsIStylesheetService.
(Reporter)

Comment 4

11 years ago
Having now found an explanation of CID vs contract id, I suppose I mean CID, although perhaps it would be more appropriate to expose a contract id (or even both).

nsIStyleSheetService.h is included in the Debian package libxul-dev, which I believe is a package of the "SDK" that XULRunner builds. If the interface isn't frozen that's another problem, as it seems like something that's primarily useful for embedders who want an easy way to customise the browser. I seem to remember Boris pointed me towards it some time back when I asked about setting style-sheets in mozilla.dev.embedding, though I couldn't make use of it then.
> nsIStyleSheetService.h is included in the Debian package libxul-dev, which I
> believe is a package of the "SDK" 

Er...  nsIStyleSheetService.idl is in XPIDLSRCS, not in SDK_XPIDLSRCS.  If Debian is claiming it's part of some SDK, we need to talk to them about it.  :(

And yes, this is yet another case where something useful simply cannot be done with just the SDK... Hence me pointing to this service on .embedding even though it's not frozen yet.
(Reporter)

Comment 6

11 years ago
You're right, it's not part of the "SDK". However, config/rules.mk includes the rule:

install:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(XPIDLSRCS))
ifndef NO_INSTALL
	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(includedir)/$(MODULE)
endif

This seems to cause "make install" to install headers for *all* interfaces. The Debian package libxul-dev contains everything that "make install" puts in /usr/include/xulrunner, among other directories.

Comment 7

11 years ago
The problems with "make install" and the "SDK" being totally different are well known and being worked on for FF3/Gecko1.9.

bz, do you want to morph this bug to move this contract/cid into a nsLayoutContractIDs.h file?
That wouldn't be morphing.  That's what this bug is about.

Comment 9

2 years ago
Marking a bunch of bugs in the "Embedding: APIs" component INCOMPLETE in preparation to archive that component. If I have done this incorrectly, please reopen the bugs and move them to a more correct component as we don't have "embedding" APIs any more.
Status: NEW → RESOLVED
Last Resolved: 2 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.