Closed Bug 216489 Opened 17 years ago Closed 11 years ago

registerChrome() doesn't set |selectedSkin| and |selectedLocale|

Categories

(Core :: XUL, defect)

defect
Not set

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: bugs4hj, Unassigned)

Details

Steps to reproduce:
1) vanilla installation of mozilla (doesn;t for with FB)
1) use a new profile 
2) select the modern theme (restart when needed)
3) download/install from http://multizilla.mozdev.org/installation.html
4) restart mozilla

Current result : classic skin selected for tabs and buttons
Expected result: modern skin selected for tabs and buttons

This is what we use in install.js

registerChrome(PACKAGE | G_CHROME_TYPE, getFolder(G_CHROME_LOC, G_JAR_FILE),
G_CONTENT);
registerChrome(SKIN    | G_CHROME_TYPE, getFolder(G_CHROME_LOC, G_JAR_FILE),
G_MODERN_SKIN);
registerChrome(SKIN    | G_CHROME_TYPE, getFolder(G_CHROME_LOC, G_JAR_FILE),
G_CLASSIC_SKIN);
registerChrome(LOCALE  | G_CHROME_TYPE, getFolder(G_CHROME_LOC, G_JAR_FILE),
G_LOCALE);

So there are to registerChrome()'s in install.js 
And this is the result: 

chrome.rdf (before the MultiZilla installation):
  <RDF:Description about="urn:mozilla:package:multiviews">
    <c:selectedLocale resource="urn:mozilla:locale:en-US:multiviews"/>
    <c:selectedSkin resource="urn:mozilla:skin:modern/1.0:multiviews"/>
  </RDF:Description>

chrome.rdf (after the MultiZilla installation):installation:
  <RDF:Description about="urn:mozilla:package:multiviews">
    <c:selectedLocale resource="urn:mozilla:locale:en-US:multiviews"/>
    <c:selectedSkin resource="urn:mozilla:skin:classic/1.0:multiviews"/>
   </RDF:Description>

registerChrome() should somehow check for the currently selected skin, in case
it locates more than one...
Darn: s/(doesn;t for with FB)/(doesn't work with mozillaFirebird)
Summary: registerChrome() doesn't seem to check |selectedSkin| → registerChrome() doesn't seem to check |selectedSkin|
Assignee: ssu → bsmedberg
Component: Installer: XPInstall Engine → XP Toolkit/Widgets
I found this strange that it could be a bug in Mozilla extension installer,
because using the other good tab extension for mozilla doesn't have this skin bug.

(The other tab extension is Tabbrowser Extensions :
http://extensionroom.mozdev.org/#tbe and this extension seems to be the same
kind of replacement of the tab toolbar of mozilla. so...)
I believe this to be the problem:
When installing an addon, the selectedLocale and selectedSkin attributes in the
profile chrome are *not* set. When the addon is first used, Mozilla selects the
first locale or skin it finds if that has data for this addon, eg:

  <RDF:Seq about="urn:mozilla:locale:root">
    <RDF:li resource="urn:mozilla:locale:it-IT"/>
    <RDF:li resource="urn:mozilla:locale:fr-FR"/>
    <RDF:li resource="urn:mozilla:locale:en-US"/>
  </RDF:Seq>

If it-IT has locale data for the addon, selectedLocale is set accordingly.
If it-IT has *no* locale data for the addon, we get the infamous red XUL error
area...
Summary: registerChrome() doesn't seem to check |selectedSkin| → registerChrome() doesn't set |selectedSkin| and |selectedLocale|
I just attached a patch to bug 246014 that will take care of this for
new-toolkit apps. It might be possible to backport that approach to seamonkey,
though it doesn't look easy, because you'd have to hack a lot of stuff in
pref-themes.js and locale-selection and profile code.
(In reply to comment #4)
> I just attached a patch to bug 246014 that will take care of this for
> new-toolkit apps. It might be possible to backport that approach to seamonkey,
> though it doesn't look easy, because you'd have to hack a lot of stuff in
> pref-themes.js and locale-selection and profile code.

I sure hope you can find some time to fix this. This will most certainly help me
and all other Mozilla users...
I will not be working on this for seamonkey, though I will help interested
volunteers. Porting seamonkey to the new toolkit would IMO be a better long-term
plan.
Assignee: bsmedberg → nobody
QA Contact: agracebush → bsmedberg
JFTR: The solution of bug 265760 (adding chrome:name) seems to work around the
locale side of this bug as described in comment #3 (at least wrt to the Red XUL
Errors)...
(In reply to comment #6)
> I will not be working on this for seamonkey, though I will help interested
> volunteers. 

We really needs this fixes, so guess I will have to be that volunteer one day,
but I cannot compile Mozilla (I can compile but have regal restrictions at work
and I won't be home for another 5 months or so). So, are you willing to do that,
after I finished the patch?

>Porting seamonkey to the new toolkit would IMO be a better long-term plan.

Are you talking about the BE, FE or both?
(In reply to comment #7)
> JFTR: The solution of bug 265760 (adding chrome:name) seems to work around the
> locale side of this bug as described in comment #3 (at least wrt to the Red XUL
> Errors)...

Here the source of the file mentioned in bug 265760:
http://lxr.mozilla.org/aviarybranch/source/extensions/inspector/resources/locale/en-US/contents.rdf#12

How good does this fix work? So far I use an really bad workaround in the
PrefBar installer. If this "fix" really works I could simplify my installer very
much!

Mozilla/5.0 (Windows; U; Win98; pl-PL; rv:1.7.5) Gecko/20041217 MultiZilla/1.7.0.2d

WORKSFORME. Probably was FIXED either in Mozilla code, or in Multizilla code.

See also: http://www.mozdev.org/bugs/show_bug.cgi?id=3433 (Multizilla bug report)
(RE: comment #6)
From:
http://wiki.mozilla.org/SeaMonkey:Project_Goals#Future_Releases

I take it this means that development of Mozilla will continue but not by the
Mozilla Foundation. And that the plan is to backport the New Toolkit from
Firefox as per your suggestion.
QA Contact: benjamin → xptoolkit.widgets
the old chrome registry/xpinstall code is completely dead
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.