Skip to content

Commit

Permalink
Text tracks are not visible in fullscreen
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=254473
rdar://107230116

Reviewed by Jer Noble.

When the setting "GPU Process: Block Media Layer Re-hosting" is enabled, text tracks are not visible
in fullscreen, since this depends on the ability to create a CA remote layer hosting context in the
WebProcess. This patch works around the requirement to create a CA context in the WebContent process
by sending the caption bitmaps to the UI process, where they are rendered into a CA layer, which is
inserted into the fullscreen CA layer tree. The CA layer tree in the WebContent process is still
being created, since there is some amount of caption code that depends on this in order to get the
caption bounds correct. This patch also sets the flag "GPU Process: Block Media Layer Re-hosting" to
true, which is required to be able to block CARenderServer in the WebContent process' sandbox.
Layout test runs on iOS simulator on the bots showed some flaky timeouts of the test
webrtc/video-rotation.html. Looking at test history, this test has already been flaky on simulator.
This patch is about captions in fullscreen, so I don't think it will affect this test, although it
cannot be ruled out. I marked the test as flaky. This is being tracked in webkit.org/b/254872.

* LayoutTests/platform/ios-simulator-wk2/TestExpectations:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationIfNeeded):
* Source/WebCore/platform/graphics/TextTrackRepresentation.cpp:
(WebCore::TextTrackRepresentation::create):
* Source/WebCore/platform/graphics/TextTrackRepresentation.h:
* Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
* Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:
(WebCore::TextTrackRepresentation::create):
(WebCore::TextTrackRepresentationCocoa::representationFactory):
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h:
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::textTrackRepresentationUpdate):
(VideoFullscreenInterfaceAVKit::textTrackRepresentationSetContentsScale):
(VideoFullscreenInterfaceAVKit::textTrackRepresentationSetHidden):
(VideoFullscreenInterfaceAVKit::captionsLayer):
(VideoFullscreenInterfaceAVKit::setCaptionsFrame):
(VideoFullscreenInterfaceAVKit::setupCaptionsLayer):
(VideoFullscreenInterfaceAVKit::removeCaptionsLayer):
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenManagerProxy::createLayerHostViewWithID):
(WebKit::VideoFullscreenManagerProxy::textTrackRepresentationUpdate):
(WebKit::VideoFullscreenManagerProxy::textTrackRepresentationSetContentsScale):
(WebKit::VideoFullscreenManagerProxy::textTrackRepresentationSetHidden):
(WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
(WebKit::VideoFullscreenManagerProxy::setVideoLayerFrame):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h:
(WebKit::VideoFullscreenInterfaceContext::rootLayer const):
(WebKit::VideoFullscreenInterfaceContext::setRootLayer):
* Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::createModelAndInterface):
(WebKit::VideoFullscreenManager::ensureModelAndInterface):
(WebKit::VideoFullscreenManager::setupRemoteLayerHosting):
(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::VideoFullscreenManager::requestVideoContentLayer):
(WebKit::VideoFullscreenManager::didCleanupFullscreen):
(WebKit::VideoFullscreenManager::setVideoLayerFrameFenced):
(WebKit::VideoFullscreenManager::updateTextTrackRepresentationForVideoElement):
(WebKit::VideoFullscreenManager::setTextTrackRepresentationContentScaleForVideoElement):
(WebKit::VideoFullscreenManager::setTextTrackRepresentationIsHiddenForVideoElement):

Canonical link: https://commits.webkit.org/262487@main
  • Loading branch information
pvollan committed Apr 2, 2023
1 parent 3050026 commit f40d483
Show file tree
Hide file tree
Showing 18 changed files with 378 additions and 44 deletions.
2 changes: 2 additions & 0 deletions LayoutTests/platform/ios-simulator-wk2/TestExpectations
Expand Up @@ -164,3 +164,5 @@ webkit.org/b/236926 webrtc/vp9-profile2.html [ Timeout Pass ]
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/adopt-from-image-document.html [ Pass ImageOnlyFailure ]

webkit.org/b/242748 [ Release arm64 ] css3/color-filters/svg/color-filter-inline-svg.html [ ImageOnlyFailure ]

webkit.org/b/254872 webrtc/video-rotation.html [ Pass Timeout ]
3 changes: 1 addition & 2 deletions Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
Expand Up @@ -780,8 +780,7 @@ BlockMediaLayerRehostingInWebContentProcess:
WebKitLegacy:
default: false
WebKit:
"PLATFORM(MAC)": true
default: false
default: true
WebCore:
default: false

