Closed Bug 513405 Opened 10 years ago Closed 8 years ago

Add text to videocontrols to describe the cause of errors.

Categories

(Toolkit :: Video/Audio Controls, defect)

defect
Not set

Tracking

()

VERIFIED FIXED
mozilla11

People

(Reporter: Dolske, Assigned: jaws)

References

Details

(Keywords: verified-beta)

Attachments

(5 files, 9 obsolete files)

269.56 KB, image/png
Details
355.95 KB, image/png
Details
91.46 KB, image/png
Details
15.02 KB, patch
Dolske
: review+
jaws
: feedback+
Details | Diff | Splinter Review
15.84 KB, patch
jaws
: review+
Details | Diff | Splinter Review
Bug 481040 implemented the "X" overlay on a video when an error occurs, but deferred adding text. IIRC, we were too close to ship to make L10N changes, and there were also some concerns about the level of detail provided by the .error (MediaError) interface, which is rather primitive.
Duplicate of this bug: 512601
Duplicate of this bug: 518168
Component: Video/Audio → Video/Audio Controls
Product: Core → Toolkit
QA Contact: video.audio → video.audio
Target Milestone: mozilla1.9.2 → mozilla1.9.2a1
Version: Trunk → unspecified
Target Milestone: mozilla1.9.2a1 → ---
Attached patch Patch for bug 513405 (obsolete) — Splinter Review
Attachment #567964 - Flags: review?(dolske)
I meant to add description to patch, but keyboard typing failed...

The attached patch adds text below the error X. I'll attach a screenshot.

I also noticed a typo in the font-family for the statistics overlay and fixed it in this patch.
Assignee: dolske → jwein
Status: NEW → ASSIGNED
Attached image Screenshot of patch
This is a screenshot of the patch.

