Closed Bug 1294361 Opened 8 years ago Closed 7 years ago

Firefox translates '%' into "%2525", making displaying of certain files impossible on Gerrit Code Review 2.5.1

Categories

(Web Compatibility :: Site Reports, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: cpanceac, Unassigned)

References

Details

(Keywords: regression)

User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Build ID: 20160604131506

Steps to reproduce:

access a Gerrit server to display a file called:

base-files_%.bbappend
	 
Firefox translates the '%' into "%2525" making the file impossible to display. If i change manually the URL to remove 2525, then all is fine.
A similar problem i have for '^' which is translated into "%255E". Example:

project:^yocto.*,n,z

becomes

project:%255Eyocto.*,n,z

, which Gerrit no longer understands.
Can you provide the URL of the page the issue happens and can be reproduced?
Flags: needinfo?(cpanceac)
Component: Untriaged → DOM: Core & HTML
Product: Firefox → Core
https://gerrit.example.com/#/q/status:open+project:^yocto.*,n,z

is translated to

https://gerrit.example.com/#/q/status:open+project:%255Eyocto.*,n,z

Should be reproducible on every Gerrit server

On this first case something interesting thing is happening. The application reports on screen:

Application Error
Server Error
line 1:86 no viable alternative at character '%'
Continue

So maybe this is a problem in the communication between Gerrit and Firefox.
Google Chrome does not have this problem. (But Google created also Gerrit.)

*

https://gerrit.example.com/#/c/29906/2/recipes-core/base-files/base-files_%.bbappend

is translated to 

https://gerrit.example.com/#/c/29906/2/recipes-core/base-files/base-files_%2525.bbappend

So in order to reproduce it you will need to have a Gerrit server 

Gerrit Code Review (2.5.1)

and review a file having '%' in his name, and for the second example, do a search for

project:^yocto.*

I know this is not easy to reproduce unless you are one of the many Gerrit users out there.
Flags: needinfo?(cpanceac)
Thanks, confirmed the issue.

Here's regression range:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=a38c23ccca0a&tochange=be81b8d6fae9

bug 1093611 might be related, as it touches percent encoding in hash.

Then, the issue doesn't happen on Gerrit Code Review 2.12.3, so I guess they fixed the issue already.
Is it possible to update yours?
Do you have any idea how widely older versions are used?
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: regression
See Also: → 1093611
Summary: Firefox translates '%' into "%2525", making displaying of certain files impossible → Firefox translates '%' into "%2525", making displaying of certain files impossible on Gerrit Code Review 2.5.1
Honestly i don't know how widely used is this older version, but i would like to never update to the newer version, i completely dislike the new interface (and is not my decision anyway).
Component: DOM: Core & HTML → Networking
Reporter, can you provide a valid public URL that reproduces? It's going to be hard to track down the actual issue without a URL that reproduces. (I tried making a link to a filename with % in it on my local server, and could not reproduce the issue).
Flags: needinfo?(cpanceac)
Whiteboard: [necko-active]
No, i do not have a public link for this, but i believe Tooru Fujisava reproduced the issue.
Tooru: see comment 6 and 7.  Do you have a public URI that shows this issue?  We haven't been able to reproduce it so far.
Flags: needinfo?(cpanceac) → needinfo?(arai.unmht)
sent URL to nwgh and jduell.
Flags: needinfo?(arai.unmht)
might be better checking how Gerrit fixed the issue on their side.
(In reply to Tooru Fujisawa [:arai] from comment #10)
> might be better checking how Gerrit fixed the issue on their side.

Any information for the Gerrit fix?
I've found one bug [1] but its status is still NEW.

[1] https://bugs.chromium.org/p/gerrit/issues/detail?id=3642
Flags: needinfo?(arai.unmht)
Here's bisection result:
  2.12        | good
  2.11        | good
  2.11-rc0    | good
  2.10.7      | bad
  2.10        | bad
  2.9         | bad
  2.5.1       | bad

downloaded from https://gerrit-releases.storage.googleapis.com/index.html

2.11-rc0 sends only one request for the search.
  http://SERVER:PORT/changes/?q=project:^yocto.*&n=25&O=81

2.10.7 sends 2 requests for the search
  http://SERVER:PORT/changes/?q=project:^yocto.*&n=25&O=81
  http://SERVER:PORT/changes/?q=project:%5Eyocto.*&n=25&O=81

there would be some fix or workaround between there.
Flags: needinfo?(arai.unmht)
(In reply to Tooru Fujisawa [:arai] from comment #12)
> there would be some fix or workaround between there.

Thanks for doing this.

I've tried but I don't find a related bug fixed in the release note of 2.11.
It just happened to be fixed.
it's unfortunate that I cannot build Gerrit 2.10.7 nor 2.11.0-rc2 locally, while I can build 2.12.4 :/
maybe because of build system incompatibility

it throws error at the start of building:
> Not using buckd because watchman isn't installed.
> Parse error for build file /tmp/gerrit/BUCK:   File "/tmp/gerrit/BUCK", line 3, in <module>
>     gerrit_war(name = 'gerrit')
>   File "/tmp/gerrit/tools/build.defs", line 77, in gerrit_war
>     visibility = visibility,
>   File "/tmp/gerrit/tools/build.defs", line 63, in war
>     visibility = visibility,
>   File "/tmp/gerrit/buck-out/tmp/buck_run.nQmFte/buck6301893443371083208.py", line 130, in invoke
>     return self.func(*args, **updated_kwargs)
> TypeError: genrule() got an unexpected keyword argument 'deps'

I cannot bisect between those versions
I meant 2.11.0-rc0
It works if we pretend the user agent is others.
No error prompts.
Assignee: nobody → juhsu
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INVALID
so you say that the problem is on their side, right? but why google chrome is NOT affected by this problem?  i mean, even if it's their problem, maybe firefox can still work around it ....
(In reply to cornel panceac from comment #17)
> so you say that the problem is on their side, right? but why google chrome
> is NOT affected by this problem? 
Since it works when we use other user-agent in the same Firefox, IMO somewhere 
else breaks this use-case.

> i mean, even if it's their problem, maybe firefox can still work around it ....
If there's a more specified behavior (for example what JS behavior makes Gerrit 
escape ^ to %255E), we could find out a way making the world better.

FWIW, it works for later Gerrit per comment 12.

And thanks for reporting this.
Indeed, it was fixed in some newer versions, but i have reported it on the older version, where google chrome does not expose this behaviour. on the other hand, i agree that is not right to put some code in that says if CertainGerritVersion then use theOtherUserAgent :)
Because they sniff the user-agent and do the wrong thing only if the user-agent indicates Firefox.
That said, this bug should have morphed to Tech Evangelism.
Status: RESOLVED → REOPENED
Component: Networking → Desktop
Product: Core → Tech Evangelism
Resolution: INVALID → ---
Version: 47 Branch → unspecified
Assignee: juhsu → nobody
Whiteboard: [necko-active]
(In reply to Junior [:junior] from comment #18)
> FWIW, it works for later Gerrit per comment 12.


Thanks everyone for the analysis. Are the older versions maintained?
If not there will be no hope for outreach and we could close it as WONTFIX or WORKSFORME as it is working in recent versions.

https://bugs.chromium.org/p/gerrit/issues/detail?id=3642#c3
It seems like older versions are not maintained. The solution is to upgrade the older version to the currently working one. Thanks.
Status: REOPENED → RESOLVED
Closed: 8 years ago7 years ago
Resolution: --- → INVALID
Product: Tech Evangelism → Web Compatibility
You need to log in before you can comment on or make changes to this bug.