Changeset 182275 in webkit


Ignore:
Timestamp:
Apr 2, 2015 10:37:20 AM (9 years ago)
Author:
adam.bergkvist@ericsson.com
Message:

WebRTC: Add support for Promise-based MediaDevices.getUserMedia()
https://bugs.webkit.org/show_bug.cgi?id=143255

Reviewed by Eric Carlson.

Source/WebCore:

The MediaDevices object collects functionality related to local media
devices. This patch adds the Promise-based version of getUserMedia()
(unprefixed). Other functionality, like enumerateDevices(), will be
added in later patches.

The old callback-based webkitGetUserMedia() (on Navigator) is kept for
legacy purposes (according to the Media Capture and Streams API spec [1]).
Both versions of getUserMedia are backed up by UserMediaRequest where
the callbacks from the callback-based version are wrapped inside c++
lambda functions. The new Promise-based getUserMedia() uses the lambda
functions directly as created by the Promise bindings.

[1] http://w3c.github.io/mediacapture-main/archives/20150324/getusermedia.html#navigatorusermedia-interface-extensions

Test: fast/mediastream/MediaDevices-getUserMedia.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/mediastream/MediaDevices.cpp: Added.

(WebCore::MediaDevices::create):
(WebCore::MediaDevices::MediaDevices):
(WebCore::MediaDevices::~MediaDevices):
(WebCore::MediaDevices::document):
(WebCore::MediaDevices::getUserMedia):

  • Modules/mediastream/MediaDevices.h: Added.
  • Modules/mediastream/MediaDevices.idl: Added.
  • Modules/mediastream/NavigatorMediaDevices.cpp: Added.

(WebCore::NavigatorMediaDevices::NavigatorMediaDevices):
(WebCore::NavigatorMediaDevices::~NavigatorMediaDevices):
(WebCore::NavigatorMediaDevices::from):
(WebCore::NavigatorMediaDevices::mediaDevices):
(WebCore::NavigatorMediaDevices::supplementName):

  • Modules/mediastream/NavigatorMediaDevices.h: Added.
  • Modules/mediastream/NavigatorMediaDevices.idl: Added.
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::create):
(WebCore::UserMediaRequest::UserMediaRequest):
(WebCore::UserMediaRequest::didCreateStream):
(WebCore::UserMediaRequest::failedToCreateStreamWithConstraintsError):
(WebCore::UserMediaRequest::failedToCreateStreamWithPermissionError):

  • Modules/mediastream/UserMediaRequest.h:
  • PlatformGTK.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSMediaDevicesCustom.cpp: Added.

(WebCore::JSMediaDevices::getUserMedia):

LayoutTests:

Added test for new Promise-based getUserMedia() (on MediaDevices).

  • fast/dom/navigator-detached-no-crash.html:
  • fast/mediastream/MediaDevices-getUserMedia-expected.txt: Added.
  • fast/mediastream/MediaDevices-getUserMedia.html: Added.
