Basic Interface test for PerformanceObserver APIs.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PerformanceObserver
PASS PerformanceObserver is defined.
PASS PerformanceObserver.prototype.observe is defined.
PASS PerformanceObserver.prototype.disconnect is defined.
PASS PerformanceObserver() threw exception TypeError: Constructor requires 'new' operator.
PASS new PerformanceObserver() threw exception TypeError: Not enough arguments.
PASS new PerformanceObserver(1) threw exception TypeError: Argument 1 ('callback') to the PerformanceObserver constructor must be a function.
PASS observer = new PerformanceObserver(function() {}) did not throw exception.
PASS observer.observe() threw exception TypeError: Not enough arguments.
PASS observer.observe("mark") threw exception TypeError: Type error.
PASS observer.observe({}) threw exception TypeError: Member PerformanceObserverInit.entryTypes is required and must be an instance of sequence.
PASS observer.observe({entryTypes:"mark"}) threw exception TypeError: Value is not a sequence.
PASS observer.observe({entryTypes:[]}) threw exception TypeError: entryTypes cannot be an empty list.
PASS observer.observe({entryTypes:["not-real"]}) threw exception TypeError: entryTypes contained only unsupported types.
PASS observer.observe({entryTypes:["mark"]}) did not throw exception.
PASS observer.observe({entryTypes:["mark", "not-real"]}) did not throw exception.
PASS observer.observe({entryTypes:["mark", "measure"]}) did not throw exception.
PASS observer.disconnect() did not throw exception.
PASS observer.disconnect() did not throw exception.

PerformanceObserverEntryList
PASS PerformanceObserverEntryList is defined.
PASS PerformanceObserverEntryList.prototype.getEntries is defined.
PASS PerformanceObserverEntryList.prototype.getEntriesByType is defined.
PASS PerformanceObserverEntryList.prototype.getEntriesByName is defined.
PASS new PerformanceObserverEntryList() threw exception TypeError: function is not a constructor (evaluating 'new PerformanceObserverEntryList()').

Starting worker: resources/observer-api.js
[Worker] PerformanceObserver
PASS [Worker] PerformanceObserver is defined.
PASS [Worker] PerformanceObserver.prototype.observe is defined.
PASS [Worker] PerformanceObserver.prototype.disconnect is defined.
PASS [Worker] PerformanceObserver() threw exception TypeError: Constructor requires 'new' operator.
PASS [Worker] new PerformanceObserver() threw exception TypeError: Not enough arguments.
PASS [Worker] new PerformanceObserver(1) threw exception TypeError: Argument 1 ('callback') to the PerformanceObserver constructor must be a function.
PASS [Worker] observer = new PerformanceObserver(function() {}) did not throw exception.
PASS [Worker] observer.observe() threw exception TypeError: Not enough arguments.
PASS [Worker] observer.observe("mark") threw exception TypeError: Type error.
PASS [Worker] observer.observe({}) threw exception TypeError: Member PerformanceObserverInit.entryTypes is required and must be an instance of sequence.
PASS [Worker] observer.observe({entryTypes:"mark"}) threw exception TypeError: Value is not a sequence.
PASS [Worker] observer.observe({entryTypes:[]}) threw exception TypeError: entryTypes cannot be an empty list.
PASS [Worker] observer.observe({entryTypes:["not-real"]}) threw exception TypeError: entryTypes contained only unsupported types.
PASS [Worker] observer.observe({entryTypes:["mark"]}) did not throw exception.
PASS [Worker] observer.observe({entryTypes:["mark", "not-real"]}) did not throw exception.
PASS [Worker] observer.observe({entryTypes:["mark", "measure"]}) did not throw exception.
PASS [Worker] observer.disconnect() did not throw exception.
PASS [Worker] observer.disconnect() did not throw exception.
[Worker] 
[Worker] PerformanceObserverEntryList
PASS [Worker] PerformanceObserverEntryList is defined.
PASS [Worker] PerformanceObserverEntryList.prototype.getEntries is defined.
PASS [Worker] PerformanceObserverEntryList.prototype.getEntriesByType is defined.
PASS [Worker] PerformanceObserverEntryList.prototype.getEntriesByName is defined.
PASS [Worker] new PerformanceObserverEntryList() threw exception TypeError: function is not a constructor (evaluating 'new PerformanceObserverEntryList()').
PASS successfullyParsed is true

TEST COMPLETE

