Closed Bug 297433 Opened 19 years ago Closed 19 years ago

On Mac OS X preview.png and icon.png in Firefox's classic.jar are not available when using the jar protocol

Categories

(Firefox Build System :: General, defect)

x86
macOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: robert.strong.bugs, Assigned: robert.strong.bugs)

Details

Attachments

(8 obsolete files)

I believe this is due to the way the icon.png and preview.png are packaged via
the build script. My reason for believing this is that I am able to extract
classic.jar, zip it with the exact same structure using zip, replace the
original classic.jar with this one, and I am then able to access the icon.png
and preview.png using the jar protocol.

To reproduce try accessing jar:resource:///chrome/classic.jar!/icon.png with
Firefox on a Mac OS X system.
I forgot to mention that other images within the original jar can be accessed
using jar:file:/// for example while the icon.png and preview.png can not be
accessed.

jar:file:///path to classic.jar/classic.jar!skin/classic/browser/Go.png
jar:file:///path to classic.jar/classic.jar!skin/classic/browser/Go.png
should be
jar:file:///path to classic.jar/classic.jar!/skin/classic/browser/Go.png
Is classic.jar supposed to have a preview.png and icon.png?
(In reply to comment #3)
> Is classic.jar supposed to have a preview.png and icon.png?
Yes and it does. This is rather strange since all I had to do to fix this is
unzip and zip again to be able to access the icon.png and preview.png.

The code doesn't extract the icon.png and preview.png from classic.jar since the
main reason for doing so is to not have a zipreader open in order to be able to
uninstall a theme which doesn't apply to classic.jar.
A little more investigation. Using a fresh install of Deer Park and enumerating
the entries in classic.jar showed the entry name for icon.png and preview.png to
be prepended with a ./ (e.g. ./icon.png and ./preview.png) while doing the same
thing on Win32 showed them correctly as just icon.png and preview.png. Also, the
jar.mn for both pinstripe and winstripe have the following at the bottom:
  ./preview.png
  ./icon.png

So, it appears that these paths are being used for the paths inside the jar by
the compression utility when building on Mac OS X.
Attached patch patch for browser (obsolete) — Splinter Review
This patch should fix this issue for Mac OS X though I am unable to verify
since I don't own a Mac. :/

If this is acceptable I will create patches for the other products affected by
this but I would prefer to land this one first in order to verify it fixes this
issue on Mac OS X. What is preferable... one patch for all products or separate
patches?

Side note: when I first noticed this a couple of months ago I thought there
wasn't a preview.png for the Mac. It came to light this was failing after the
patch for bug 296578 landed since it no longer uses the fallsback image in the
case of the default theme. If we want to support using a theme supplied
fallback image for the default theme we would have to read the zip and since
this gets called multiple times I'd prefer just making it a requirement that
the default theme supplies an icon.png, etc.
Assignee: nobody → rob_strong
Status: NEW → ASSIGNED
Attachment #186188 - Flags: review?(benjamin)
Please note the messed up brackets:

-        ./icon.png
-        ./preview.png
+        icon.png                                                (icon.png)
+        preview.png                                             {preview.png)
Comment on attachment 186188 [details] [diff] [review]
patch for browser

>-        ./icon.png
>-        ./preview.png
>+        icon.png                                                (icon.png)
>+        preview.png                                             {preview.png)
------------------------------------------------------------------^

Typo. :)