Expand Down
2 changes: 2 additions & 0 deletions Source/WebCore/WebCore.xcodeproj/project.pbxproj
Expand Up @@ -5592,6 +5592,7 @@
E35B8C6228DD204100293D90 /* LoadableImportMap.h in Headers */ = {isa = PBXBuildFile; fileRef = E35B8C5E28DD202D00293D90 /* LoadableImportMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
E35B907F23F60A50000011FF /* LocalizedDeviceModel.h in Headers */ = {isa = PBXBuildFile; fileRef = E35B907C23F60677000011FF /* LocalizedDeviceModel.h */; settings = {ATTRIBUTES = (Private, ); }; };
E364321C25D37A6700F90E2A /* ModuleScriptLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = E364321A25D37A6600F90E2A /* ModuleScriptLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
E36A00E429CF7B8600AC4E8A /* TextTrackRepresentationCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 526724F21CB2FDF60075974D /* TextTrackRepresentationCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; };
E36D701F27B7200C006531B7 /* AttachmentElementClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E36D701B27B70B23006531B7 /* AttachmentElementClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
E36D702027B72013006531B7 /* EmptyAttachmentElementClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E36D701E27B71F04006531B7 /* EmptyAttachmentElementClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
E377FE4D1DADE16500CDD025 /* NodeConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D049931DADC04500718F3C /* NodeConstants.h */; settings = {ATTRIBUTES = (Private, ); }; };
Expand Down Expand Up @@ -40186,6 +40187,7 @@
B1AD4E7413A12A4600846B27 /* TextTrackLoader.h in Headers */,
CD8B5A49180E138B008B8E65 /* TextTrackMediaSource.h in Headers */,
1DF7E81F251A9E0600DB8F61 /* TextTrackRepresentation.h in Headers */,
E36A00E429CF7B8600AC4E8A /* TextTrackRepresentationCocoa.h in Headers */,
BE0787A829B2279E0067473E /* TextTransform.h in Headers */,
1C73A7132185757E004CCEA5 /* TextUnderlineOffset.h in Headers */,
29FAF4B6195AB08900A522DC /* TextUndoInsertionMarkupMac.h in Headers */,
Expand Down
Expand Up @@ -298,7 +298,7 @@ void MediaControlTextTrackContainerElement::updateTextTrackRepresentationIfNeede
if (!m_textTrackRepresentation) {
ALWAYS_LOG(LOGIDENTIFIER);

m_textTrackRepresentation = TextTrackRepresentation::create(*this);
m_textTrackRepresentation = TextTrackRepresentation::create(*this, *m_mediaElement);
if (document().page())
m_textTrackRepresentation->setContentScale(document().page()->deviceScaleFactor());
m_mediaElement->setTextTrackRepresentation(m_textTrackRepresentation.get());
Expand Down
Expand Up @@ -44,7 +44,7 @@ class NullTextTrackRepresentation : public TextTrackRepresentation {

#if !(PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE)))

std::unique_ptr<TextTrackRepresentation> TextTrackRepresentation::create(TextTrackRepresentationClient&)
std::unique_ptr<TextTrackRepresentation> TextTrackRepresentation::create(TextTrackRepresentationClient&, HTMLMediaElement&)
{
return makeUnique<NullTextTrackRepresentation>();
}
Expand Down
3 changes: 2 additions & 1 deletion Source/WebCore/platform/graphics/TextTrackRepresentation.h
Expand Up @@ -32,6 +32,7 @@

namespace WebCore {

class HTMLMediaElement;
class Image;
class IntRect;

Expand All @@ -46,7 +47,7 @@ class TextTrackRepresentationClient {
class TextTrackRepresentation {
WTF_MAKE_FAST_ALLOCATED;
public:
static std::unique_ptr<TextTrackRepresentation> create(TextTrackRepresentationClient&);
static std::unique_ptr<TextTrackRepresentation> create(TextTrackRepresentationClient&, HTMLMediaElement&);

virtual ~TextTrackRepresentation() = default;

Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2012 Apple Inc. All rights reserved.
* Copyright (C) 2012-2023 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Expand All @@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef TextTrackRepresentationCocoa_h
#define TextTrackRepresentationCocoa_h
#pragma once

#if (PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))) && ENABLE(VIDEO)

Expand All @@ -37,30 +36,37 @@

namespace WebCore {

class TextTrackRepresentationCocoa final : public TextTrackRepresentation, public CanMakeWeakPtr<TextTrackRepresentationCocoa, WeakPtrFactoryInitialization::Eager> {
class HTMLMediaElement;

class TextTrackRepresentationCocoa : public TextTrackRepresentation, public CanMakeWeakPtr<TextTrackRepresentationCocoa, WeakPtrFactoryInitialization::Eager> {
public:
explicit TextTrackRepresentationCocoa(TextTrackRepresentationClient&);
virtual ~TextTrackRepresentationCocoa();
WEBCORE_EXPORT explicit TextTrackRepresentationCocoa(TextTrackRepresentationClient&);
WEBCORE_EXPORT virtual ~TextTrackRepresentationCocoa();

TextTrackRepresentationClient& client() const { return m_client; }

PlatformLayer* platformLayer() final { return m_layer.get(); }

IntRect bounds() const final;
WEBCORE_EXPORT IntRect bounds() const override;
void boundsChanged();

private:
void update() final;
void setContentScale(float) final;
void setHidden(bool) const final;
using TextTrackRepresentationFactory = WTF::Function<std::unique_ptr<TextTrackRepresentation>(TextTrackRepresentationClient&, HTMLMediaElement&)>;

WEBCORE_EXPORT static TextTrackRepresentationFactory& representationFactory();

protected:
// TextTrackRepresentation
WEBCORE_EXPORT void update() override;
WEBCORE_EXPORT void setContentScale(float) override;
WEBCORE_EXPORT void setHidden(bool) const override;

TextTrackRepresentationClient& m_client;

private:
RetainPtr<CALayer> m_layer;
RetainPtr<WebCoreTextTrackRepresentationCocoaHelper> m_delegate;
};

}

#endif // (PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))) && ENABLE(VIDEO)

#endif // TextTrackRepresentationCocoa_h
Expand Up @@ -107,11 +107,19 @@ - (id)actionForLayer:(CALayer *)layer forKey:(NSString *)event

namespace WebCore {

std::unique_ptr<TextTrackRepresentation> TextTrackRepresentation::create(TextTrackRepresentationClient& client)
std::unique_ptr<TextTrackRepresentation> TextTrackRepresentation::create(TextTrackRepresentationClient& client, HTMLMediaElement& mediaElement)
{
if (TextTrackRepresentationCocoa::representationFactory())
return TextTrackRepresentationCocoa::representationFactory()(client, mediaElement);
return makeUnique<TextTrackRepresentationCocoa>(client);
}

TextTrackRepresentationCocoa::TextTrackRepresentationFactory& TextTrackRepresentationCocoa::representationFactory()
{
static NeverDestroyed<TextTrackRepresentationFactory> factory;
return factory.get();
}

TextTrackRepresentationCocoa::TextTrackRepresentationCocoa(TextTrackRepresentationClient& client)
: m_client(client)
, m_layer(adoptNS([[CALayer alloc] init]))
Expand Down
12 changes: 12 additions & 0 deletions Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h
Expand Up @@ -31,6 +31,7 @@
#include "EventListener.h"
#include "HTMLMediaElementEnums.h"
#include "MediaPlayerIdentifier.h"
#include "PlatformImage.h"
#include "PlatformLayer.h"
#include "PlaybackSessionInterfaceAVKit.h"
#include "VideoFullscreenModel.h"
Expand Down Expand Up @@ -162,6 +163,15 @@ class VideoFullscreenInterfaceAVKit final
WEBCORE_EXPORT AVPlayerViewController *avPlayerViewController() const;
WebAVPlayerController *playerController() const;

WEBCORE_EXPORT void textTrackRepresentationUpdate(PlatformImagePtr textTrack);
WEBCORE_EXPORT void textTrackRepresentationSetContentsScale(float scale);
WEBCORE_EXPORT void textTrackRepresentationSetHidden(bool hidden);

WEBCORE_EXPORT CALayer* captionsLayer();
WEBCORE_EXPORT void setCaptionsFrame(const CGRect&);
WEBCORE_EXPORT void setupCaptionsLayer(CALayer* parent, const WebCore::FloatSize&);
WEBCORE_EXPORT void removeCaptionsLayer();

private:
WEBCORE_EXPORT VideoFullscreenInterfaceAVKit(PlaybackSessionInterfaceAVKit&);

Expand Down Expand Up @@ -236,6 +246,8 @@ class VideoFullscreenInterfaceAVKit final
bool m_shouldIgnoreAVKitCallbackAboutExitFullscreenReason { false };
bool m_enteringPictureInPicture { false };
bool m_exitingPictureInPicture { false };

RetainPtr<CALayer> m_captionsLayer;
};

}
Expand Down
46 changes: 46 additions & 0 deletions Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
Expand Up @@ -1533,6 +1533,52 @@ - (void)removeFromParentViewController
return hasMode(WebCore::HTMLMediaElementEnums::VideoFullscreenModePictureInPicture) && [playerController() isPlaying];
}

void VideoFullscreenInterfaceAVKit::textTrackRepresentationUpdate(PlatformImagePtr textTrack)
{
[m_captionsLayer setContents:(__bridge id)textTrack.get()];
}

void VideoFullscreenInterfaceAVKit::textTrackRepresentationSetContentsScale(float scale)
{
[m_captionsLayer setContentsScale:scale];
}

void VideoFullscreenInterfaceAVKit::textTrackRepresentationSetHidden(bool hidden)
{
[m_captionsLayer setHidden:hidden];
}

CALayer *VideoFullscreenInterfaceAVKit::captionsLayer()
{
if (!m_captionsLayer)
m_captionsLayer = adoptNS([[CALayer alloc] init]);
return m_captionsLayer.get();
}

void VideoFullscreenInterfaceAVKit::setCaptionsFrame(const CGRect& frame)
{
[captionsLayer() setFrame:frame];
}

void VideoFullscreenInterfaceAVKit::setupCaptionsLayer(CALayer* parent, const WebCore::FloatSize& initialSize)
{
[captionsLayer() removeFromSuperlayer];
[parent addSublayer:captionsLayer()];

[CATransaction begin];
[CATransaction setDisableActions:YES];
captionsLayer().zPosition = FLT_MAX;
[captionsLayer() setAnchorPoint:CGPointZero];
[captionsLayer() setBounds:CGRectMake(0, 0, initialSize.width(), initialSize.height())];
[CATransaction commit];
}

void VideoFullscreenInterfaceAVKit::removeCaptionsLayer()
{
[m_captionsLayer removeFromSuperlayer];
m_captionsLayer = nullptr;
}

static std::optional<bool> isPictureInPictureSupported;

void WebCore::setSupportsPictureInPicture(bool isSupported)
Expand Down
3 changes: 3 additions & 0 deletions Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
Expand Up @@ -213,6 +213,9 @@ class VideoFullscreenManagerProxy : public RefCounted<VideoFullscreenManagerProx
void preparedToExitFullscreen(PlaybackSessionContextIdentifier);
void exitFullscreenWithoutAnimationToMode(PlaybackSessionContextIdentifier, WebCore::HTMLMediaElementEnums::VideoFullscreenMode);
void setPlayerIdentifier(PlaybackSessionContextIdentifier, std::optional<WebCore::MediaPlayerIdentifier>);
void textTrackRepresentationUpdate(PlaybackSessionContextIdentifier, const ShareableBitmapHandle& textTrack);
void textTrackRepresentationSetContentsScale(PlaybackSessionContextIdentifier, float scale);
void textTrackRepresentationSetHidden(PlaybackSessionContextIdentifier, bool hidden);

// Messages to VideoFullscreenManager
void requestFullscreenMode(PlaybackSessionContextIdentifier, WebCore::HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia = false);
Expand Down
Expand Up @@ -36,5 +36,9 @@ messages -> VideoFullscreenManagerProxy {
PreparedToReturnToInline(WebKit::PlaybackSessionContextIdentifier contextId, bool visible, WebCore::FloatRect inlineRect)
PreparedToExitFullscreen(WebKit::PlaybackSessionContextIdentifier contextId)
ExitFullscreenWithoutAnimationToMode(WebKit::PlaybackSessionContextIdentifier contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode videoFullscreenMode)

TextTrackRepresentationUpdate(WebKit::PlaybackSessionContextIdentifier contextId, WebKit::ShareableBitmapHandle textTrack)
TextTrackRepresentationSetContentsScale(WebKit::PlaybackSessionContextIdentifier contextId, float scale)
TextTrackRepresentationSetHidden(WebKit::PlaybackSessionContextIdentifier contextId, bool hidden)
}
#endif
36 changes: 36 additions & 0 deletions Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm
Expand Up @@ -598,6 +598,11 @@ - (BOOL)prefersStatusBarHidden
}
[view layer].frame = CGRectMake(0, 0, initialSize.width(), initialSize.height());
[view setContextID:videoLayerID];

#if PLATFORM(IOS_FAMILY)
interface->setupCaptionsLayer([view layer], initialSize);
#endif

return view;
}

Expand Down Expand Up @@ -855,6 +860,32 @@ - (BOOL)prefersStatusBarHidden
ensureInterface(contextId).preparedToExitFullscreen();
}

void VideoFullscreenManagerProxy::textTrackRepresentationUpdate(PlaybackSessionContextIdentifier contextId, const ShareableBitmapHandle& textTrack)
{
#if PLATFORM(IOS_FAMILY)
auto bitmap = ShareableBitmap::create(textTrack);
if (!bitmap)
return;

auto platformImage = bitmap->createPlatformImage();
ensureInterface(contextId).textTrackRepresentationUpdate(platformImage);
#endif
}

void VideoFullscreenManagerProxy::textTrackRepresentationSetContentsScale(PlaybackSessionContextIdentifier contextId, float scale)
{
#if PLATFORM(IOS_FAMILY)
ensureInterface(contextId).textTrackRepresentationSetContentsScale(scale);
#endif
}

void VideoFullscreenManagerProxy::textTrackRepresentationSetHidden(PlaybackSessionContextIdentifier contextId, bool hidden)
{
#if PLATFORM(IOS_FAMILY)
ensureInterface(contextId).textTrackRepresentationSetHidden(hidden);
#endif
}

#pragma mark Messages to VideoFullscreenManager

void VideoFullscreenManagerProxy::callCloseCompletionHandlers()
Expand Down Expand Up @@ -966,6 +997,9 @@ - (BOOL)prefersStatusBarHidden
auto& [model, interface] = ensureModelAndInterface(contextId);

[model->layerHostView() removeFromSuperview];
#if PLATFORM(IOS_FAMILY)
interface->removeCaptionsLayer();
#endif
if (auto playerLayer = model->playerLayer()) {
// Return the video layer to the player layer
auto videoView = model->layerHostView();
Expand All @@ -986,7 +1020,9 @@ - (BOOL)prefersStatusBarHidden
void VideoFullscreenManagerProxy::setVideoLayerFrame(PlaybackSessionContextIdentifier contextId, WebCore::FloatRect frame)
{
#if PLATFORM(IOS_FAMILY)
auto& [model, interface] = ensureModelAndInterface(contextId);
auto fenceSendRight = MachSendRight::adopt([UIWindow _synchronizeDrawingAcrossProcesses]);
interface->setCaptionsFrame(CGRectMake(0, 0, frame.width(), frame.height()));
#else
MachSendRight fenceSendRight;
if (DrawingAreaProxy* drawingArea = m_page->drawingArea())
Expand Down
8 changes: 8 additions & 0 deletions Source/WebKit/WebKit.xcodeproj/project.pbxproj
Expand Up @@ -2113,6 +2113,7 @@
E1E552C516AE065F004ED653 /* SandboxInitializationParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = E1E552C316AE065E004ED653 /* SandboxInitializationParameters.h */; };
E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EE53DC11F8CF9F00CCBEE4 /* InjectedBundlePageEditorClient.h */; };
E326E357284E580E00157372 /* AuxiliaryProcessProxyCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = E326E356284E580E00157372 /* AuxiliaryProcessProxyCocoa.mm */; };
E36A00E329CF7AC000AC4E8A /* TextTrackRepresentationCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = E36A00E229CF7AC000AC4E8A /* TextTrackRepresentationCocoa.mm */; };
E36FF00327F36FBD004BE21A /* SandboxStateVariables.h in Headers */ = {isa = PBXBuildFile; fileRef = E36FF00127F36FBD004BE21A /* SandboxStateVariables.h */; };
E3816B3D27E2463A005EAFC0 /* WebMockContentFilterManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3816B3B27E24639005EAFC0 /* WebMockContentFilterManager.cpp */; };
E3816B3E27E2463A005EAFC0 /* WebMockContentFilterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E3816B3C27E24639005EAFC0 /* WebMockContentFilterManager.h */; };
Expand All @@ -2125,6 +2126,7 @@
E38A1FC023A551BF00D2374F /* UserInterfaceIdiom.mm in Sources */ = {isa = PBXBuildFile; fileRef = E38A1FBF23A551BF00D2374F /* UserInterfaceIdiom.mm */; };
E39628DD23960CC600658ECD /* WebDeviceOrientationUpdateProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E39628DB23960CC500658ECD /* WebDeviceOrientationUpdateProvider.h */; };
E39628DE23960CC600658ECD /* WebDeviceOrientationUpdateProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E39628DC23960CC600658ECD /* WebDeviceOrientationUpdateProvider.cpp */; };
E3C6727329D4A3AD00AD4452 /* TextTrackRepresentationCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = E36A00E129CF4EBA00AC4E8A /* TextTrackRepresentationCocoa.h */; };
E3CAAA442413279900CED2E2 /* AccessibilitySupportSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = E3CAAA432413278A00CED2E2 /* AccessibilitySupportSPI.h */; };
E413F59D1AC1ADC400345360 /* NetworkCacheEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = E413F59B1AC1ADB600345360 /* NetworkCacheEntry.h */; };
E42E06101AA7523B00B11699 /* NetworkCacheIOChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = E42E060B1AA7440D00B11699 /* NetworkCacheIOChannel.h */; };
Expand Down Expand Up @@ -7028,6 +7030,8 @@
E350A7C52934F1C100A06C29 /* common.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = common.sb; sourceTree = "<group>"; };
E350A7C82934F75F00A06C29 /* common.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = common.sb; sourceTree = "<group>"; };
E350A7DF29364D3800A06C29 /* util.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = util.sb; sourceTree = "<group>"; };
E36A00E129CF4EBA00AC4E8A /* TextTrackRepresentationCocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextTrackRepresentationCocoa.h; sourceTree = "<group>"; };
E36A00E229CF7AC000AC4E8A /* TextTrackRepresentationCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = TextTrackRepresentationCocoa.mm; sourceTree = "<group>"; };
E36D701A27B709ED006531B7 /* WebAttachmentElementClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebAttachmentElementClient.h; sourceTree = "<group>"; };
E36D701D27B718EF006531B7 /* WebAttachmentElementClient.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebAttachmentElementClient.cpp; sourceTree = "<group>"; };
E36FF00127F36FBD004BE21A /* SandboxStateVariables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SandboxStateVariables.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -11376,6 +11380,8 @@
416008B125DA86B900E892FE /* RemoteRealtimeMediaSourceProxy.h */,
418FCBE3271049DB00F96ECA /* RemoteRealtimeVideoSource.cpp */,
418FCBE4271049DC00F96ECA /* RemoteRealtimeVideoSource.h */,
E36A00E129CF4EBA00AC4E8A /* TextTrackRepresentationCocoa.h */,
E36A00E229CF7AC000AC4E8A /* TextTrackRepresentationCocoa.mm */,
CD491B051E70D05F00009066 /* UserMediaCaptureManager.cpp */,
CD491B061E70D05F00009066 /* UserMediaCaptureManager.h */,
CD491B0A1E732D1200009066 /* UserMediaCaptureManager.messages.in */,
Expand Down Expand Up @@ -14632,6 +14638,7 @@
53CFBBC82224D1B500266546 /* TextCheckerCompletion.h in Headers */,
1A5E4DA412D3BD3D0099A2BB /* TextCheckerState.h in Headers */,
CE1A0BD71A48E6C60054EF74 /* TextInputSPI.h in Headers */,
E3C6727329D4A3AD00AD4452 /* TextTrackRepresentationCocoa.h in Headers */,
1AAF263914687C39004A1E8A /* TiledCoreAnimationDrawingArea.h in Headers */,
1AF05D8714688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h in Headers */,
F48570A32644BEC500C05F71 /* Timeout.h in Headers */,
Expand Down Expand Up @@ -16981,6 +16988,7 @@
93D6B782254CCCF40058DD3A /* SpeechRecognitionServerMessageReceiver.cpp in Sources */,
1A334DED16DE8F88006A8E38 /* StorageAreaMapMessageReceiver.cpp in Sources */,
5CAAA85029BFBE99003340AE /* TCCSoftLink.mm in Sources */,
E36A00E329CF7AC000AC4E8A /* TextTrackRepresentationCocoa.mm in Sources */,
2D11B7512126A282006F8878 /* UnifiedSource1-mm.mm in Sources */,
7B9FC5F028ABB557007570E7 /* UnifiedSource1.cpp in Sources */,
2D11B7532126A282006F8878 /* UnifiedSource2-mm.mm in Sources */,
Expand Down

0 comments on commit f40d483

Please sign in to comment.