When in doubt, lets do what we know how to do. We know how to write native UIs. We have used that a 1000 times before. We have one example of using a Web-hosted UI, but its not really similar at all. Engineering is finding simple solutions for complex problems, not fancy solutions for simple problems. Lets not be fancy today.

Andreas

Chris Karlof wrote:

On Aug 11, 2013, at 4:35 PM, Richard Newman <[email protected] <mailto:[email protected]>> wrote:

You asked the desktop team, but I assume we'd use this for Android too. I am a little concerned about the flow since Android actually has a "Sync & Accounts" area in the OS Settings. The creation and login would likely happen without any involvement with Firefox. I think we need to investigate what it would take to get Firefox involved in the flow, if possible. If it's tricky, we'd need to fallback to use a native UI, like we do now.

Embedding a GeckoView (or a WebView, which Harald Kirschner spent some time trying to figure out last time 'round) during account creation should be feasible. We have some control over that activity. Some of the other account processes might be more challenging.

Doing so for everything else that lives in settings — checkboxes, status, etc. — very much goes against the OS grain. And if we'd be touching settings and events from elsewhere — turning on a feature from Fennec prefs UI, from a notification, etc. — then we'd need to make sure that all of that stuff had a pure-Java interface, had canonical state in SharedPreferences, etc. etc.

I think that the general thrust of this conversation has been "credentials into a webview, token out, never touch the webview for anything else", so these complexities likely won't come up, but I figured I'd draw a line there.

I'm not sure what the right decision is for Android, but I would leave open the possibility of using native Android UI/components for auth. My general POV is that you should not fight too hard against how the platform wants you to do things. Firefox Desktop and FxOS love the web. WebViews on Android are not first class citizens compared to native Android components [1]. Lessons learned from other projects that have built Android and iOS apps using WebViews suggest that it's important to pepper in native components when the UI needs to be highly responsive (in the "fast" sense of responsive). "Log in to device" is one case where I think we need to be highly responsive.

That said, there may be room for the web implementation on Fx Android. "Password reset" may be infrequent enough compared to "sign in" or "sign up" that it's acceptable to do it in a WebView. I also think we should consider baking in an error path that triggers the web login flow, but we don't necessarily use it in v1. In the future, we may offer something like two-factor authentication and it would be nice if we had a flow for 2FA users to log in on legacy Android installs [2].

And yeah, to echo previous opinions: web content implementation would only be for auth. The sync storage will be baked in, so the settings and preferences for sync should be baked in on all platforms.

-chris

[1] I'm not familiar with GeckoViews, but maybe they're a better alternative to this problem for us. [2] Or possibly the primary way 2FA users log in. FWIW, this is how Chrome for Android does it: native UI for mainline, falls back to web when 2FA is enabled.

_______________________________________________
Sync-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/sync-dev
_______________________________________________
Sync-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/sync-dev

Reply via email to