Also, do you need to specify the source file if it is the same? I thought the
point was you didn't, but then I don't see why the ./ was needed (if
make-jars.pl was written well).
Attachment #186188 - Attachment is obsolete: true
Attachment #186188 - Flags: review?(benjamin)
James - I believe the script always expects to find at least one / which is
probably why the ./ was added.
Attachment #186189 - Flags: review?(benjamin)
Hmm, wont it have an issue with the patch then? Or is it so badly coded that it
only requires a / if there is just the one part? (surely that can be fixed?)
(In reply to comment #10)
> Hmm, wont it have an issue with the patch then? Or is it so badly coded that it
> only requires a / if there is just the one part? (surely that can be fixed?)
It handles it differently based on whether a destination is specified so the
patch works... having said that I decided to take a look at the script and I
have another patch coming up.
Attachment #186189 - Attachment is obsolete: true
Attachment #186189 - Flags: review?(benjamin)
Attached patch patch (obsolete) — Splinter Review
This hasn't been tested thoroughly but so far it does the right thing. My only
concern is I suspect that the ./ was prepended instead of handling files in the
root properly for some not so obvious reason so testing is needed.
Attachment #186191 - Flags: review?(benjamin)
Attachment #186191 - Attachment is obsolete: true
Attachment #186191 - Flags: review?(benjamin)
Attached patch patch (obsolete) — Splinter Review
Attachment #186193 - Flags: review?(benjamin)
Attachment #186193 - Flags: review?(benjamin) → review+
Attachment #186193 - Flags: approval-aviary1.1a2?
Comment on attachment 186193 [details] [diff] [review]
patch

I don't like the copy-paste or the lack of documentation for the somewhat
over-wrought regexps.  This code is already hard to read, and this makes it
worse.

If we're not going to do something simple like:

if (/\//) {
   s|.*/||;  # strip all but the last component
}
$cvsfile = File::Spec::Unix->canonpath($_);

then I'd like to see some  comments there explaining what we're doing, and why.
Attachment #186193 - Flags: approval-aviary1.1a2?
Attached patch patch (obsolete) — Splinter Review
Addresses Mike's comments.
Attachment #186193 - Attachment is obsolete: true
Attachment #186221 - Flags: review?(shaver)
Comment on attachment 186221 [details] [diff] [review]
patch

r+a=shaver, thanks.
Attachment #186221 - Flags: review?(shaver)
Attachment #186221 - Flags: review+
Attachment #186221 - Flags: approval-aviary1.1a2+
Attached patch patch for mail (obsolete) — Splinter Review
Patch for Thunderbird - this should not be landed until after attachment 186221 [details] [diff] [review]
has landed
Attached patch patch for calendar (obsolete) — Splinter Review
Patch for Sunbird - this should not be landed until after attachment 186221 [details] [diff] [review] has
landed
Attachment #186291 - Attachment is obsolete: true
Attached patch patch for mail (obsolete) — Splinter Review
Patch for Thunderbird - this should not be landed until after attachment 186221 [details] [diff] [review]
has landed.
Whiteboard: needs checkin
Whiteboard: needs checkin → [checkin needed]
Comment on attachment 186221 [details] [diff] [review]
patch

mozilla/config/make-chromelist.pl	3.10
mozilla/browser/themes/winstripe/browser/jar.mn 	1.11
mozilla/browser/themes/pinstripe/browser/jar.mn 	1.10
Attachment #186221 - Attachment is obsolete: true
Whiteboard: [checkin needed]
Comment on attachment 186292 [details] [diff] [review]
patch for calendar

Mike, I verified that this does indeed fix this for Firefox on Mac OS X and
this is the same theme patch for Sunbird.
Attachment #186292 - Flags: review?(shaver)
Comment on attachment 186293 [details] [diff] [review]
patch for mail

Scott, I verified that this does indeed fix this for Firefox on Mac OS X and
this is the same theme patch for Thunderbird.
Attachment #186293 - Flags: review?(mscott)
Attachment #186293 - Flags: review?(mscott) → review+
Attachment #186293 - Flags: approval-aviary1.1a2?
Comment on attachment 186292 [details] [diff] [review]
patch for calendar

Mike, can I get an r & a from you for this and the patch for mail? Thanks.
Attachment #186292 - Flags: approval-aviary1.1a2?
Attachment #186293 - Flags: approval-aviary1.1a2? → approval-aviary1.1a2+
Attachment #186292 - Flags: approval-aviary1.1a2? → approval-aviary1.1a2+
checkin needed on aattachment 186293
Whiteboard: [checkin needed][a+]
Comment on attachment 186292 [details] [diff] [review]
patch for calendar

r=shaver, thanks
Attachment #186292 - Flags: review?(shaver) → review+
fixed on trunk
Status: ASSIGNED → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Whiteboard: [checkin needed][a+]
Attachment #186292 - Attachment is obsolete: true
Attachment #186293 - Attachment is obsolete: true
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: