3411: favicon not shown in diff view
- Fixed
- Review Board
matthias********@fams***** (Google Code) (Is this you? Claim this profile.) | |
March 16, 2015 |
What version are you running? RB 2.0.1 Watch a review request, e.g. https://reviews.reviewboard.org/r/5964/ , favicon is properly shown. When you now click on "View Diff" (=> https://reviews.reviewboard.org/r/5964/diff/# ), the favicon is suddenly gone/none is displayed. Firefox 29.0.1, linux
Very weird. We have the same HTML linking to the favicon on both pages. I think this happens only when our Backbone routers get involved.
-
+ Confirmed
This definitely seems to be a bug in Firefox. Other browsers handle this correctly.
-
- Confirmed + ThirdParty
Apparently Firefox by default limits favicon sizes to 1KB - see the browser.chrome.image_icon.max_size setting (and https://bugzilla.mozilla.org/show_bug.cgi?id=523646). Review Board's favicon is 17KB, and I've just checked that it gets displayed when I bump the max_size to 64KB.
Huh, interesting. I wonder if there's a way to crush the .ico files to be smaller. If not, we should probably just cut the cord to the past and switch to the .png versions only.
Bumping browser.chrome.image_icon.max_size and following the STR in the main comment does not fix the issue for me. I also have a feeling this is a Firefox bug.
Removing EasyFix for now - I don't think crushing the size of the favicon is going to fix this.
-
- EasyFix
I ran across this issue and found it a little annoying so I thought I would poke at it a bit. From Googling it appears it is indeed a Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=519028 There is useful discussion and solutions at: http://stackoverflow.com/questions/2409759/firefox-3-6-9-drops-favicon-when-changing-window-location I borrowed the one line answer provided by Mottie and inserted it into diffViewerPageView.js, and as far as I can tell it solved the problem in both Firefox 35.0.1 on Windows and 31.3.0 ESR on Linux. It also doesn't seem to break anything in IE 11.0.9600. I know absolutely nothing about javascript so I don't really understand why this solution works or why it would be preferable to another solution. Given this, I feel more comfortable posting the diff here and will leave it to someone else to publish for review. diff --git a/reviewboard/static/rb/js/pages/views/diffViewerPageView.js b/reviewboard/static/rb/js/pages/views/diffViewerPageView.js index 5a6557f..b815510 100644 --- a/reviewboard/static/rb/js/pages/views/diffViewerPageView.js +++ b/reviewboard/static/rb/js/pages/views/diffViewerPageView.js @@ -79,20 +79,21 @@ RB.DiffViewerPageView = RB.ReviewablePageView.extend({ /* * If we have "index_header" or a file+line hash in the location, * strip it off. Backbone's router makes use of the hash to try to * be backwards compatible with browsers that don't support the * history API, but we don't care about those, and if it's present * when we call start(), it will change the page's URL to be * /diff/index_header, which isn't a valid URL. */ if (window.location.hash) { window.location.replace('#'); + $('link[type*=icon]').detach().appendTo('head'); } Backbone.history.start({ pushState: true, hashChange: false, root: this.options.reviewRequestData.reviewURL + 'diff/', silent: true }); },
As far as I can tell this was fixed in 42aee3b. I now correctly see the favicon on diff viewer pages. Confirmed in Firefox 36.0.1 on Windows and 31.3.0 ESR on Linux.