Changeset 265168 in webkit


Ignore:
Timestamp:
Jul 31, 2020 4:41:39 PM (4 years ago)
Author:
Chris Dumez
Message:

Add OfflineAudioCompletionEvent constructor
https://bugs.webkit.org/show_bug.cgi?id=214994

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/webaudio/idlharness.https.window-expected.txt:

Source/WebCore:

Add OfflineAudioCompletionEvent constructor, as per:

Test: webaudio/OfflineAudioCompletionEvent-constructor.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::finishedRendering):

  • Modules/webaudio/OfflineAudioCompletionEvent.cpp:

(WebCore::OfflineAudioCompletionEvent::create):
(WebCore::OfflineAudioCompletionEvent::OfflineAudioCompletionEvent):

  • Modules/webaudio/OfflineAudioCompletionEvent.h:
  • Modules/webaudio/OfflineAudioCompletionEvent.idl:
  • Modules/webaudio/OfflineAudioCompletionEventInit.h: Copied from Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl.
  • Modules/webaudio/OfflineAudioCompletionEventInit.idl: Copied from Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Add layout test coverage.

  • webaudio/OfflineAudioCompletionEvent-constructor-expected.txt: Added.
  • webaudio/OfflineAudioCompletionEvent-constructor.html: Added.
Location:
trunk
Files:
2 added
14 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r265167 r265168  
     12020-07-31  Chris Dumez  <cdumez@apple.com>
     2
     3        Add OfflineAudioCompletionEvent constructor
     4        https://bugs.webkit.org/show_bug.cgi?id=214994
     5
     6        Reviewed by Eric Carlson.
     7
     8        Add layout test coverage.
     9
     10        * webaudio/OfflineAudioCompletionEvent-constructor-expected.txt: Added.
     11        * webaudio/OfflineAudioCompletionEvent-constructor.html: Added.
     12
    1132020-07-31  Jer Noble  <jer.noble@apple.com>
    214
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r265152 r265168  
     12020-07-31  Chris Dumez  <cdumez@apple.com>
     2
     3        Add OfflineAudioCompletionEvent constructor
     4        https://bugs.webkit.org/show_bug.cgi?id=214994
     5
     6        Reviewed by Eric Carlson.
     7
     8        Rebaseline WPT test now that more checks are passing.
     9
     10        * web-platform-tests/webaudio/idlharness.https.window-expected.txt:
     11
    1122020-07-31  Chris Dumez  <cdumez@apple.com>
    213
  • trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/idlharness.https.window-expected.txt

    r265152 r265168  
    161161FAIL BaseAudioContext interface: calling decodeAudioData(ArrayBuffer, optional DecodeSuccessCallback?, optional DecodeErrorCallback?) on new OfflineAudioContext(1, 1, sample_rate) with too few arguments must throw TypeError assert_unreached: Throws "TypeError: Not enough arguments" instead of rejecting promise Reached unreachable code
    162162PASS OfflineAudioCompletionEvent interface: existence and properties of interface object
    163 FAIL OfflineAudioCompletionEvent interface object length assert_equals: wrong value for OfflineAudioCompletionEvent.length expected 2 but got 0
     163PASS OfflineAudioCompletionEvent interface object length
    164164PASS OfflineAudioCompletionEvent interface object name
    165165PASS OfflineAudioCompletionEvent interface: existence and properties of interface prototype object
  • trunk/Source/WebCore/CMakeLists.txt

    r265152 r265168  
    478478    Modules/webaudio/MediaStreamAudioSourceNode.idl
    479479    Modules/webaudio/OfflineAudioCompletionEvent.idl
     480    Modules/webaudio/OfflineAudioCompletionEventInit.idl
    480481    Modules/webaudio/OfflineAudioContext.idl
    481482    Modules/webaudio/OfflineAudioContextOptions.idl
  • trunk/Source/WebCore/ChangeLog

    r265167 r265168  
     12020-07-31  Chris Dumez  <cdumez@apple.com>
     2
     3        Add OfflineAudioCompletionEvent constructor
     4        https://bugs.webkit.org/show_bug.cgi?id=214994
     5
     6        Reviewed by Eric Carlson.
     7
     8        Add OfflineAudioCompletionEvent constructor, as per:
     9        - https://www.w3.org/TR/webaudio/#OfflineAudioCompletionEvent
     10
     11        Test: webaudio/OfflineAudioCompletionEvent-constructor.html
     12
     13        * CMakeLists.txt:
     14        * DerivedSources-input.xcfilelist:
     15        * DerivedSources-output.xcfilelist:
     16        * DerivedSources.make:
     17        * Modules/webaudio/BaseAudioContext.cpp:
     18        (WebCore::BaseAudioContext::finishedRendering):
     19        * Modules/webaudio/OfflineAudioCompletionEvent.cpp:
     20        (WebCore::OfflineAudioCompletionEvent::create):
     21        (WebCore::OfflineAudioCompletionEvent::OfflineAudioCompletionEvent):
     22        * Modules/webaudio/OfflineAudioCompletionEvent.h:
     23        * Modules/webaudio/OfflineAudioCompletionEvent.idl:
     24        * Modules/webaudio/OfflineAudioCompletionEventInit.h: Copied from Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl.
     25        * Modules/webaudio/OfflineAudioCompletionEventInit.idl: Copied from Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl.
     26        * Sources.txt:
     27        * WebCore.xcodeproj/project.pbxproj:
     28
    1292020-07-31  Jer Noble  <jer.noble@apple.com>
    230
  • trunk/Source/WebCore/DerivedSources-input.xcfilelist

    r265152 r265168  
    327327$(PROJECT_DIR)/Modules/webaudio/MediaStreamAudioSourceNode.idl
    328328$(PROJECT_DIR)/Modules/webaudio/OfflineAudioCompletionEvent.idl
     329$(PROJECT_DIR)/Modules/webaudio/OfflineAudioCompletionEventInit.idl
    329330$(PROJECT_DIR)/Modules/webaudio/OfflineAudioContext.idl
    330331$(PROJECT_DIR)/Modules/webaudio/OfflineAudioContextOptions.idl
  • trunk/Source/WebCore/DerivedSources-output.xcfilelist

    r265152 r265168  
    12231223$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSOfflineAudioCompletionEvent.cpp
    12241224$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSOfflineAudioCompletionEvent.h
     1225$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSOfflineAudioCompletionEventInit.cpp
     1226$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSOfflineAudioCompletionEventInit.h
    12251227$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSOfflineAudioContext.cpp
    12261228$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSOfflineAudioContext.h
  • trunk/Source/WebCore/DerivedSources.make

    r265152 r265168  
    410410    $(WebCore)/Modules/webaudio/MediaStreamAudioSourceNode.idl \
    411411    $(WebCore)/Modules/webaudio/OfflineAudioCompletionEvent.idl \
     412    $(WebCore)/Modules/webaudio/OfflineAudioCompletionEventInit.idl \
    412413    $(WebCore)/Modules/webaudio/OfflineAudioContext.idl \
    413414    $(WebCore)/Modules/webaudio/OfflineAudioContextOptions.idl \
  • trunk/Source/WebCore/Modules/webaudio/BaseAudioContext.cpp

    r265152 r265168  
    11051105
    11061106    clearPendingActivityIfExitEarly.release();
    1107     m_eventQueue->enqueueEvent(OfflineAudioCompletionEvent::create(renderedBuffer.get()));
     1107    m_eventQueue->enqueueEvent(OfflineAudioCompletionEvent::create(*renderedBuffer));
    11081108
    11091109    finishedRenderingScope.release();
  • trunk/Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.cpp

    r250060 r265168  
    3131#include "AudioBuffer.h"
    3232#include "EventNames.h"
     33#include "OfflineAudioCompletionEventInit.h"
    3334#include <wtf/IsoMallocInlines.h>
    3435
     
    3738WTF_MAKE_ISO_ALLOCATED_IMPL(OfflineAudioCompletionEvent);
    3839
    39 Ref<OfflineAudioCompletionEvent> OfflineAudioCompletionEvent::create(RefPtr<AudioBuffer>&& renderedBuffer)
     40Ref<OfflineAudioCompletionEvent> OfflineAudioCompletionEvent::create(Ref<AudioBuffer>&& renderedBuffer)
    4041{
    4142    return adoptRef(*new OfflineAudioCompletionEvent(WTFMove(renderedBuffer)));
    4243}
    4344
    44 OfflineAudioCompletionEvent::OfflineAudioCompletionEvent(RefPtr<AudioBuffer>&& renderedBuffer)
     45Ref<OfflineAudioCompletionEvent> OfflineAudioCompletionEvent::create(const AtomString& eventType, OfflineAudioCompletionEventInit&& init)
     46{
     47    RELEASE_ASSERT(init.renderedBuffer);
     48    return adoptRef(*new OfflineAudioCompletionEvent(eventType, WTFMove(init)));
     49}
     50
     51OfflineAudioCompletionEvent::OfflineAudioCompletionEvent(Ref<AudioBuffer>&& renderedBuffer)
    4552    : Event(eventNames().completeEvent, CanBubble::Yes, IsCancelable::No)
    4653    , m_renderedBuffer(WTFMove(renderedBuffer))
     54{
     55}
     56
     57OfflineAudioCompletionEvent::OfflineAudioCompletionEvent(const AtomString& eventType, OfflineAudioCompletionEventInit&& init)
     58    : Event(eventType, init, IsTrusted::No)
     59    , m_renderedBuffer(init.renderedBuffer.releaseNonNull())
    4760{
    4861}
  • trunk/Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.h

    r250060 r265168  
    2525#pragma once
    2626
    27 #include "AudioBuffer.h"
    2827#include "Event.h"
    29 #include <wtf/RefPtr.h>
    3028
    3129namespace WebCore {
     30
     31class AudioBuffer;
     32struct OfflineAudioCompletionEventInit;
    3233
    3334class OfflineAudioCompletionEvent final : public Event {
    3435    WTF_MAKE_ISO_ALLOCATED(OfflineAudioCompletionEvent);
    3536public:
    36     static Ref<OfflineAudioCompletionEvent> create(RefPtr<AudioBuffer>&& renderedBuffer);
     37    static Ref<OfflineAudioCompletionEvent> create(Ref<AudioBuffer>&& renderedBuffer);
     38    static Ref<OfflineAudioCompletionEvent> create(const AtomString& eventType, OfflineAudioCompletionEventInit&&);
    3739   
    3840    virtual ~OfflineAudioCompletionEvent();
    3941
    40     AudioBuffer* renderedBuffer() { return m_renderedBuffer.get(); }
     42    AudioBuffer& renderedBuffer() { return m_renderedBuffer.get(); }
    4143
    4244    EventInterface eventInterface() const override;
    4345
    4446private:
    45     explicit OfflineAudioCompletionEvent(RefPtr<AudioBuffer>&& renderedBuffer);
     47    explicit OfflineAudioCompletionEvent(Ref<AudioBuffer>&& renderedBuffer);
     48    OfflineAudioCompletionEvent(const AtomString& eventType, OfflineAudioCompletionEventInit&&);
    4649
    47     RefPtr<AudioBuffer> m_renderedBuffer;
     50    Ref<AudioBuffer> m_renderedBuffer;
    4851};
    4952
  • trunk/Source/WebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl

    r131172 r265168  
    2727    JSGenerateToJSObject
    2828] interface OfflineAudioCompletionEvent : Event {
     29    constructor (DOMString type, OfflineAudioCompletionEventInit eventInitDict);
     30
    2931    readonly attribute AudioBuffer renderedBuffer;
    3032};
  • trunk/Source/WebCore/Modules/webaudio/OfflineAudioCompletionEventInit.h

    r265167 r265168  
    11/*
    2  * Copyright (C) 2011, Google Inc. All rights reserved.
     2 * Copyright (C) 2020, Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2323 */
    2424
    25 [
    26     Conditional=WEB_AUDIO,
    27     JSGenerateToJSObject
    28 ] interface OfflineAudioCompletionEvent : Event {
    29     readonly attribute AudioBuffer renderedBuffer;
     25#pragma once
     26
     27#include "AudioBuffer.h"
     28#include "EventInit.h"
     29
     30namespace WebCore {
     31
     32struct OfflineAudioCompletionEventInit : EventInit {
     33    RefPtr<AudioBuffer> renderedBuffer;
    3034};
     35
     36}
  • trunk/Source/WebCore/Modules/webaudio/OfflineAudioCompletionEventInit.idl

    r265167 r265168  
    11/*
    2  * Copyright (C) 2011, Google Inc. All rights reserved.
     2 * Copyright (C) 2020, Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525[
    2626    Conditional=WEB_AUDIO,
    27     JSGenerateToJSObject
    28 ] interface OfflineAudioCompletionEvent : Event {
    29     readonly attribute AudioBuffer renderedBuffer;
     27] dictionary OfflineAudioCompletionEventInit : EventInit {
     28    required AudioBuffer renderedBuffer;
    3029};
  • trunk/Source/WebCore/Sources.txt

    r265156 r265168  
    31283128JSOESVertexArrayObject.cpp
    31293129JSOfflineAudioCompletionEvent.cpp
     3130JSOfflineAudioCompletionEventInit.cpp
    31303131JSOfflineAudioContext.cpp
    31313132JSOfflineAudioContextOptions.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r265156 r265168  
    24392439                8326BF8F24D35C39001F8A85 /* WaveShaperOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8326BF8C24D35C20001F8A85 /* WaveShaperOptions.h */; };
    24402440                832B843419D8E55100B26055 /* SVGAnimateElementBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 832B843319D8E55100B26055 /* SVGAnimateElementBase.h */; };
     2441                833AE52924D386F200017C4B /* OfflineAudioCompletionEventInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 833AE52824D386E100017C4B /* OfflineAudioCompletionEventInit.h */; };
    24412442                833B9E321F508D8500E0E428 /* JSFileSystemDirectoryEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 833B9E2F1F508D8000E0E428 /* JSFileSystemDirectoryEntry.h */; };
    24422443                833B9E341F508D8500E0E428 /* JSFileSystemEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 833B9E2A1F508D8000E0E428 /* JSFileSystemEntry.h */; };
     
    1043310434                832B843319D8E55100B26055 /* SVGAnimateElementBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimateElementBase.h; sourceTree = "<group>"; };
    1043410435                832B843519D8E57400B26055 /* SVGAnimateElementBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateElementBase.cpp; sourceTree = "<group>"; };
     10436                833AE52624D386E100017C4B /* OfflineAudioCompletionEventInit.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = OfflineAudioCompletionEventInit.idl; sourceTree = "<group>"; };
     10437                833AE52824D386E100017C4B /* OfflineAudioCompletionEventInit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OfflineAudioCompletionEventInit.h; sourceTree = "<group>"; };
    1043510438                833B9E2A1F508D8000E0E428 /* JSFileSystemEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFileSystemEntry.h; sourceTree = "<group>"; };
    1043610439                833B9E2B1F508D8000E0E428 /* JSFileSystemDirectoryEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFileSystemDirectoryEntry.cpp; sourceTree = "<group>"; };
     
    2957029573                                FDA3E956134A49EF008D4B5A /* OfflineAudioCompletionEvent.h */,
    2957129574                                FDA3E95D134A49FF008D4B5A /* OfflineAudioCompletionEvent.idl */,
     29575                                833AE52824D386E100017C4B /* OfflineAudioCompletionEventInit.h */,
     29576                                833AE52624D386E100017C4B /* OfflineAudioCompletionEventInit.idl */,
    2957229577                                FDA9325A16703B2A008982DC /* OfflineAudioContext.cpp */,
    2957329578                                FDA9325B16703B2A008982DC /* OfflineAudioContext.h */,
     
    3266532670                                77A17A7212F28182004E02F6 /* OESVertexArrayObject.h in Headers */,
    3266632671                                FDA3E95A134A49EF008D4B5A /* OfflineAudioCompletionEvent.h in Headers */,
     32672                                833AE52924D386F200017C4B /* OfflineAudioCompletionEventInit.h in Headers */,
    3266732673                                FDA9325E16703B2A008982DC /* OfflineAudioContext.h in Headers */,
    3266832674                                E7CF84A924C6461C00B06B90 /* OfflineAudioContextOptions.h in Headers */,
Note: See TracChangeset for help on using the changeset viewer.