Closed Bug 769865 Opened 12 years ago Closed 8 years ago

gracefully handle the case where we are off-line

Categories

(Core Graveyard :: Identity, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: jedp, Assigned: jedp)

References

Details

Attachments

(1 file)

what should _fetchWellKnown do if we are off-line?
blocking-basecamp: --- → +
Ben, who should own this work?
Assignee: nobody → benadida
Blocks: basecamp-id
The key issue here is making sure that when a packaged app calls navigator.id.*, that a proper "you are offline" dialog is provided.
Status: NEW → ASSIGNED
Is this a feature or a bug? If it's a feature, this needs to be a minus per today's discussion in the b2g meeting.
blocking-basecamp: + → ?
(In reply to Jason Smith [:jsmith] from comment #3)
> Is this a feature or a bug? If it's a feature, this needs to be a minus per
> today's discussion in the b2g meeting.

Ignore my comment here. This was a point of confusion on my part.
Fixing up blocker flag as per comment #4.
blocking-basecamp: ? → +
Whiteboard: [feature-complete]
Related reading: off-line support for marketplace: https://bugzilla.mozilla.org/show_bug.cgi?id=768946

Kumar pointed me to this: http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/Overview.html

So we should be able to display a message if (navigator.connection.bandwidth === 0).  

I'm not sure how to write a test for that, though.
Keywords: feature
Priority: -- → P1
This is marked as a blocker for ship. However, I'm not sure if there's a user story called out that links to this feature. Josh - Is there an existing user story this bug would map to? If not, do we need a user story for this?
Flags: needinfo?(jcarpenter)
Whiteboard: [feature-complete]
So is the user story here basically "throw up an error if we're offline?" Something like:

As a user, I need to be notified when logging into persona that I do not network connection, so that I know I need to connect to the network to login into persona.
If that looks good, I'll add it as PAYANDID-029.
Flags: needinfo?(jcarpenter)
We're marking this bug with the C1 milestone since it follows the criteria of "unfinished feature work" (see https://etherpad.mozilla.org/b2g-convergence-schedule).

If this work is not finished by Nov19, this bug will need an exception and will be called out at the upcoming Exec Review.
Target Milestone: --- → B2G C1 (to 19nov)
(In reply to Jason Smith [:jsmith] from comment #8)
> So is the user story here basically "throw up an error if we're offline?"
> Something like:
> 
> As a user, I need to be notified when logging into persona that I do not
> network connection, so that I know I need to connect to the network to login
> into persona.

That sounds good to me!
FWIW, the bug for a generic Gaia offline-error is here: https://bugzilla.mozilla.org/show_bug.cgi?id=796750. 

Specs here (see page 7): https://www.dropbox.com/sh/e9myv1f3xzvc885/GIdFb1HeIB

Excerpt:

> Gaia’s Window Manager receives an “other” (non-fatal) mozbrowseerror event.
> The window manager decides what UI to present in response.
> If the mozbrowsererror was generated by navigator.onLine, then Gaia’s 
> Window Manager presents a default “No connection” error.

I hope that's helpful / relevant :)
Assignee: benadida → jparsons
(In reply to Josh Carpenter [:jcarpenter] from comment #12)
> FWIW, the bug for a generic Gaia offline-error is here:
> https://bugzilla.mozilla.org/show_bug.cgi?id=796750. 
> 
> Specs here (see page 7):
> https://www.dropbox.com/sh/e9myv1f3xzvc885/GIdFb1HeIB
> 
> Excerpt:
> 
> > Gaia’s Window Manager receives an “other” (non-fatal) mozbrowseerror event.
> > The window manager decides what UI to present in response.
> > If the mozbrowsererror was generated by navigator.onLine, then Gaia’s 
> > Window Manager presents a default “No connection” error.
> 
> I hope that's helpful / relevant :)

Josh, that document is awesome - thanks very much

So if the WindowManager catches the nonbrowsererror and displays either the off-line or airplane-mode error itself, is it actually necessary for Identity (or Marketplace for that matter) to do anything more?

In other words, is this simply taken care of by gaia?
Spoke with Ben on this one - this doesn't block ship of v1 of the phone. I'm removing the flags as such.

If this does land before the phone ships, feel free to nominate for aurora approval with a risk tradeoff analysis on taking the patch.
No longer blocks: basecamp-id
Keywords: feature
Priority: P1 → --
Target Milestone: B2G C1 (to 19nov) → ---
(In reply to Jed Parsons [:jparsons] from comment #13)
> (In reply to Josh Carpenter [:jcarpenter] from comment #12)
> > FWIW, the bug for a generic Gaia offline-error is here:
> > https://bugzilla.mozilla.org/show_bug.cgi?id=796750. 
> > 
> > Specs here (see page 7):
> > https://www.dropbox.com/sh/e9myv1f3xzvc885/GIdFb1HeIB
> > 
> > Excerpt:
> > 
> > > Gaia’s Window Manager receives an “other” (non-fatal) mozbrowseerror event.
> > > The window manager decides what UI to present in response.
> > > If the mozbrowsererror was generated by navigator.onLine, then Gaia’s 
> > > Window Manager presents a default “No connection” error.
> > 
> > I hope that's helpful / relevant :)
> 
> Josh, that document w awesome - thanks very much
> 
> So if the WindowManager catches the nonbrowsererror and displays either the
> off-line or airplane-mode error itself, is it actually necessary for
> Identity (or Marketplace for that matter) to do anything more?
> 
> In other words, is this simply taken care of by gaia?

Hmm, good question. Based on what Alive (cc'd) has shown me in our window.open (PopupManager) implementation, Gaia would generate the "No Connection" or "Airplane Mode" errors, albeit housed within the window.open UI. I suspect the same is true of the Trusted UI contents as well.

WRT to Marketplace, so long as some portion of the app is cached it should be able to launch even in the absence of a connection and these errors would not be seen. From that point on the app would be responsible for communicating connection failures to the user.

cc'd both Alive and Alberto for input here.

I'm not sure how we handle this in the context of Trusted UI contents. Am cc'ing
(In reply to Josh Carpenter [:jcarpenter] from comment #15)
> (In reply to Jed Parsons [:jparsons] from comment #13)
> > Josh, that document w awesome - thanks very much
> > 
> > So if the WindowManager catches the nonbrowsererror and displays either the
> > off-line or airplane-mode error itself, is it actually necessary for
> > Identity (or Marketplace for that matter) to do anything more?
> > 
> > In other words, is this simply taken care of by gaia?
> 
> Hmm, good question. Based on what Alive (cc'd) has shown me in our
> window.open (PopupManager) implementation, Gaia would generate the "No
> Connection" or "Airplane Mode" errors, albeit housed within the window.open
> UI. I suspect the same is true of the Trusted UI contents as well.
> 
> WRT to Marketplace, so long as some portion of the app is cached it should
> be able to launch even in the absence of a connection and these errors would
> not be seen. From that point on the app would be responsible for
> communicating connection failures to the user.
> 
> cc'd both Alive and Alberto for input here.
> 
> I'm not sure how we handle this in the context of Trusted UI contents. Am
> cc'ing

Because UI of normal app and window.open is different, the error event handling is seperated in modal dialog and popup manager. I totally forget we have trustedUI, so it's not implemented now.
But the implementation is not hard.
blocking-basecamp: + → ---
Ok, time to get this fixed.  I'm working on it now.  Making it dependent on bug 839500 simply so that patches land in the right order.
Depends on: 839500
Here's a little patch to kick off some conversation again.

Focusing on persona on the gaia side, this patch helps in the following scenarios:

- Fixes: A native application that calls navigator.mozId directly is started when there is no network.  watch() callbacks will be successfully invoked, but it will be impossible to get automatic assertions.  When network is re-enabled, the application can request an assertion.  (Use UI Tests -> navigator.mozId suite as an example).

- Fixes: A web-based application (e.g., notoriousb2g.123done.org) loads, but network drops while watch() is being called.  Once network is restored, the web page can be reloaded and persona login will work properly.

- Does not fix: If the trusted ui is open, hosting the persona iframe, and network drops, clicking "sign in" will raise the vague "There has been an error" error in the dialog.  This can't be fixed in gaia; should be fixed in the persona dialog itself.
Comment on attachment 724134 [details] [diff] [review]
gaia patch - gracefully abort persona functions if offline

Ben, I think this addresses a lot of our issues.  At the very least, we should be handling mozbrowsererror.  Thoughts?
Attachment #724134 - Flags: feedback?(benadida)
Comment on attachment 724134 [details] [diff] [review]
gaia patch - gracefully abort persona functions if offline

Review of attachment 724134 [details] [diff] [review]:
-----------------------------------------------------------------

I think this looks good. Is offline the only possible cause of mozbrowsererror? Should you be dispatching that chrome event as the first thing?
Attachment #724134 - Flags: feedback?(benadida) → feedback+
(In reply to Ben Adida [:benadida] from comment #20)
> Comment on attachment 724134 [details] [diff] [review]
> gaia patch - gracefully abort persona functions if offline
> 
> Review of attachment 724134 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> I think this looks good. Is offline the only possible cause of
> mozbrowsererror? Should you be dispatching that chrome event as the first
> thing?

It's not the only possible cause, no.  mozbrowsererror is fired if there's an error trying to load the content into the iframe, and that includes the off-line case.  We should be listening for this event regardless.

As for dispatching the chrome event first thing, I think it's ok, since no other modules should be interacting with the iframe directly, but to be on the safer side, I can send the message after removing the frame.
Status: ASSIGNED → NEW
Hey Jed, would you mind summarizing what we're doing with this bug?
Flags: needinfo?(jparsons)
I've been wondering the same thing :)

I'm buried under a few blocker bugs atm.  I can try to resuscitate this soon and see if there's anything we should be doing that isn't already being handled either by the browser or by the persona/trusted_ui error checking.
Flags: needinfo?(jparsons)
I'm WONTFIXing persona-related bugs now that we've committed to decommissioning in the persona.or service.

(We may still need to do this for the new FxA-powered identity stuff, but if so let's bring it back as a nice new clean bug)
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: