Commit Graph
140 Commits
Author SHA1 Message Date
Emilio Cobos Álvarez 7506fc5879 Bug 1881011 - Refactor UnbindFromTree to take a context argument. r=smaug
Much like BindToTree.

This will be useful because I need to pass more information through
UnbindFromTree() to speed up dir=auto for bug 1874040.

Differential Revision: https://phabricator.services.mozilla.com/D202215
2024-02-20 15:05:40 +00:00
Emilio Cobos Álvarez d02e297b2d Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu
Sorry this is not a particularly easy patch to review. But it should be
mostly straight-forward.

I kept Document::Dispatch mostly for convenience, but could be
cleaned-up too / changed by SchedulerGroup::Dispatch. Similarly maybe
that can just be NS_DispatchToMainThread if we add an NS_IsMainThread
check there or something (to preserve shutdown semantics).

Differential Revision: https://phabricator.services.mozilla.com/D190450
2023-10-10 08:51:12 +00:00
Markus Stange 70bd936589 Bug 1843484 - Use EventTarget* instead of nsISupports* for the event target parameter of the nsContentUtils::Dispatch methods. r=smaug
This saves a few queryInterface calls on the hot path.

Differential Revision: https://phabricator.services.mozilla.com/D186976
2023-08-28 23:38:42 +00:00
Emilio Cobos Álvarez 529c9ee321 Bug 1839922 - Remove usage of {Has,Get}Attr(kNameSpaceID_None, ..). r=edgar
We have more readable and faster versions (that just omit the namespace
arg).

Mostly done via sed, with a couple helpers to use the faster lookups
where possible.

Differential Revision: https://phabricator.services.mozilla.com/D181795
2023-06-23 10:01:32 +00:00
Emilio Cobos Álvarez a1007b18c6 Bug 1839223 - Remove nsMappedAttributes. r=smaug
Instead, lazily schedule evaluation of them before styling, much like we
were doing for SVG.

A subtle tweak is that we only remain scheduled while in the document.
This allows us to use the "in document" bit plus the "mapped attributes
dirty" bit to know our scheduled status. It also prevents doing silly
work for disconnected elements, and having to do hashmap lookups on
adoption and node destruction.

Differential Revision: https://phabricator.services.mozilla.com/D181549
2023-06-22 17:22:03 +00:00
Cristian Tuns f54a728824 Backed out changeset a3e55d5f9f13 (bug 1839223) for causing multiple failures in Document.cpp CLOSED TREE 2023-06-22 11:34:15 -04:00
Emilio Cobos Álvarez a28183ac0e Bug 1839223 - Remove nsMappedAttributes. r=smaug
Instead, lazily schedule evaluation of them before styling, much like we
were doing for SVG.

A subtle tweak is that we only remain scheduled while in the document.
This allows us to use the "in document" bit plus the "mapped attributes
dirty" bit to know our scheduled status. It also prevents doing silly
work for disconnected elements, and having to do hashmap lookups on
adoption and node destruction.

Differential Revision: https://phabricator.services.mozilla.com/D181549
2023-06-22 14:31:16 +00:00
Emilio Cobos Álvarez 69c751a4c3 Bug 1837816 - Make selector cache not tied to a document. r=media-playback-reviewers,karlt,mstange
It doesn't really need to.

Differential Revision: https://phabricator.services.mozilla.com/D180591
2023-06-16 17:20:42 +00:00
Emilio Cobos Álvarez ded1458b5b Bug 1829189 - Make OnAttrSetButNotChanged and AfterSetAttr infallible. r=smaug
Same rg + sed shenanigans as the first patch.

There were two that could fail, both due to OOM:

 * HTMLInputElement::AfterSetAttr: If we fail (only in the type=range
   case) we end up with an old value without it being clamped by
   min/max/step.

 * HTMLBodyElement::AfterSetAttr: If we fail we won't peek up the
   DocShell's frame margins and styling could be incorrect.

That seems better than having to deal with broken states after we've
already set the attribute.

Depends on D176069

Differential Revision: https://phabricator.services.mozilla.com/D176070
2023-04-21 08:56:27 +00:00
alwu 203938c43b Bug 1803834 - part2 : pause/resume non-audible autoplay video when its visibility changes. r=media-playback-reviewers,padenot
https://html.spec.whatwg.org/multipage/media.html#ready-states:eligible-for-autoplay-2

Depends on D163741

Differential Revision: https://phabricator.services.mozilla.com/D163742
2022-12-06 18:21:39 +00:00
Ryan VanderMeulen 4ae155bc52 Bug 1445089 - Revert workaround for a VS2017 <15.6 constexpr pointer math bug. r=alwu
Bug 1408695 introduced a workaround in HTMLTrackElement for a bug in VS2017 <
15.6. We don't support MSVC at all anymore, so this issue should be moot even
if it was fixed upstream since.

Differential Revision: https://phabricator.services.mozilla.com/D156895
2022-09-09 17:20:47 +00:00
Kershaw Chang bd7389a309 Bug 1760580 - P2: Provide a reason when request is cancelled with NS_BINDING_ABORTED, r=necko-reviewers,media-playback-reviewers,valentin,chunmin
Differential Revision: https://phabricator.services.mozilla.com/D156071
2022-09-08 09:11:19 +00:00
alwu 07564922e9 Bug 1675326 - part1 : move webvtt related files into dom/media/webvtt. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D96103
2020-11-09 15:47:07 +00:00
Sylvestre Ledru 68b806d604 Bug 1674637 - Use nested namespaces in dom/ r=sg,andi
Also add some missing namespace qualifications

Done with:
./mach static-analysis check --checks="-*,modernize-concat-nested-namespaces" --fix dom/
./mach clang-format -p $(hg status dom/|grep ^M|awk '{print $2}')

Differential Revision: https://phabricator.services.mozilla.com/D95456
2020-11-04 17:04:01 +00:00
Butkovits Atila a6e7dcc53f Backed out changeset c0adbf7522dc (bug 1674637) for bustage on GMPParent.cpp. CLOSED TREE 2020-11-04 10:54:36 +02:00
Sylvestre Ledru 8f709b39e8 Bug 1674637 - Use nested namespaces in dom/ r=sg,andi
Also add some missing namespace qualifications

Done with:
./mach static-analysis check --checks="-*,modernize-concat-nested-namespaces" --fix dom/
./mach clang-format -p $(hg status dom/|grep ^M|awk '{print $2}')