Location:
trunk
Files:
9 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r182273 r182275  
     12015-04-02  Adam Bergkvist  <adam.bergkvist@ericsson.com>
     2
     3        WebRTC: Add support for Promise-based MediaDevices.getUserMedia()
     4        https://bugs.webkit.org/show_bug.cgi?id=143255
     5
     6        Reviewed by Eric Carlson.
     7
     8        Added test for new Promise-based getUserMedia() (on MediaDevices).
     9
     10        * fast/dom/navigator-detached-no-crash.html:
     11        * fast/mediastream/MediaDevices-getUserMedia-expected.txt: Added.
     12        * fast/mediastream/MediaDevices-getUserMedia.html: Added.
     13
    1142015-04-02  Alexey Proskuryakov  <ap@apple.com>
    215
  • trunk/LayoutTests/fast/dom/navigator-detached-no-crash.html

    r120792 r182275  
    5353  var strings = [ ];
    5454  for (p in old_nav) {
    55     if (p == 'geolocation' || p == 'webkitGetUserMedia') // Don't include Geolocation or the Media Stream API functions until most platforms have support.
     55    if (p == 'geolocation' || p == 'webkitGetUserMedia' || p == 'mediaDevices') // Don't include Geolocation or the Media Stream API functions until most platforms have support.
    5656      continue;
    5757
  • trunk/Source/WebCore/CMakeLists.txt

    r182193 r182275  
    226226    Modules/mediastream/DOMURLMediaStream.idl
    227227    Modules/mediastream/HTMLMediaElementMediaStream.idl
     228    Modules/mediastream/MediaDevices.idl
    228229    Modules/mediastream/MediaSourceStates.idl
    229230    Modules/mediastream/MediaStream.idl
     
    236237    Modules/mediastream/MediaTrackConstraintSet.idl
    237238    Modules/mediastream/MediaTrackConstraints.idl
     239    Modules/mediastream/NavigatorMediaDevices.idl
    238240    Modules/mediastream/NavigatorUserMedia.idl
    239241    Modules/mediastream/NavigatorUserMediaError.idl
     
    875877    Modules/mediastream/HTMLMediaElementMediaStream.cpp
    876878    Modules/mediastream/MediaConstraintsImpl.cpp
     879    Modules/mediastream/MediaDevices.cpp
    877880    Modules/mediastream/MediaSourceStates.cpp
    878881    Modules/mediastream/MediaStream.cpp
     
    886889    Modules/mediastream/MediaTrackConstraintSet.cpp
    887890    Modules/mediastream/MediaTrackConstraints.cpp
     891    Modules/mediastream/NavigatorMediaDevices.cpp
    888892    Modules/mediastream/NavigatorUserMedia.cpp
    889893    Modules/mediastream/NavigatorUserMediaError.cpp
     
    11311135    bindings/js/JSLocationCustom.cpp
    11321136    bindings/js/JSMainThreadExecState.cpp
     1137    bindings/js/JSMediaDevicesCustom.cpp
    11331138    bindings/js/JSMediaSourceStatesCustom.cpp
    11341139    bindings/js/JSMediaStreamCapabilitiesCustom.cpp
  • trunk/Source/WebCore/ChangeLog

    r182274 r182275  
     12015-04-02  Adam Bergkvist  <adam.bergkvist@ericsson.com>
     2
     3        WebRTC: Add support for Promise-based MediaDevices.getUserMedia()
     4        https://bugs.webkit.org/show_bug.cgi?id=143255
     5
     6        Reviewed by Eric Carlson.
     7
     8        The MediaDevices object collects functionality related to local media
     9        devices. This patch adds the Promise-based version of getUserMedia()
     10        (unprefixed). Other functionality, like enumerateDevices(), will be
     11        added in later patches.
     12
     13        The old callback-based webkitGetUserMedia() (on Navigator) is kept for
     14        legacy purposes (according to the Media Capture and Streams API spec [1]).
     15        Both versions of getUserMedia are backed up by UserMediaRequest where
     16        the callbacks from the callback-based version are wrapped inside c++
     17        lambda functions. The new Promise-based getUserMedia() uses the lambda
     18        functions directly as created by the Promise bindings.
     19
     20        [1] http://w3c.github.io/mediacapture-main/archives/20150324/getusermedia.html#navigatorusermedia-interface-extensions
     21
     22        Test: fast/mediastream/MediaDevices-getUserMedia.html
     23
     24        * CMakeLists.txt:
     25        * DerivedSources.make:
     26        * Modules/mediastream/MediaDevices.cpp: Added.
     27        (WebCore::MediaDevices::create):
     28        (WebCore::MediaDevices::MediaDevices):
     29        (WebCore::MediaDevices::~MediaDevices):
     30        (WebCore::MediaDevices::document):
     31        (WebCore::MediaDevices::getUserMedia):
     32        * Modules/mediastream/MediaDevices.h: Added.
     33        * Modules/mediastream/MediaDevices.idl: Added.
     34        * Modules/mediastream/NavigatorMediaDevices.cpp: Added.
     35        (WebCore::NavigatorMediaDevices::NavigatorMediaDevices):
     36        (WebCore::NavigatorMediaDevices::~NavigatorMediaDevices):
     37        (WebCore::NavigatorMediaDevices::from):
     38        (WebCore::NavigatorMediaDevices::mediaDevices):
     39        (WebCore::NavigatorMediaDevices::supplementName):
     40        * Modules/mediastream/NavigatorMediaDevices.h: Added.
     41        * Modules/mediastream/NavigatorMediaDevices.idl: Added.
     42        * Modules/mediastream/UserMediaRequest.cpp:
     43        (WebCore::UserMediaRequest::create):
     44        (WebCore::UserMediaRequest::UserMediaRequest):
     45        (WebCore::UserMediaRequest::didCreateStream):
     46        (WebCore::UserMediaRequest::failedToCreateStreamWithConstraintsError):
     47        (WebCore::UserMediaRequest::failedToCreateStreamWithPermissionError):
     48        * Modules/mediastream/UserMediaRequest.h:
     49        * PlatformGTK.cmake:
     50        * WebCore.xcodeproj/project.pbxproj:
     51        * bindings/js/JSMediaDevicesCustom.cpp: Added.
     52        (WebCore::JSMediaDevices::getUserMedia):
     53
    1542015-04-02  Eric Carlson  <eric.carlson@apple.com>
    255
  • trunk/Source/WebCore/DerivedSources.make

    r182180 r182275  
    120120    $(WebCore)/Modules/mediastream/HTMLMediaElementMediaStream.idl \
    121121    $(WebCore)/Modules/mediastream/MediaSourceStates.idl \
     122    $(WebCore)/Modules/mediastream/MediaDevices.idl \
    122123        $(WebCore)/Modules/mediastream/MediaStream.idl \
    123124        $(WebCore)/Modules/mediastream/MediaStreamCapabilities.idl \
     
    129130    $(WebCore)/Modules/mediastream/MediaTrackConstraints.idl \
    130131    $(WebCore)/Modules/mediastream/MediaTrackConstraintSet.idl \
     132    $(WebCore)/Modules/mediastream/NavigatorMediaDevices.idl \
    131133    $(WebCore)/Modules/mediastream/NavigatorUserMedia.idl \
    132134    $(WebCore)/Modules/mediastream/NavigatorUserMediaError.idl \
  • trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp

    r181371 r182275  
    4545#include "MediaStream.h"
    4646#include "MediaStreamPrivate.h"
     47#include "NavigatorUserMediaErrorCallback.h"
     48#include "NavigatorUserMediaSuccessCallback.h"
    4749#include "RealtimeMediaSourceCenter.h"
    4850#include "SecurityOrigin.h"
     
    7577    ASSERT(successCallback);
    7678
     79    auto resolveCallback = [successCallback](RefPtr<MediaStream> stream) mutable {
     80        successCallback->handleEvent(stream.get());
     81    };
     82    auto rejectCallback = [errorCallback](RefPtr<NavigatorUserMediaError> error) mutable {
     83        if (errorCallback)
     84            errorCallback->handleEvent(error.get());
     85    };
     86
     87    return UserMediaRequest::create(context, controller, options, WTF::move(resolveCallback), WTF::move(rejectCallback), ec);
     88}
     89
     90PassRefPtr<UserMediaRequest> UserMediaRequest::create(ScriptExecutionContext* context, UserMediaController* controller, const Dictionary& options, MediaDevices::ResolveCallback resolveCallback, MediaDevices::RejectCallback rejectCallback, ExceptionCode& ec)
     91{
     92    ASSERT(resolveCallback && rejectCallback);
     93
    7794    RefPtr<MediaConstraints> audioConstraints = parseOptions(options, AtomicString("audio", AtomicString::ConstructFromLiteral), ec);
    7895    if (ec)
     
    86103        return nullptr;
    87104
    88     return adoptRef(new UserMediaRequest(context, controller, audioConstraints.release(), videoConstraints.release(), successCallback, errorCallback));
    89 }
    90 
    91 UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
     105    return adoptRef(new UserMediaRequest(context, controller, audioConstraints.release(), videoConstraints.release(), WTF::move(resolveCallback), WTF::move(rejectCallback)));
     106}
     107
     108UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, MediaDevices::ResolveCallback resolveCallback, MediaDevices::RejectCallback rejectCallback)
    92109    : ContextDestructionObserver(context)
    93110    , m_audioConstraints(audioConstraints)
    94111    , m_videoConstraints(videoConstraints)
    95112    , m_controller(controller)
    96     , m_successCallback(successCallback)
    97     , m_errorCallback(errorCallback)
     113    , m_resolveCallback(resolveCallback)
     114    , m_rejectCallback(rejectCallback)
    98115{
    99116}
     
    150167void UserMediaRequest::didCreateStream(PassRefPtr<MediaStreamPrivate> privateStream)
    151168{
    152     if (!m_scriptExecutionContext || !m_successCallback)
     169    if (!m_scriptExecutionContext)
    153170        return;
    154171
     
    162179            track->applyConstraints(protectedThis->m_videoConstraints);
    163180
    164         ASSERT(protectedThis->m_successCallback);
    165         protectedThis->m_successCallback->handleEvent(stream.get());
     181        protectedThis->m_resolveCallback(stream.get());
    166182    });
    167183}
     
    173189        return;
    174190
    175     if (!m_errorCallback)
    176         return;
    177 
    178191    RefPtr<UserMediaRequest> protectedThis(this);
    179192    RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::constraintNotSatisfiedErrorName(), constraintName);
    180193    callOnMainThread([protectedThis, error] {
    181         protectedThis->m_errorCallback->handleEvent(error.get());
     194        protectedThis->m_rejectCallback(error.get());
    182195    });
    183196}
     
    188201        return;
    189202
    190     if (!m_errorCallback)
    191         return;
    192 
    193     RefPtr<UserMediaRequest> protectedThis(this);
     203    RefPtr<UserMediaRequest> protectedThis(this);
     204    // FIXME: Replace NavigatorUserMediaError with MediaStreamError (see bug 143335)
    194205    RefPtr<NavigatorUserMediaError> error = NavigatorUserMediaError::create(NavigatorUserMediaError::permissionDeniedErrorName(), emptyString());
    195206    callOnMainThread([protectedThis, error] {
    196         protectedThis->m_errorCallback->handleEvent(error.get());
     207        protectedThis->m_rejectCallback(error.get());
    197208    });
    198209}
  • trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h

    r181152 r182275  
    3737
    3838#include "ActiveDOMObject.h"
     39#include "MediaDevices.h"
    3940#include "MediaStreamCreationClient.h"
    40 #include "NavigatorUserMediaErrorCallback.h"
    41 #include "NavigatorUserMediaSuccessCallback.h"
    42 #include "RealtimeMediaSource.h"
    4341#include <wtf/PassRefPtr.h>
    4442#include <wtf/RefCounted.h>
     
    5250class MediaConstraints;
    5351class MediaStreamPrivate;
     52class NavigatorUserMediaErrorCallback;
     53class NavigatorUserMediaSuccessCallback;
    5454class UserMediaController;
    5555class SecurityOrigin;
     
    6060public:
    6161    static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaController*, const Dictionary& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>, ExceptionCode&);
     62    static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaController*, const Dictionary& options, MediaDevices::ResolveCallback, MediaDevices::RejectCallback, ExceptionCode&);
    6263    ~UserMediaRequest();
    6364
     
    7273
    7374private:
    74     UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
     75    UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, MediaDevices::ResolveCallback, MediaDevices::RejectCallback);
    7576
    7677    // MediaStreamCreationClient
     
    8990    UserMediaController* m_controller;
    9091
    91     RefPtr<NavigatorUserMediaSuccessCallback> m_successCallback;
    92     RefPtr<NavigatorUserMediaErrorCallback> m_errorCallback;
     92    MediaDevices::ResolveCallback m_resolveCallback;
     93    MediaDevices::RejectCallback m_rejectCallback;
    9394};
    9495
  • trunk/Source/WebCore/PlatformGTK.cmake

    r182232 r182275  
    648648    Modules/mediasource/VideoPlaybackQuality.idl
    649649
     650    Modules/mediastream/MediaDevices.idl
     651    Modules/mediastream/NavigatorMediaDevices.idl
     652
    650653    Modules/quota/StorageInfo.idl
    651654    Modules/quota/StorageQuota.idl
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r182266 r182275  
    21922192                5DFE8F570D16477C0076E937 /* ScheduledAction.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA378BB0D15F64200B793D6 /* ScheduledAction.h */; settings = {ATTRIBUTES = (Private, ); }; };
    21932193                5DFEBAB718592B6D00C75BEB /* WebKitAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DFEBAB618592B6D00C75BEB /* WebKitAvailability.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2194                5EA725D11ACABD3800EAD17B /* JSMediaDevicesCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EA725D01ACABD2700EAD17B /* JSMediaDevicesCustom.cpp */; };
     2195                5EA725D21ACABD4700EAD17B /* MediaDevices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EA725CD1ACABCD900EAD17B /* MediaDevices.cpp */; };
     2196                5EA725D31ACABD4700EAD17B /* MediaDevices.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA725CE1ACABCD900EAD17B /* MediaDevices.h */; };
     2197                5EA725D51ACABD5700EAD17B /* NavigatorMediaDevices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EA725CA1ACABCB500EAD17B /* NavigatorMediaDevices.cpp */; };
     2198                5EA725D61ACABD5700EAD17B /* NavigatorMediaDevices.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA725CB1ACABCB500EAD17B /* NavigatorMediaDevices.h */; };
    21942199                5F2DBBE9178E3C8100141486 /* CertificateInfoMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5F2DBBE7178E332D00141486 /* CertificateInfoMac.mm */; };
    21952200                5FA904CA178E61F5004C8A2D /* CertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F2DBBE8178E336900141486 /* CertificateInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    94009405                5DB1BC6910715A6400EFAA49 /* TransformSourceLibxslt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformSourceLibxslt.cpp; sourceTree = "<group>"; };
    94019406                5DFEBAB618592B6D00C75BEB /* WebKitAvailability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitAvailability.h; sourceTree = "<group>"; };
     9407                5EA725CA1ACABCB500EAD17B /* NavigatorMediaDevices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigatorMediaDevices.cpp; sourceTree = "<group>"; };
     9408                5EA725CB1ACABCB500EAD17B /* NavigatorMediaDevices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorMediaDevices.h; sourceTree = "<group>"; };
     9409                5EA725CC1ACABCB500EAD17B /* NavigatorMediaDevices.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorMediaDevices.idl; sourceTree = "<group>"; };
     9410                5EA725CD1ACABCD900EAD17B /* MediaDevices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaDevices.cpp; sourceTree = "<group>"; };
     9411                5EA725CE1ACABCD900EAD17B /* MediaDevices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaDevices.h; sourceTree = "<group>"; };
     9412                5EA725CF1ACABCD900EAD17B /* MediaDevices.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaDevices.idl; sourceTree = "<group>"; };
     9413                5EA725D01ACABD2700EAD17B /* JSMediaDevicesCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSMediaDevicesCustom.cpp; path = bindings/js/JSMediaDevicesCustom.cpp; sourceTree = SOURCE_ROOT; };
    94029414                5F2DBBE7178E332D00141486 /* CertificateInfoMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CertificateInfoMac.mm; sourceTree = "<group>"; };
    94039415                5F2DBBE8178E336900141486 /* CertificateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CertificateInfo.h; sourceTree = "<group>"; };
     
    1455014562                                07221B4B17CEC32700848E51 /* MediaConstraintsImpl.h */,
    1455114563                                07C59B6517F784BA000FBCBB /* MediaSourceStates.cpp */,
     14564                                5EA725D01ACABD2700EAD17B /* JSMediaDevicesCustom.cpp */,
     14565                                5EA725CD1ACABCD900EAD17B /* MediaDevices.cpp */,
     14566                                5EA725CE1ACABCD900EAD17B /* MediaDevices.h */,
     14567                                5EA725CF1ACABCD900EAD17B /* MediaDevices.idl */,
     14568                                5EA725CA1ACABCB500EAD17B /* NavigatorMediaDevices.cpp */,
     14569                                5EA725CB1ACABCB500EAD17B /* NavigatorMediaDevices.h */,
     14570                                5EA725CC1ACABCB500EAD17B /* NavigatorMediaDevices.idl */,
    1455214571                                07C59B6617F784BA000FBCBB /* MediaSourceStates.h */,
    1455314572                                07C59B6717F784BA000FBCBB /* MediaSourceStates.idl */,
     
    2547825497                                B2FA3DC50AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicSmoothRel.h in Headers */,
    2547925498                                B2FA3DC70AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticAbs.h in Headers */,
     25499                                5EA725D31ACABD4700EAD17B /* MediaDevices.h in Headers */,
    2548025500                                B2FA3DC90AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticRel.h in Headers */,
    2548125501                                B2FA3DCB0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoQuadraticSmoothAbs.h in Headers */,
     
    2686526885                                C375D7FE16639519006184AB /* TypeAhead.h in Headers */,
    2686626886                                E46A2B1C17CA65B9000DBCD8 /* TypedElementDescendantIterator.h in Headers */,
     26887                                5EA725D61ACABD5700EAD17B /* NavigatorMediaDevices.h in Headers */,
    2686726888                                37C28A6810F659CC008C7813 /* TypesettingFeatures.h in Headers */,
    2686826889                                93309E1A099E64920056E581 /* TypingCommand.h in Headers */,
     
    2952029541                                9392F1440AD185FE00691BD4 /* RenderCounter.cpp in Sources */,
    2952129542                                BCEA486D097D93020094C9E4 /* RenderDeprecatedFlexibleBox.cpp in Sources */,
     29543                                5EA725D51ACABD5700EAD17B /* NavigatorMediaDevices.cpp in Sources */,
    2952229544                                D302754912A5FE84004BD828 /* RenderDetailsMarker.cpp in Sources */,
    2952329545                                9B32CDAA13DF7FA900F34D13 /* RenderedPosition.cpp in Sources */,
     
    2958329605                                A871DFE20A15376B00B12A68 /* RenderReplaced.cpp in Sources */,
    2958429606                                BCA846D60DC67A350026C309 /* RenderReplica.cpp in Sources */,
     29607                                5EA725D21ACABD4700EAD17B /* MediaDevices.cpp in Sources */,
    2958529608                                1479FAED109AE37500DED655 /* RenderRuby.cpp in Sources */,
    2958629609                                1479FAEF109AE37500DED655 /* RenderRubyBase.cpp in Sources */,
     
    2972729750                                0FA88EBD16A8D1BD00F99984 /* ScrollingStateFrameScrollingNodeMac.mm in Sources */,
    2972829751                                931CBD0C161A44E900E4C874 /* ScrollingStateNode.cpp in Sources */,
     29752                                5EA725D11ACABD3800EAD17B /* JSMediaDevicesCustom.cpp in Sources */,
    2972929753                                93EF7D551954F13900DFB71D /* ScrollingStateNode.mm in Sources */,
    2973029754                                0FEA3E83191B31BF000F1B55 /* ScrollingStateOverflowScrollingNode.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.