Closed
Bug 229285
Opened 21 years ago
Closed 21 years ago
separate nsIXULOverlayProvider from nsIXULChromeRegistry
Categories
(Core :: XUL, defect)
Core
XUL
Tracking
()
RESOLVED
FIXED
mozilla1.7alpha
People
(Reporter: benjamin, Assigned: benjamin)
Details
Attachments
(2 files, 1 obsolete file)
46.23 KB,
patch
|
bryner
:
review+
hyatt
:
superreview+
|
Details | Diff | Splinter Review |
537 bytes,
patch
|
Details | Diff | Splinter Review |
per my plan at http://bdsmedberg.no-ip.org/chrome/ I'm separating the chrome
registry into a set of smaller interfaces. This bug is for nsIXULOverlayProvider
(because that's the easiest one). First-draft patch forthcoming.
Assignee | ||
Comment 1•21 years ago
|
||
This is a working patch for seamonkey. I want to get review comments on this
(not necessarily detailed nitpicks, but at least that the interfaces are
correct). Before checking in, of course, I'm gonna need to patch the toolkit,
as well as chromelite and perhaps the embed chrome service.
Assignee | ||
Updated•21 years ago
|
Attachment #137888 -
Flags: superreview?(hyatt)
Attachment #137888 -
Flags: review?(bryner)
Assignee | ||
Comment 2•21 years ago
|
||
oops, bryner is module owner
Target Milestone: --- → mozilla1.7alpha
Comment 3•21 years ago
|
||
I'd prefer if you could avoid the goto usage in nsXULDocument.cpp.
Assignee | ||
Comment 4•21 years ago
|
||
darin has been pushing the goto-preventing-early-returns style as a way to cut
codesize by significant amounts. Is there an alternate coding style that
prevents the goto but doesn't have early returns? (multiple comptr and string
destructor code is the culprit).
Comment 5•21 years ago
|
||
I'm worried that this is making things more complicated than they need be. What
sort of code other than the chrome registry would ever implement
nsIXULOverlayProvider? If we don't know of any, then I would say the category
thing is overkill.
Assignee | ||
Comment 6•21 years ago
|
||
Comment on attachment 137888 [details] [diff] [review]
nsIXULOverlayProvder (seamonkey-only)
More work needed on this: I wasn't separating out non-chrome XUL correctly.
As for the category, I can't think of a use-case, so we can probably just use a
contractid. However, I do want to keep the category for the styleprovider (in
my proposal), because I definitely see an extension use-case for that, plus
separating the userContent/userChrome provider from the chrome provider and
perhaps the scrollbar provider.
Attachment #137888 -
Attachment is obsolete: true
Attachment #137888 -
Flags: superreview?(hyatt)
Attachment #137888 -
Flags: review?(bryner)
Assignee | ||
Comment 7•21 years ago
|
||
This appears to work nicely on seamonkey. I'm having a problem with my new
firebird build; it has an undefined entity in the help overlay. I don't know
whether this is because of this patch or is a fluke or something else.
Assignee | ||
Updated•21 years ago
|
Attachment #138434 -
Flags: review?(bryner)
Assignee | ||
Comment 8•21 years ago
|
||
Comment on attachment 138434 [details] [diff] [review]
nsIXULOverlayProvider
My firebird bug was a fluke, I think. This should be ready for review. Hyatt,
do you want to review this, or should I ask jst?
Attachment #138434 -
Flags: superreview?(hyatt)
Updated•21 years ago
|
Attachment #138434 -
Flags: superreview?(hyatt) → superreview+
Comment 9•21 years ago
|
||
Comment on attachment 138434 [details] [diff] [review]
nsIXULOverlayProvider
r=bryner
Attachment #138434 -
Flags: review?(bryner) → review+
Assignee | ||
Comment 10•21 years ago
|
||
I tried to check this in, but it caused orange on the tboxen that were running
the Txul test. Mozilla runs fine, it's just the -chrome flag with a file: URI
causes assertions like "no xul:window".
I have backed it out... would love suggestions on what might have caused this.
Assignee | ||
Comment 11•21 years ago
|
||
FIXED on trunk. I had misplaced the close-brace in nsXULDocument::EndLoad such
that non-chrome XUL docs never called ResumeWalk...
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Comment 12•21 years ago
|
||
Please don't add trailing whitespace. Nagging cuz the misplaced brace (really,
misplaced PrepareToWalk/ResumeWalk code -- indentation was off) caught my eye.
Reviewers must have blinked. I'm happy to review XUL document/prototype code,
obviously....
/be
This broke the minimo build (I'm not sure which option specifically). See the
egg build on
http://tinderbox.mozilla.org/showbuilds.cgi?tree=SeaMonkey-Testerbox&hours=36
Comment 14•21 years ago
|
||
Minimo's not tier 1, but it is heading that way. Benjamin, can you look into
this? I'll leave it to you to reopen, or not -- main thing is to fix the bustage.
/be
Assignee | ||
Comment 15•21 years ago
|
||
I'm on it... this is due to --disable-xul. dougt, do we need to build
rdf/chrome at all for minimo? Don't we use the minimo chrome registry?
Assignee | ||
Comment 16•21 years ago
|
||
Assignee | ||
Updated•21 years ago
|
Attachment #139134 -
Flags: superreview?(bryner)
Attachment #139134 -
Flags: review?(dougt)
Comment on attachment 139134 [details] [diff] [review]
Don't build chrome registry if --disable-xul is specified
If you're going to take this approach, it seems like
embedding/minimo/chromelite should be built ifndef MOZ_XUL instead of ifdef
MINIMO.
Comment 18•21 years ago
|
||
Comment on attachment 139134 [details] [diff] [review]
Don't build chrome registry if --disable-xul is specified
i have something similar in my tree. however, i just changed ifndef
MOZ_XUL_APP to ifdef MOZ_XUL_APP.
Comment 19•21 years ago
|
||
Comment on attachment 139134 [details] [diff] [review]
Don't build chrome registry if --disable-xul is specified
what dbaron said.
Assignee | ||
Comment 20•21 years ago
|
||
OK, I've checked in a patch that builds embedding/minimo/chromelite when XUL_APP
is not defined, and rdf/chrome otherwise.
Updated•21 years ago
|
Attachment #139134 -
Flags: superreview?(bryner)
Comment 21•21 years ago
|
||
> darin has been pushing the goto-preventing-early-returns style as a way to cut
> codesize by significant amounts. Is there an alternate coding style that
> prevents the goto but doesn't have early returns? (multiple comptr and string
> destructor code is the culprit).
Why isn't such code fused by the compiler? If you have to write
nsCOMPtr<nsIWhatever> whatever = ...;
nsCAutoString s;
rv = whatever->GetSomeString(&s);
if (NS_FAILED(rv)) return rv;
do more stuff;
if (NS_FAILED(rv)) return rv;
do yet more stuff;
return rv;
like so:
nsCOMPtr<nsIWhatever> whatever = ...;
nsCAutoString s;
rv = whatever->GetSomeString(&s);
if (NS_SUCCEEDED(rv)) {
do more stuff;
if (NS_SUCCEEDED(rv)) {
do yet more stuff;
}
}
return rv;
then (a) the success case takes the branch-predicted-not-taken path, which hurts
on modern (super-scalar) CPUs; (b) we might as well manually refcount, since
there is a single return and a single place to put the NS_IF_RELEASE or the
NS_RELEASE or whatever; my original point (c), we need a better compiler,
because any decent basic block analyzing optimizer should be able to fuse the
common destructor calls that pile up before early returns, along with fusing the
returns.
I don't like bending our code around weak compilers (gcc pre 3.5? ;-) -- when
the compilers get fixed, the code is still bent. And I don't like the very real
costs in (a), either -- they show the penalty for overindenting normal-case code
is not just aesthetic.
About (b), the only thing to say is that code with manual refcounting ages
badly, assuming it was written by Top Men -- and if it wasn't, then it's leaky
from the get-go. In past kernel hacking lives, I and a few comrades could keep
things balanced in C (no autostrings/smartptrs), but even then, the kernel
hacker gene pool eventually regressed to the mean. We have smart pointers and
auto-strings -- let's use them as if we had them, not as if we were stuck with
manual ref-counting, which does not scale across a large project.
Sorry to spam a closed bug, but I wanted to record these thoughts and get some
reactions.
/be
Assignee | ||
Updated•20 years ago
|
Attachment #139134 -
Flags: review?(dougt)
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: shrir → xptoolkit.widgets
You need to log in
before you can comment on or make changes to this bug.
Description
•