Closed Bug 1258605 Opened 4 years ago Closed 4 years ago

Vimeo "open app" button takes you to an about:neterror page, if you don't have vimeo app installed

Categories

(Firefox for Android :: General, defect)

All
Android
defect
Not set

Tracking

()

RESOLVED FIXED
Firefox 48
Tracking Status
firefox45 --- affected
firefox46 --- affected
firefox47 --- affected
firefox48 --- fixed

People

(Reporter: dholbert, Assigned: mcomella)

References

Details

Attachments

(2 files)

STR:
 0. Do not have the vimeo app installed.

 1. Visit some Vimeo video in a Firefox Android, e.g. this one:
     https://vimeo.com/152986821

 2. Tap the "Open App" button that appears at the top of the screen.

EXPECTED RESULTS:
 - I should be taken to the Google Play store (either the web page, inside of Firefox, or to the actual app).

ACTUAL RESULTS:
I end up at an about:neterror page, with this URL:
about:neterror?e=unknownProtocolFound&u=vimeo://app.vimeo.com/videos/152986821?ref=mobileweb&context=clip_native_banner

The page says:
> The address wasn't understood.
> 1. You might need to install other software to open this address.
> [Try again]

Note:
* Chrome gives me EXPECTED RESULTS (launching the Play Store app)
* Firefox release (45.0.1) gave me EXPECTED RESULTS (going to the play store web page, showing vimeo there) once, but now it's giving me ACTUAL RESULTS.
* Firefox Nightly (48) and Beta (46) reliably give me ACTUAL RESULTS (about:neterror page)

So this might be a regression, or there might just be a race condition or some other factor involved.

DEVICE/OS INFO:
I'm using a OnePlus One phone with CyanogenMod 13 (Android Marshmallow). I also tested using a Nexus 7 tablet, but I can't perform the STR there, because the vimeo website doesn't give me an "open app" button there (possibly because the screen size is big enough that it gives me the desktop UI).
Summary: Vimeo "open app" button takes me to an about:neterror page, if you don't have vimeo app installed → Vimeo "open app" button takes you to an about:neterror page, if you don't have vimeo app installed
(In reply to Daniel Holbert [:dholbert] from comment #0)
>  1. Visit some Vimeo video in a Firefox Android, e.g. this one:
>      https://vimeo.com/152986821

(Sorry -- by "in a Firefox Android" I meant to say "in some version of Firefox for Android".)
19:22.26 INFO: Narrowed nightly regression window from [2015-07-25, 2015-07-28] (3 days) to [2015-07-27, 2015-07-28] (1 days) (~0 steps left)
19:22.26 INFO: Got as far as we can go bisecting nightlies...
19:22.26 INFO: Last good revision: d3228c82badd (2015-07-27)
19:22.26 INFO: First bad revision: 33dc8a83cfc0 (2015-07-28)
19:22.26 INFO: Pushlog:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=d3228c82badd&tochange=33dc8a83cfc0


Mike you added this check. Is there a way to safely accept this?
Flags: needinfo?(michael.l.comella)
OS: Unspecified → Android
Hardware: Unspecified → All
Our flow, assuming we have no handlers for this link (e.g. no apps installed) is as follows:

* parse an Intent URI with the platform framework (if this throws, load about:neterror)
* Check if the intent has a fallback uri and if so, load it
* Check if the the intent has an explicit package, if so, send an Intent to open the app in the play store
* Else open about:neterror

We're hitting the final case. Chrome differs that when there's an error (including in this final case), they don't open about:neterror. I found this was bad for users and developers who click a link and see nothing happening so I opted to add about:neterror.

However, Vimeo took advantage of Chrome's implementation (see the attached source code). They attempt to open the Intent URI the standard way and, after some timeout (i.e. on Chrome, nothing will happen if the app is not installed), load the play store url instead.

I believe the reason the reportee sees the behavior jump back and forth is that sometimes we'll be able to load about:neterror before the timeout and sometimes we won't.

Unfortunately, the only non-hacky solution I see is to not load about:neterror if we can't match the uri and instead do nothing. While I think we provide a better user experience (when sites don't work around Chrome taking no action for invalid uris), too many websites seem to have hacked around Chrome's implementation (we get similar bugs filed every once in a while) and it's hurting our users – I say we should meet the status quo.

fwiw, the robust solution for websites is to provide `intent://` uris with fallback URIs, rather than `custom-uri://` schemes.
Flags: needinfo?(michael.l.comella)
Assignee: nobody → michael.l.comella
Comment on attachment 8735008 [details]
MozReview Request: Bug 1258605 - Don't show about:neterror when intents fail to load. r=margaret

https://reviewboard.mozilla.org/r/42509/#review39283

Thanks for the investigation. I agree we should just follow what Chrome is doing here.

This is frustrating, maybe there's a way we can encourage web developers to format intents with a specific package so that we'll open in the Play Store, instead of relying on timeout tricks for them to redirect the user? We could ask Mike Taylor if this is considered a webcompat issue.

::: mobile/android/base/java/org/mozilla/gecko/IntentHelper.java:223
(Diff revision 1)
> +            // end with our users seeing about:neterror instead of the intended experience. While I
> +            // feel showing about:neterror is a better solution for users (when not hacked around),
> +            // we should match the status quo for the good of our users.
> +            //
>              // Don't log the URI to prevent leaking it.
>              Log.w(LOGTAG, "Unable to open URI, default case - loading about:neterror");

We should update this log statement.
Attachment #8735008 - Flags: review?(margaret.leibovic) → review+
https://hg.mozilla.org/mozilla-central/rev/971ee95dade0
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 48
You need to log in before you can comment on or make changes to this bug.