There is no special code for handling small dimension media and the display of the error text. The error text currently overflows the container. I'm not concerned about the overflow case, since there is no interaction with the overflowed content.
Attached patch Patch for bug 513405 (obsolete) — Splinter Review
Noticed a typo with accessing video error codes.
Attachment #567964 - Attachment is obsolete: true
Attachment #567970 - Flags: review?(dolske)
Attachment #567964 - Flags: review?(dolske)
Attached patch Patch for bug 513405 v2 (obsolete) — Splinter Review
Added aria-label text for accessibility and confirmed that it is working with NVDA. Apologies for the review-request spam.
Attachment #567970 - Attachment is obsolete: true
Attachment #568061 - Flags: review?(dolske)
Attachment #567970 - Flags: review?(dolske)
(In reply to Jared Wein [:jwein] from comment #5)
> Created attachment 567967 [details]
> Screenshot of patch

Check with shorlander to see if this should be tweaked (perhaps as part of bug 681548). The "X" is pretty subdued, whereas the text really jumps out. Not exactly sure what to do here... ISTR the reason for the subdued X was to not jump out too much compared to the rest of the page. But with text that use user may want to read, that can't be made too subdued or it's unreadable. Maybe something halfway between the "X" and the white text would work?
Comment on attachment 568061 [details] [diff] [review]
Patch for bug 513405 v2

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

Patch looks fine to me, except let's iterate on the strings before landing.

::: toolkit/content/widgets/videocontrols.xml
@@ +596,5 @@
>                      this.log("--- videocontrols terminated ---");
>                  },
>  
> +                updateErrorText : function () {
> +                    let error = this.video.error.code;

This var gets reusued in a kinda confusing way. Just |let error;|?

@@ +602,5 @@
> +                    let v = this.video;
> +                    switch (v.error.code) {
> +                        case v.error.MEDIA_ERR_ABORTED:
> +                            error = "MEDIA_ERR_ABORTED";
> +                            errorLabel = "errorMediaErrAbortedLabel"

Not to bikeshed, but these labels are pretty wordy and redundant. Just "aborted" or "errorAborted" would probably be sufficient, and much easier to read!

@@ +620,5 @@
> +                    }
> +                    if (v.networkState == v.NETWORK_NO_SOURCE) {
> +                        errorLabel = "errorNetworkNoSourceLabel";
> +                        error = "NETWORK_NO_SOURCE";
> +                    }

Hmm. When the other errors occur, will network state always remain something other than NO_SOURCE?

::: toolkit/locales/en-US/chrome/global/videocontrols.dtd
@@ +21,5 @@
> +<!ENTITY error.mediaErrAborted "The loading of this media was aborted at the user's request.">
> +<!ENTITY error.mediaErrNetwork "A network error has occured which stops the loading of this media.">
> +<!ENTITY error.mediaErrDecode "A decoding error has occured.">
> +<!ENTITY error.mediaErrSrcNotSupported "The media resource provided is not suitable.">
> +<!ENTITY error.networkNoSource "Unable to find a suitable media resource.">

So, these strings are going to be tricky.

They're shown to all users, so we want to avoid being too jargony. But they're also being provided to help webdevs understand what's happening (perhaps by way of a user reporting what their browser is showing).

Can you chat with UX to come up with refined strings? Boriss would probably be a good starting point.

::: toolkit/themes/pinstripe/global/media/videocontrols.css
@@ +185,5 @@
>  html|td {
>    padding: 2px;
>  }
>  html|table {
> +  font-family: Helvetica, Arial, sans-serif;

*facepalm*
Attachment #568061 - Flags: review?(dolske) → review-
This is a group of screenshots to show off some different color values that we can use for the error text.
This is some possible error text for the video controls. I will look in to the ability to reload videos.

<!ENTITY error.aborted "Video loading has been stopped.  Try again?">
        (try again link reloads video only, not page - if that's possible)
<!ENTITY error.network "Video can't be played because a network error occurred.  Try again?">
        (try again link reloads video)
<!ENTITY error.decode "Video can't be played because the file is corrupt.">
<!ENTITY error.srcNotSupported "Video can't be played because Firefox can't read the file.">
<!ENTITY error.noSource "Video not found.">
Sorry, spoke too soon. These are the current WIP strings:

<!ENTITY error.aborted "Video loading stopped.  Try again?">
        (try again link reloads video only, not page - if that's possible)
<!ENTITY error.network "Video can't be played because a network error occurred.  Try again?">
        (try again link reloads video)
<!ENTITY error.decode "Video can't be played because the file is corrupt.">
<!ENTITY error.srcNotSupported "Video can't be played because Firefox can't read the file.">
<!ENTITY error.noSource "Video not found.">
Attached patch Patch for bug 513405 v3 (obsolete) — Splinter Review
Attachment #568061 - Attachment is obsolete: true
Attachment #570116 - Flags: review?(dolske)
(In reply to Justin Dolske [:Dolske] from comment #10)
> Comment on attachment 568061 [details] [diff] [review] [diff] [details] [review]
> Patch for bug 513405 v2
> 
> Review of attachment 568061 [details] [diff] [review] [diff] [details] [review]:
> -----------------------------------------------------------------
> 
> Patch looks fine to me, except let's iterate on the strings before landing.
> 
> ::: toolkit/content/widgets/videocontrols.xml
> @@ +596,5 @@
> >                      this.log("--- videocontrols terminated ---");
> >                  },
> >  
> > +                updateErrorText : function () {
> > +                    let error = this.video.error.code;
> 
> This var gets reusued in a kinda confusing way. Just |let error;|?

Fixed.

> @@ +602,5 @@
> > +                    let v = this.video;
> > +                    switch (v.error.code) {
> > +                        case v.error.MEDIA_ERR_ABORTED:
> > +                            error = "MEDIA_ERR_ABORTED";
> > +                            errorLabel = "errorMediaErrAbortedLabel"
> 
> Not to bikeshed, but these labels are pretty wordy and redundant. Just
> "aborted" or "errorAborted" would probably be sufficient, and much easier to
> read!

Good point. I need to work on my brevity :P

> @@ +620,5 @@
> > +                    }
> > +                    if (v.networkState == v.NETWORK_NO_SOURCE) {
> > +                        errorLabel = "errorNetworkNoSourceLabel";
> > +                        error = "NETWORK_NO_SOURCE";
> > +                    }
> 
> Hmm. When the other errors occur, will network state always remain something
> other than NO_SOURCE?

After talking with cpearce, it seems that these error states are not mutually exclusive. I have changed the patch to give preference to video.error.

> ::: toolkit/locales/en-US/chrome/global/videocontrols.dtd
> @@ +21,5 @@
> > +<!ENTITY error.mediaErrAborted "The loading of this media was aborted at the user's request.">
> > +<!ENTITY error.mediaErrNetwork "A network error has occured which stops the loading of this media.">
> > +<!ENTITY error.mediaErrDecode "A decoding error has occured.">
> > +<!ENTITY error.mediaErrSrcNotSupported "The media resource provided is not suitable.">
> > +<!ENTITY error.networkNoSource "Unable to find a suitable media resource.">
> 
> So, these strings are going to be tricky.
> 
> They're shown to all users, so we want to avoid being too jargony. But
> they're also being provided to help webdevs understand what's happening
> (perhaps by way of a user reporting what their browser is showing).
> 
> Can you chat with UX to come up with refined strings? Boriss would probably
> be a good starting point.
> 

The strings in the new patch were contributed by Boriss. Implementing "Try again?" is a little more tricky since our error text is at the bottom of the <stack>. I've left it out for now since it could be done in a follow-up bug.
Attached patch Patch for bug 513405 v3.1 (obsolete) — Splinter Review
This is the same patch as v3 except I added an extra null check before getting the errorText.
Attachment #570116 - Attachment is obsolete: true
Attachment #571781 - Flags: review?(dolske)
Attachment #570116 - Flags: review?(dolske)
Attached patch Patch for bug 513405 v3.2 (obsolete) — Splinter Review
I was incorrectly using this instead of self in the controlsSpacer click event listener, and have moved the aria-label text up to the controlsSpacer since it wasn't getting verbalized by NVDA because it is lower in the <stack>.
Attachment #571781 - Attachment is obsolete: true
Attachment #571789 - Flags: review?(dolske)
Attachment #571781 - Flags: review?(dolske)
Attachment #571789 - Flags: feedback?(fryn)
Comment on attachment 571789 [details] [diff] [review]
Patch for bug 513405 v3.2

>+[error="MEDIA_ERR_ABORTED"]           > .errorAborted,
>+[error="MEDIA_ERR_NETWORK"]           > .errorNetwork,
>+[error="MEDIA_ERR_DECODE"]            > .errorDecode,
>+[error="MEDIA_ERR_SRC_NOT_SUPPORTED"] > .errorSrcNotSupported,
>+[error="NETWORK_NO_SOURCE"]           > .errorNoSource {
>+  display: inline;
>+}

>+                    let error;
>+                    let errorLabel = "";

>+                    if (v.networkState == v.NETWORK_NO_SOURCE) {
>+                        errorLabel = "errorNoSource";
>+                        error = "NETWORK_NO_SOURCE";
>+                    }
>+                    switch (v.error.code) {
>+                        case v.error.MEDIA_ERR_ABORTED:
>+                            error = "MEDIA_ERR_ABORTED";
>+                            errorLabel = "errorAborted";
>+                            break;

There seems to be a one-to-one mapping of these two variables, which are both strings.
Could we combine them?

NIT: If you're going to use two variables, please set them in the same order every time for ease of reading.

>+                            let label = document.getAnonymousElementByAttribute(this.videocontrols, "class", errorLabel);

>+                    let element = document.getAnonymousElementByAttribute(this.videocontrols, "class", errorLabel);

Since you're retrieving this element at the end of the function anyway, let's just call it once.

>+                            let text = label.textContent;
>+                            text = text.replace(/#1/, appName);
>+                            label.textContent = text;

Cleaner: label.textContent = label.textContent.replace(/#1/, appName);

>                     for each (var event in this.videoEvents)

NIT: let is the new var.

>+                    this.controlsSpacer.addEventListener("click", function(e) { if (e.button == 0 && !self.video.error) { self.togglePause(); } }, false);

Nice! :)

You've made noble attempts, but the text still looks ugly, IMHO. It'd be nice to have it be prettier, but I guess it's just error text. :P

feedback+ with these addressed.
Attachment #571789 - Flags: feedback?(fryn) → feedback+
Attached patch Patch for bug 513405 v3.3 (obsolete) — Splinter Review
Thanks for the feedback Frank! I've updated the patch to address your feedback comments.
Attachment #571789 - Attachment is obsolete: true
Attachment #572556 - Flags: review?(dolske)
Attachment #572556 - Flags: feedback+
Attachment #571789 - Flags: review?(dolske)
Comment on attachment 572556 [details] [diff] [review]
Patch for bug 513405 v3.3

>+<!ENTITY error.srcNotSupported "Video can't be played because #1 can't read the file.">

I recommend adding a localization note (like the one for scrubberScale.nameFormat) to explain what #1 is.
Attached patch Patch for bug 513405 v3.31 (obsolete) — Splinter Review
Updated videocontrols.dtd to have a localization note about the brandShortName.
Attachment #572556 - Attachment is obsolete: true
Attachment #572738 - Flags: review?(dolske)
Attachment #572738 - Flags: feedback+
Attachment #572556 - Flags: review?(dolske)
Attached patch Patch for bug 513405 v3.4 (obsolete) — Splinter Review
Simplified the patch by using &brandShortName; directly in the localization string.
Attachment #572738 - Attachment is obsolete: true
Attachment #574183 - Flags: review?(dolske)
Attachment #574183 - Flags: feedback+
Attachment #572738 - Flags: review?(dolske)
Comment on attachment 574183 [details] [diff] [review]
Patch for bug 513405 v3.4

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

Where are we with this patch? I'm really keen to see this feature implemented!

I applied and built your patch jwein, it's mildly bitrotten.

I got an error:
JavaScript error: chrome://global/content/bindings/videocontrols.xml, line 633: v.error is null

When loading this data URL:
data:text/html,<video controls><source src="404" type="invalid"></video>

This crashes the JSContext running the controls, and the controls don't display any more. I think we should be showing the string error.srcNotSupported in this case.

::: toolkit/locales/en-US/chrome/global/videocontrols.dtd
@@ +18,5 @@
>  <!ENTITY stats.framesPresented "Frames presented">
>  <!ENTITY stats.framesPainted "Frames painted">
>  
> +<!ENTITY error.aborted "Video loading stopped.">
> +<!ENTITY error.network "Video can't be played because a network error occurred.">

This can happen either before or after a video has started playing, but after we've tried to start playing a resource. But the string you're using here implies we're before playback starts, so maybe that would be better as:

"Video playback aborted due to network error."

@@ +19,5 @@
>  <!ENTITY stats.framesPainted "Frames painted">
>  
> +<!ENTITY error.aborted "Video loading stopped.">
> +<!ENTITY error.network "Video can't be played because a network error occurred.">
> +<!ENTITY error.decode "Video can't be played because the file is corrupt.">

Again, this can happen either before or after we've started playback, but this string implies we're before the start of playback. So maybe that would be better as:

"Video playback aborted due to decode error." (or)
"Video playback aborted because the file is corrupt or invalid."

@@ +20,5 @@
>  
> +<!ENTITY error.aborted "Video loading stopped.">
> +<!ENTITY error.network "Video can't be played because a network error occurred.">
> +<!ENTITY error.decode "Video can't be played because the file is corrupt.">
> +<!ENTITY error.srcNotSupported "Video can't be played because &brandShortName; can't read the file.">

So we're displaying this string when we've attempted to load all media and failed, so I think this string would be better as:

"Video can't load because no resource of supported format found."

@@ +21,5 @@
> +<!ENTITY error.aborted "Video loading stopped.">
> +<!ENTITY error.network "Video can't be played because a network error occurred.">
> +<!ENTITY error.decode "Video can't be played because the file is corrupt.">
> +<!ENTITY error.srcNotSupported "Video can't be played because &brandShortName; can't read the file.">
> +<!ENTITY error.noSource "Video not found.">

How about:

"Video can't load because no resource found."
> > +<!ENTITY error.decode "Video can't be played because the file is corrupt.">
> 
> Again, this can happen either before or after we've started playback, but
> this string implies we're before the start of playback.

Acutally I'm wrong, we only dispatch decode error when we detect error after reading the metadata (before playback has begun), so you don't need to worry about this.
(In reply to Chris Pearce (:cpearce) (Mozilla Corporation) from comment #23)
> Comment on attachment 574183 [details] [diff] [review] [diff] [details] [review]
> 
> Where are we with this patch? I'm really keen to see this feature
> implemented!
> 
> I applied and built your patch jwein, it's mildly bitrotten.
> 

Thanks for taking a look at the patch. The status is that it has just been waiting for review since basically 11/7 :(

I didn't know that the patch had gotten bitrotten though. I'll unbitrot it tomorrow and upload a new version for review.
(In reply to Chris Pearce (:cpearce) (Mozilla Corporation) from comment #23)
> Comment on attachment 574183 [details] [diff] [review] [diff] [details] [review]
> Patch for bug 513405 v3.4
> 
> Review of attachment 574183 [details] [diff] [review] [diff] [details] [review]:
> -----------------------------------------------------------------
> 
> I got an error:
> JavaScript error: chrome://global/content/bindings/videocontrols.xml, line
> 633: v.error is null
> 
> When loading this data URL:
> data:text/html,<video controls><source src="404" type="invalid"></video>
> 
> This crashes the JSContext running the controls, and the controls don't
> display any more. I think we should be showing the string
> error.srcNotSupported in this case.
> 

Thank you for the STR. I see the bug in the code and will make that adjustment when I unbitrot the patch tomorrow.
No worries, thanks for working on this!

> Comment on attachment 574183 [details] [diff] [review] [diff] [details] [review]
> > +<!ENTITY error.srcNotSupported "Video can't be played because &brandShortName; can't read the file.">
> 
> So we're displaying this string when we've attempted to load all media and
> failed, so I think this string would be better as:
> 
> "Video can't load because no resource of supported format found."

We'll also display this string  when the mime-type is invalid but the media type is still supported. This is the most common mistake I see in the wild with HTML5 video and Firefox, so I think we should mention it in this string to help combat it.

So how about:

"Video can't load because no resource supported media format and Content-Type HTTP header found."

Will the text line-wrap inside the <video>'s status overlay? Maybe we should add margin/padding to the CSS styles to ensure it's not hard up against the edge of the status overlay box?
English fail. I mean:

"Video can't load because no resource with a supported media format and Content-Type
HTTP header found."
(In reply to Chris Pearce (:cpearce) (Mozilla Corporation) from comment #28)
> English fail. I mean:
> 
> "Video can't load because no resource with a supported media format and
> Content-Type
> HTTP header found."

What do you think about this?
"Video can't load because a resource with a supported media format and matching MIME type wasn't found."
(In reply to Chris Pearce (:cpearce) (Mozilla Corporation) from comment #23)
> When loading this data URL:
> data:text/html,<video controls><source src="404" type="invalid"></video>
> 
> This crashes the JSContext running the controls, and the controls don't
> display any more. I think we should be showing the string
> error.srcNotSupported in this case.

error.srcNotSupported seems like the correct case to me, but when loading that data URI the <video> element has |video.error == null| and |video.networkState == NETWORK_NO_SOURCE| which means that no source was found. Is this a bug in the spec?

I have this data URI to generate the error.srcNotSupported case:
data:text/html,<video controls src="http://people.mozilla.org/~jwein/" />

> Will the text line-wrap inside the <video>'s status overlay? Maybe we should
> add margin/padding to the CSS styles to ensure it's not hard up against the
> edge of the status overlay box?

Yeah that's a good touch. I've added some horizontal padding to the text.
You can use this data URI to test the srcNotSupported case:
data:text/html,<video controls src="http://people.mozilla.org/~jwein/" />
Attachment #574183 - Attachment is obsolete: true
Attachment #578293 - Flags: review?(dolske)
Attachment #578293 - Flags: feedback+
Attachment #574183 - Flags: review?(dolske)
(In reply to Jared Wein [:jwein and :jaws] from comment #29)
> What do you think about this?
> "Video can't load because a resource with a supported media format and
> matching MIME type wasn't found."

That's good. :)

(In reply to Jared Wein [:jwein and :jaws] from comment #30)
> (In reply to Chris Pearce (:cpearce) (Mozilla Corporation) from comment #23)
> > When loading this data URL:
> > data:text/html,<video controls><source src="404" type="invalid"></video>
> > 
> > This crashes the JSContext running the controls, and the controls don't
> > display any more. I think we should be showing the string
> > error.srcNotSupported in this case.
> 
> error.srcNotSupported seems like the correct case to me, but when loading
> that data URI the <video> element has |video.error == null| and
> |video.networkState == NETWORK_NO_SOURCE| which means that no source was
> found. Is this a bug in the spec?

I don't think this is a bug in the spec, the video element isn't in an error state, it's just paused while running the load algorithm. If you add another resource it will try to load it. Whereas if you're actually in an error state, it won't try to load a newly added resource unless you call load() explicitly.
Comment on attachment 578293 [details] [diff] [review]
Patch for bug 513405 v3.5

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

r+ with nits fixed.

::: toolkit/content/widgets/videocontrols.css
@@ +101,5 @@
> +.errorDecode,
> +.errorSrcNotSupported,
> +.errorNoSource {
> +  display: none;
> +}

This may be a bit cleaner by adding an extra shared class, and a single shared rule for display:none... See toolkit/mozapps/plugins/content/pluginProblemContent.css and .msg there.

::: toolkit/content/widgets/videocontrols.xml
@@ +1,5 @@
>  <?xml version="1.0"?>
>  
>  <!DOCTYPE bindings [
> +  <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
> +  %brandDTD;

I think you don't use this anywhere, flotsam from an earlier patch?

@@ +459,5 @@
>                          enabled = false;
>  
>                      // If the video hits an error, suppress controls if it
>                      // hasn't managed to do anything else yet.
> +                    if (!this.firstFrameShown && (this.hasError()))

Drop excess parens.

@@ +621,5 @@
>                      this.log("--- videocontrols terminated ---");
>                  },
>  
> +                hasError : function () {
> +                    return this.video.error || this.video.networkState == this.video.NETWORK_NO_SOURCE;

You could put those extra parens here. ;)

@@ +643,5 @@
> +                              error = "errorDecode";
> +                              break;
> +                          case v.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
> +                              error = "errorSrcNotSupported";
> +                              break;

Should probably have a |default:| here with a generic error message, especially since if we add a new error code and forget to update things here nothing will be displayed.

@@ +653,5 @@
> +                    }
> +
> +                    let label = document.getAnonymousElementByAttribute(this.videocontrols, "class", error);
> +                    this.controlsSpacer.setAttribute("aria-label", label.textContent);
> +                    this.statusOverlay.setAttribute("error", error);

Hmm, nothing ever clears this. Would it make sense to toss a removeAttribute() in over for |loadstart|?

@@ +1234,5 @@
>  
>                      var self = this;
>                      this.muteButton.addEventListener("command", function() { self.toggleMute(); }, false);
>                      this.playButton.addEventListener("command", function() { self.togglePause(); }, false);
> +                    this.controlsSpacer.addEventListener("click", function(e) { if (e.button == 0 && !self.hasError()) { self.togglePause(); } }, false);

Hmm, good catch.
Attachment #578293 - Flags: review?(dolske) → review+
Comment on attachment 578293 [details] [diff] [review]
Patch for bug 513405 v3.5

>+<!ENTITY error.aborted "Video loading stopped.">
>+<!ENTITY error.network "Video playback aborted due to a network error.">
>+<!ENTITY error.decode "Video can't be played because the file is corrupt.">
>+<!ENTITY error.srcNotSupported "Video can't load because a resource with a supported media format and matching MIME type wasn't found.">
>+<!ENTITY error.noSource "Video not found.">

.srcNotSupported is rather wordy. UX wordsmithing?

Perhaps: "No video found with a supported video format or mimetype."

Hmm, better: "Video format or mimetype is not supported."
Duplicate of this bug: 707755
https://hg.mozilla.org/mozilla-central/rev/35066406c3d7
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Whiteboard: [fixed-in-fx-team]
Target Milestone: --- → mozilla11
Just out of curiosity, why is such a simple fix slated for three releases beyond the current one? Why not target Mozilla 9? The change is so minor.
(In reply to donrhummy from comment #39)
> Just out of curiosity, why is such a simple fix slated for three releases
> beyond the current one? Why not target Mozilla 9? The change is so minor.

12-18 weeks isn't that long to wait. It is better to give even small code changes time to bake and make sure that the wording is clear (as noted by bug 708150) and there are no unexpected side effects.
Mozilla/5.0 (Windows NT 6.1; rv:11.0a2) Gecko/20120124 Firefox/11.0a2

Loading the following in the addess bar:
data:text/html,<video controls src="http://people.mozilla.org/~jwein/" />
displays this error message: "Video format or MIME type is not supported"
Is this the valid string for error.srcNotSupported?

How can I reproduce the other error messages?
Thank you!
(In reply to Mihaela Velimiroviciu [QA] from comment #41)
> "Video format or MIME type is not supported"
> Is this the valid string for error.srcNotSupported?

Yes, that is valid.

> How can I reproduce the other error messages?
> Thank you!

Chris Pearce has created a page that tests many of the error conditions:
http://pearce.org.nz/video/error.html
I found a case when bahaviour is different accross platforms:
Steps:
1. Go to a webpage which contains a video in html5 (e.g. http://videos-cdn.mozilla.net/brand/Mozilla_Firefox_Manifesto_v0.2_640.webm)
2. While video is loading (immediately after page load) hit the ESC key

Result:
*Win 7 32 bit, Win 7 64 bit, Ubuntu 11.04 64bit
Video stops loading and error message "Video loading stopped." is displayed overlaying the video.
*Win XP, Ubuntu 11.04 32 bit, Mac 10.6:
Video loads and starts playing

Which is the correct behaviour in this case?
Thank you!
(In reply to Mihaela Velimiroviciu [QA] from comment #43)
> I found a case when bahaviour is different accross platforms:
> Steps:
> 1. Go to a webpage which contains a video in html5 (e.g.
> http://videos-cdn.mozilla.net/brand/Mozilla_Firefox_Manifesto_v0.2_640.webm)
> 2. While video is loading (immediately after page load) hit the ESC key
> 
> Result:
> *Win 7 32 bit, Win 7 64 bit, Ubuntu 11.04 64bit
> Video stops loading and error message "Video loading stopped." is displayed
> overlaying the video.

Correct behavior.

> *Win XP, Ubuntu 11.04 32 bit, Mac 10.6:
> Video loads and starts playing

Incorrect behavior.
> > *Win XP, Ubuntu 11.04 32 bit, Mac 10.6:
> > Video loads and starts playing
> 
> Incorrect behavior.

Logged bug #723097
Depends on: 723253
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:11.0) Gecko/20100101 Firefox/11.0
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0
Firefox 11 beta 2

Verified the error conditions from http://pearce.org.nz/video/error.html and error messages are displayed over the video content.
Changing status to VERIFIED.
Status: RESOLVED → VERIFIED
Keywords: verified-beta
Depends on: 730569
You need to log in before you can comment on or make changes to this bug.