Closed Bug 308560 Opened 19 years ago Closed 14 years ago

Screen reader should either not load page that is refreshing immediately, or at least indicate a refresh is occuring

Categories

(Core :: Disability Access APIs, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: aaronlev, Assigned: pilgrim)

References

()

Details

(Keywords: access)

Attachments

(1 file)

Steps: Go to www.bt.com with screen reader running What happens: Screen reader loads blank page before loading main page, giving the appearance of an error.
The example at http://www.bt.com starts out with no <body> It also doesn't fire nsIWebProgressListener with STATE_STOP for the immediately refreshing blank page.
that you get no STATE_STOP in this case seems like a bug to me... maybe nsIRefreshURI should have a way to query the pending refreshes...
Attached patch Patch for discussion (deleted) — Splinter Review
Let's get Darin's input on whether that's a bug or not. If there is an immediate refresh set for the page, it's likely to be just a blank page or content that is not important to read. It is confusing to a screen reader user because they think the page has finished loading and they don't have the right content. I'm not sure what the right fix is. Perhaps the screen reader just needs to notify the user of refreshes somehow, but we don't currently tell them when a load event is for an automatic refresh.
Attachment #196155 - Flags: superreview?(darin)
Comment on attachment 196155 [details] [diff] [review] Patch for discussion Biesi, I actually like this patch. Here's why: I let the web progress listener handle it in this special case. If web progress listener gets fixed to fire these events, I'm still better off than now because I will get equal numbers of page load start and stop events. I either want a start and stop for the intermediate page or no events for it. As things stand now, I am not firing nested page load start/stop events for this case. I fire start, stop, stop. So, the screen reader does not have a chance to tell the screen reader that a new page is coming.
Attachment #196155 - Flags: review?(cbiesinger)
Summary: Screen reader should not load page that is refreshing immediately → Screen reader should either not load page that is refreshing immediately, or at least indicate a refresh is occuring
Comment on attachment 196155 [details] [diff] [review] Patch for discussion >Index: accessible/src/base/nsRootAccessible.cpp >@@ -386,10 +392,28 @@ void nsRootAccessible::TryFireEarlyLoadE First of all, I'm not the best person to review this code because I really don't know what this code is trying to do. I'd really like to see some comments above the newly added section of code explaining why it exists. Perhaps it'd be enough to move the comment near the return statement up above the assignment into docShell. >+ nsCOMPtr<nsIDocShell> docShell = do_QueryInterface(treeItem); >+ NS_ASSERTION(docShell, "No docshell for docshelltreeitem"); >+ if (docShell) { You are asserting that docShell will never be null, so then why not early return if it is? Does it really make sense to proceed if you don't have a docShell? >+ PRUint32 loadType; >+ docShell->GetLoadType(&loadType); >+ // XXX Should have the constants we need for the use of nsIDocShell: GetLoadType() >+ // on nsIDocShell, not hidden away inside nsDocShell Please file a bug and mention the bug number in these comments. >+ const PRUint32 kIgnoreLoadFlags = >+ (nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY | >+ nsIWebNavigation::LOAD_FLAGS_IS_REFRESH) << 16; >+ if (loadType & kIgnoreLoadFlags) { >+ // Use web progress listener for immediate refreshes, don't use early load >+ // because we don't want the screen reader to read content that >+ // is really more of a redirect than anything. It might be good to point out in your comments ways in which this can occur. For example, you might mention that this could happen when a META refresh is processed. Doesn't this also happen when the user presses the reload button?
Attachment #196155 - Flags: superreview?(darin) → superreview-
Comment on attachment 196155 [details] [diff] [review] Patch for discussion Hm... would it be sufficient to check "Is a document currently loading"? It seems to me that any time a document is already loading by the time DOMContentLoaded fires, you don't want to have it read by the screen reader. hm... also, won't this be wrong if DOMContentLoaded is fired before the refresh actually happens? For example, if an image on the page takes a while to load?
How would i check to see if the doc is 'still loading' -- it is still marked as such after DOMContentLoaded because images are still coming in.
Comment on attachment 196155 [details] [diff] [review] Patch for discussion ok, since I believe that this WPL behaviour is a bug anyway, I'll minus this - I'd rather not have this code rely on a bug. Would it be sufficient to expose the pending timeouts on the docshell (via nsIRefreshURI)?
Attachment #196155 - Flags: review?(cbiesinger) → review-
Status: NEW → ASSIGNED
Assignee: aaronleventhal → pilgrim
Status: ASSIGNED → NEW
Blocks: keya11y
No longer blocks: keya11y
Depends on: 566103
worksforme per bug 566103 comment #25.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: