Bug 1396230 - Clear PerformanceObserver mQueuedEntries right after they were copied to PerformanceObserverEntryList. r=baku

This matches to the spec and makes po-callback-mutate.any.js test pass.

From the spec [1]

  1. Let entries be a copy of po’s observer buffer.
  2. Empty po’s observer buffer.
  3. If entries is non-empty, call po’s callback with entries as first
     argument and po as the second argument and callback this value. If this
     throws an exception, report the exception.

[1] https://w3c.github.io/performance-timeline/#queue-a-performanceentry

MozReview-Commit-ID: AEdfvGpauzy

--HG--
extra : rebase_source : 20b9fc8426fd48d10e8e55662afe1c881fd92343
This commit is contained in:
Hiroyuki Ikezoe 2017-09-02 22:05:44 +09:00
Родитель 8f3ef222fd
Коммит a81e75270e
2 изменённых файлов: 2 добавлений и 14 удалений

Просмотреть файл

@ -113,12 +113,13 @@ PerformanceObserver::Notify()
RefPtr<PerformanceObserverEntryList> list =
new PerformanceObserverEntryList(this, mQueuedEntries);
mQueuedEntries.Clear();
ErrorResult rv;
mCallback->Call(this, *list, *this, rv);
if (NS_WARN_IF(rv.Failed())) {
rv.SuppressException();
}
mQueuedEntries.Clear();
}
void

Просмотреть файл

@ -1,13 +0,0 @@
[po-callback-mutate.any.worker.html]
type: testharness
expected: TIMEOUT
[PerformanceObserver modifications inside callback should update filtering and not clear buffer]
expected: TIMEOUT
[po-callback-mutate.any.html]
type: testharness
expected: TIMEOUT
[PerformanceObserver modifications inside callback should update filtering and not clear buffer]
expected: TIMEOUT