Differential Revision: https://phabricator.services.mozilla.com/D95456
2020-11-04 08:29:00 +00:00
Frederik Braun 617d3006d9 Bug 1366973: Rename security flags to not contain DATA anymore r=geckoview-reviewers,ckerschb,snorp
Differential Revision: https://phabricator.services.mozilla.com/D83490
2020-07-15 11:20:45 +00:00
Simon Giesecke a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Mihai Alexandru Michis 0f0d369025 Backed out changeset f2508a6e4c53 (bug 1636572) for causing wpt failures in track-element/cors/*
CLOSED TREE
2020-05-11 10:47:22 +03:00
alwu 0774242043 Bug 1636572 - prevent start a non-necessary new load if we're running another load for the same URL. r=jya
This patch will do :
- prevent starting another new load if that load is the same as the currently running load

The advantage of doing so is to avoid running same process again, which is unnecessary

More details :
When applying patches from bug1633935, it exposed an issue of the previous load interfering the track element when a new load was started.
It happens on `test_texttrack_mode_change_during_loading.html`. In that test, the first load happens when we set the src to the track element [1] and the second load happens when we change the mode of the track element [2].

In this situation, the first load an the second load is actually the same, they are going to fetch data from the same resource. According to the step 1 in the spec [3], we should prevent running another load if there is another same running occurrence of this algorithm.

[1] https://searchfox.org/mozilla-central/rev/dc4560dcaafd79375b9411fdbbaaebb0a59a93ac/dom/media/test/test_texttrack_mode_change_during_loading.html#53
[2] https://searchfox.org/mozilla-central/rev/dc4560dcaafd79375b9411fdbbaaebb0a59a93ac/dom/media/test/test_texttrack_mode_change_during_loading.html#62
[3] https://html.spec.whatwg.org/multipage/media.html#start-the-track-processing-model

Differential Revision: https://phabricator.services.mozilla.com/D74514
2020-05-09 10:42:53 +00:00
Sean Feng e2b8b11349 Bug 1377999 - Make HTML Element to adapt the DOMArena changes r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D57699
2020-03-17 14:53:08 +00:00
Simon Giesecke 968040c445 Bug 1613985 - Use default for equivalent-to-default constructors/destructors in dom/html. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D63171
2020-02-20 16:19:15 +00:00
alwu 31ed38da5d Bug 1613329 - part1 : append text track to media element when binding track element to DOM tree. r=bzbarsky
This change ensures that we always remember to add a text track to media element's track list.

Differential Revision: https://phabricator.services.mozilla.com/D61666
2020-02-11 00:41:14 +00:00
Gabriele Svelto eb403b8785 Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442
2019-12-06 09:24:56 +00:00
Dorel Luca 67889e1013 Backed out changeset f6e53d1c6518 (bug 1600545) for Android build bustage. CLOSED TREE 2019-12-04 17:32:27 +02:00
Gabriele Svelto dc6fa2e86c Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442
2019-12-04 15:01:19 +00:00
Emilio Cobos Álvarez 0f0c42a05d Bug 1600353 - Make TextTrackSource and TextTrackReadyState enum classes. r=bzbarsky
To avoid defining `Loading`, `Loaded`, etc. in the mozilla::dom namespace. Also
it is a bit cleaner and saves some memory in the TextTrack objects by specifying
the size to be smaller.

Differential Revision: https://phabricator.services.mozilla.com/D55312
2019-12-02 19:13:11 +00:00
Nicholas Nethercote c4aacd8403 Bug 1563139 - Remove StaticPrefs.h. r=glandium
This requires replacing inclusions of it with inclusions of more specific prefs
files.

The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h,
and is used in `Codegen.py` because doing something smarter is tricky and
suitable for a follow-up. As a result, any change to StaticPrefList.yaml will
still trigger recompilation of all the generated DOM bindings files, but that's
still a big improvement over trigger recompilation of every file that uses
static prefs.

Most of the changes in this commit are very boring. The only changes that are
not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml.

Differential Revision: https://phabricator.services.mozilla.com/D39138
2019-07-26 01:10:23 +00:00
Alastor Wu 3d38abc578 Bug 1562021 - part5 : add test 'test_texttrack_mode_change_during_loading.html'. r=jya
In order to simulate the specific running order, we have to add a test event 'mozStartedLoadingTextTrack', which would be controlled under a pref.

This test is used to ensure that we won't get `error` event when we change track's  mode during loading.

Differential Revision: https://phabricator.services.mozilla.com/D36410
2019-07-03 23:28:31 +00:00
Alastor Wu 6c55e0ec1f Bug 1562021 - part4 : wrap channel and listener clean-up to a function. r=jya
There are several places doing channel or listenr clean up, all these places should do channel and listener clean-up together because they are being used as a pair.

Differential Revision: https://phabricator.services.mozilla.com/D36409
2019-07-03 23:27:12 +00:00
Alastor Wu 8804006114 Bug 1562021 - part3 : cancel old VTT listener when we start a new load. r=jya,baku
When we start a new load, all previous data fetching from the previous listener and all state changing applied to track element should be ignored.

Therefore, we add a new method `Cancel()` which owner of the listener should call when we would like to discard current listener.

Differential Revision: https://phabricator.services.mozilla.com/D36407
2019-07-03 23:23:29 +00:00
Alastor Wu b8b7924a51 Bug 1562021 - part2 : using same log module as other VTT related files. r=jya
This log module should be merged into a part of `WebVTT` log module because it's useless to check this log module independently.

Differential Revision: https://phabricator.services.mozilla.com/D36406
2019-07-03 06:50:04 +00:00
Logan Smyth 77108e65d7 Bug 1529345 - Part 2: Add Gecko infrastructure for receiving notifications about debugger-related events. r=jimb,smaug
Differential Revision: https://phabricator.services.mozilla.com/D30565
2019-06-17 04:36:29 +00:00
Alastor Wu cdb12d5dae Bug 1464012 - part1 : directly check media element's crossorigin attribute. r=jya
As `GetCORSMode()` would only be valid after media element starts loading, so we would fail to get the CORS mode if media's preload is `none`.

Therefore, according to the spec [1], we should directly check parent media element's `crossorigin` attribute in order to decide the `corsAttributeState`.

[1] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:attr-media-crossorigin

Differential Revision: https://phabricator.services.mozilla.com/D34755
2019-06-14 17:56:33 +00:00
Emilio Cobos Álvarez a3b32df884 Bug 1555216 - Change the signature of BindToTree to be (BindContext&, nsINode& aParentNode). r=bzbarsky
BindContext was going to have way more information at first, but then I realized
that most of the things I wanted to know were basically a flag away using the
parent node.

Still I think it's worth it, now experimenting with BindToTree will only mean
adding a field to a struct that's included from a couple cpp files, instead of a
massive pain.

I also think this is clearer, and doing this highlights quite a few
inconsistencies in our code which I've left untouched, but commented with
FIXMEs.

Steps are:

$ for file in $(rg 'nsresult BindToTree\(' | cut -d : -f 1 | sort | uniq); do sed -i 's#nsresult BindToTree(Document\* aDocument, nsIContent\* aParent,#nsresult BindToTree(BindContext\&, nsINode\& aParent)#g' $file; done
$ for file in $(rg 'nsresult BindToTree\(' | cut -d : -f 1 | sort | uniq); do sed -i 's#                      nsIContent\* aBindingParent) override#override#g' $file; done
$ for file in $(rg '::BindToTree\(' | cut -d : -f 1 | sort | uniq); do sed -i 's#::BindToTree(Document\* aDocument, nsIContent\* aParent,#::BindToTree(BindContext\& aContext, nsINode\& aParent)#g' $file; done
$ for file in $(rg '::BindToTree\(' | cut -d : -f 1 | sort | uniq); do sed -i 's#nsIContent\* aBindingParent)##g' $file; done
$ for file in $(rg '::BindToTree\(' | cut -d : -f 1 | sort | uniq); do sed -i 's#::BindToTree(aDocument, aParent, aBindingParent)#::BindToTree(aContext, aParent)#g' $file; done
$ ./mach clang-format

Then manual fixups.

Depends on D32948

Differential Revision: https://phabricator.services.mozilla.com/D32949
2019-05-31 23:31:52 +02:00
Emilio Cobos Álvarez 9160cd2967 Bug 1555143 - Remove unused aDeep argument from UnbindFromTree. r=bzbarsky
$ for file in $(rg UnbindFromTree | cut -d : -f 1 | sort | uniq); do sed -i 's#UnbindFromTree(bool aDeep = true,#UnbindFromTree(#g' $file; done
$ for file in $(rg UnbindFromTree | cut -d : -f 1 | sort | uniq); do sed -i 's#UnbindFromTree(bool aDeep,#UnbindFromTree(#g' $file; done
$ for file in $(rg UnbindFromTree | cut -d : -f 1 | sort | uniq); do sed -i 's#UnbindFromTree(aDeep,#UnbindFromTree(#g' $file; done
$ ./mach clang-format

And fix the two callers and little use of the aDeep argument (see the "Manual
changes" patch attached to bug).

Differential Revision: https://phabricator.services.mozilla.com/D32898
2019-05-28 22:47:08 +00:00
alwu 6a7028ad36 Bug 1550633 - part15 : return error when we failed to create channel. r=jya
The channel might not be created correctly if we pass invaild url (eg. "invalid://url"), we should handle this error.

Differential Revision: https://phabricator.services.mozilla.com/D32038
2019-05-24 00:40:58 +00:00
alwu 1a7072a01d Bug 1550633 - part10 : automatically capture and print the address of track element in debug log and add new log. r=jya
To reduce non-neccesary input, we can always capture `this` and print the address in the log, and use same log level for all of them.

Differential Revision: https://phabricator.services.mozilla.com/D31559
2019-05-24 00:41:21 +00:00
alwu 24615bb9fd Bug 1550633 - part9 : capture 'this' in lambda. r=jya
There are too many `self` used in the lambda, we can just capture `this` to remove redudant `self`.

Differential Revision: https://phabricator.services.mozilla.com/D31558
2019-05-24 00:41:25 +00:00
alwu 534a5d46f8 Bug 1550633 - part8 : no need to reload if the new url is the same. r=jya
Accoding to spec [1], after loading finished, the start the track processing model would stop at step12 and wait until the track URL changes to the URL which is not equal to the URL we have loaded before. That means, if we change track URL to the same URL we loaded before, we won't have to reload the resource.

[1] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:track-url-5

Differential Revision: https://phabricator.services.mozilla.com/D31557
2019-05-24 00:41:23 +00:00
alwu 8c1210fa16 Bug 1550633 - part7 : change ready state to 'FAILED_TO_LOAD' and dispatch 'error' event when we have no 'src' or have an empty url. r=jya
`Failed to load` [1] indicates that the text track was enabled, but when the user agent attempted to obtain it, this failed in some way.

According to the spec [2], if fetching fails for any reason (network error, the server returns an error code, CORS fails, etc), or if URL is the empty string, then queue a task to first change the text track readiness state to `failed to load` and then fire an event named `error` at the track element. And spec [3] also mention that, if the track URL changes so that it is no longer equal to URL while fetching is ongoing, we also need to change the text track readiness state to`failed to load` and dispatch `error`.

[1] https://html.spec.whatwg.org/multipage/media.html#text-track-readiness-state
[2] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:text-track-failed-to-load
[3] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:text-track-failed-to-load-3

Differential Revision: https://phabricator.services.mozilla.com/D31556
2019-05-24 00:41:27 +00:00
alwu b4f03fd78a Bug 1550633 - part6 : clear track's cues list whenever track element's src attribute set, changed or removed. r=jya,baku
According to the spec [1], we should empty track's cue list whenever a track element has its src attribute set, changed, or removed.

[1] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:attr-track-src

Differential Revision: https://phabricator.services.mozilla.com/D31552
2019-05-24 00:41:29 +00:00
alwu df4894f312 Bug 1550633 - part2 : maybe start loading resource when the track's mode changes. r=jya
According to the spec [1], the user agent must start the track processing model when text track has its text track mode changed.

[1] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:start-the-track-processing-model

Differential Revision: https://phabricator.services.mozilla.com/D31372
2019-05-24 00:41:38 +00:00
alwu 407f8db0ab Bug 1550633 - part1 : HTMLTrackElement should not load resource when its text track is disable. r=jya
According to the spec step2 [1], we should not load resource for the track element which text track is disabled.

[1] https://html.spec.whatwg.org/multipage/media.html#start-the-track-processing-model

Differential Revision: https://phabricator.services.mozilla.com/D31371
2019-05-24 00:41:40 +00:00
Andreea Pavel 3af137515b Backed out 23 changesets (bug 1550633) for causing bug 1548454 to permafail on a CLOSED TREE
Backed out changeset ce4a146da49d (bug 1550633)
Backed out changeset e1a33576d6ad (bug 1550633)
Backed out changeset bbd8f62b9bff (bug 1550633)
Backed out changeset 583d4e0945ad (bug 1550633)
Backed out changeset 29487a59512d (bug 1550633)
Backed out changeset 0f6ddd898e89 (bug 1550633)
Backed out changeset fd1afdd721e3 (bug 1550633)
Backed out changeset d4a6c1337f89 (bug 1550633)
Backed out changeset 2d4773f2dc6c (bug 1550633)
Backed out changeset e9dea69efffe (bug 1550633)
Backed out changeset 4265dd65cec3 (bug 1550633)
Backed out changeset 2aaaa42c409b (bug 1550633)
Backed out changeset d85485f76233 (bug 1550633)
Backed out changeset b6e8370b6efb (bug 1550633)
Backed out changeset afaef937598b (bug 1550633)
Backed out changeset 470d8fae0461 (bug 1550633)
Backed out changeset 8024fcefe8b1 (bug 1550633)
Backed out changeset 224eadc5ef27 (bug 1550633)
Backed out changeset 26c3c521ce27 (bug 1550633)
Backed out changeset def294ad0efb (bug 1550633)
Backed out changeset b15cc6e689e7 (bug 1550633)
Backed out changeset be178934cbbb (bug 1550633)
Backed out changeset 9893ccf1f8ad (bug 1550633)
2019-05-24 03:38:26 +03:00
alwu 6e1baae55a Bug 1550633 - part15 : return error when we failed to create channel. r=jya
The channel might not be created correctly if we pass invaild url (eg. "invalid://url"), we should handle this error.

Differential Revision: https://phabricator.services.mozilla.com/D32038
2019-05-23 09:03:08 +00:00
alwu 97d5651156 Bug 1550633 - part10 : automatically capture and print the address of track element in debug log and add new log. r=jya
To reduce non-neccesary input, we can always capture `this` and print the address in the log, and use same log level for all of them.

Differential Revision: https://phabricator.services.mozilla.com/D31559
2019-05-23 09:03:31 +00:00
alwu 22e496af56 Bug 1550633 - part9 : capture 'this' in lambda. r=jya
There are too many `self` used in the lambda, we can just capture `this` to remove redudant `self`.

Differential Revision: https://phabricator.services.mozilla.com/D31558
2019-05-23 09:03:33 +00:00
alwu efd1a23368 Bug 1550633 - part8 : no need to reload if the new url is the same. r=jya
Accoding to spec [1], after loading finished, the start the track processing model would stop at step12 and wait until the track URL changes to the URL which is not equal to the URL we have loaded before. That means, if we change track URL to the same URL we loaded before, we won't have to reload the resource.

[1] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:track-url-5

Differential Revision: https://phabricator.services.mozilla.com/D31557
2019-05-23 09:03:35 +00:00
alwu 348cec3cfb Bug 1550633 - part7 : change ready state to 'FAILED_TO_LOAD' and dispatch 'error' event when we have no 'src' or have an empty url. r=jya
`Failed to load` [1] indicates that the text track was enabled, but when the user agent attempted to obtain it, this failed in some way.

According to the spec [2], if fetching fails for any reason (network error, the server returns an error code, CORS fails, etc), or if URL is the empty string, then queue a task to first change the text track readiness state to `failed to load` and then fire an event named `error` at the track element. And spec [3] also mention that, if the track URL changes so that it is no longer equal to URL while fetching is ongoing, we also need to change the text track readiness state to`failed to load` and dispatch `error`.

[1] https://html.spec.whatwg.org/multipage/media.html#text-track-readiness-state
[2] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:text-track-failed-to-load
[3] https://html.spec.whatwg.org/multipage/media.html#sourcing-out-of-band-text-tracks:text-track-failed-to-load-3

Differential Revision: https://phabricator.services.mozilla.com/D31556
2019-05-23 09:03:37 +00:00