Skip to content

Commit

Permalink
[MultiRep HEIC] Add scaffolding logic
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=268166
rdar://121669688

Reviewed by Wenson Hsieh.

Add scaffolding for multi-representation HEIC support.

* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::insertMultiRepresentationHEIC):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::isContentRichlyEditable const):
(WebKit::WebViewImpl::insertMultiRepresentationHEIC):
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebMultiRepresentationHEICAttachmentTests.mm: Added.

Canonical link: https://commits.webkit.org/273583@main
  • Loading branch information
pxlcoder committed Jan 26, 2024
1 parent 6defc28 commit 9707cf7
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm
Original file line number Diff line number Diff line change
Expand Up @@ -1057,6 +1057,10 @@ - (BOOL)hasScrolledContentsUnderTitlebar

#endif // HAVE(NSSCROLLVIEW_SEPARATOR_TRACKING_ADAPTER)

#if USE(APPLE_INTERNAL_SDK)
#import <WebKitAdditions/WKWebViewMacAdditionsAfter.mm>
#endif

@end

#pragma mark -
Expand Down
6 changes: 6 additions & 0 deletions Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -914,6 +914,12 @@ static bool exceedsRenderTreeSizeSizeThreshold(uint64_t thresholdSize, uint64_t
}
#endif

#if ENABLE(MULTI_REPRESENTATION_HEIC)
void WebPageProxy::insertMultiRepresentationHEIC(NSData *)
{
}
#endif

void WebPageProxy::replaceSelectionWithPasteboardData(const Vector<String>& types, const IPC::DataReference& data)
{
send(Messages::WebPage::ReplaceSelectionWithPasteboardData(types, data));
Expand Down
5 changes: 5 additions & 0 deletions Source/WebKit/UIProcess/WebPageProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,7 @@ using UserMediaRequestIdentifier = ObjectIdentifier<UserMediaRequestIdentifierTy
OBJC_CLASS AMSUIEngagementTask;
OBJC_CLASS CALayer;
OBJC_CLASS NSArray;
OBJC_CLASS NSData;
OBJC_CLASS NSDictionary;
OBJC_CLASS NSEvent;
OBJC_CLASS NSFileWrapper;
Expand Down Expand Up @@ -1327,6 +1328,10 @@ class WebPageProxy final : public API::ObjectImpl<API::Object::Type::Page>, publ
RefPtr<WebCore::SharedBuffer> dataSelectionForPasteboard(const String& pasteboardType);
void makeFirstResponder();
void assistiveTechnologyMakeFirstResponder();

#if ENABLE(MULTI_REPRESENTATION_HEIC)
void insertMultiRepresentationHEIC(NSData *);
#endif
#endif

void pageScaleFactorDidChange(double);
Expand Down
8 changes: 8 additions & 0 deletions Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,10 @@
#import "PepperUICoreSPI.h"
#endif

#if USE(APPLE_INTERNAL_SDK)
#import <WebKitAdditions/WKContentViewInteractionAdditionsBefore.mm>
#endif

#if HAVE(AVKIT)
#import <pal/spi/cocoa/AVKitSPI.h>
#endif
Expand Down Expand Up @@ -13019,6 +13023,10 @@ - (void)systemDidChangeSelectionForInteraction:(BETextInteraction *)interaction

#endif // USE(BROWSERENGINEKIT)

#if USE(APPLE_INTERNAL_SDK)
#import <WebKitAdditions/WKContentViewInteractionAdditionsAfter.mm>
#endif

@end

@implementation WKContentView (WKTesting)
Expand Down
6 changes: 6 additions & 0 deletions Source/WebKit/UIProcess/mac/WebViewImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -590,6 +590,12 @@ ALLOW_DEPRECATED_DECLARATIONS_END
void characterIndexForPoint(NSPoint, void(^)(NSUInteger));
void typingAttributesWithCompletionHandler(void(^)(NSDictionary<NSString *, id> *));

bool isContentRichlyEditable() const;

#if ENABLE(MULTI_REPRESENTATION_HEIC)
void insertMultiRepresentationHEIC(NSData *);
#endif

void mouseMoved(NSEvent *);
void mouseDown(NSEvent *);
void mouseUp(NSEvent *);
Expand Down
12 changes: 12 additions & 0 deletions Source/WebKit/UIProcess/mac/WebViewImpl.mm
Original file line number Diff line number Diff line change
Expand Up @@ -5986,6 +5986,18 @@ static NSTextAlignment nsTextAlignmentFromTextAlignment(TextAlignment textAlignm
}
}

bool WebViewImpl::isContentRichlyEditable() const
{
return m_page->editorState().isContentRichlyEditable;
}

#if ENABLE(MULTI_REPRESENTATION_HEIC)
void WebViewImpl::insertMultiRepresentationHEIC(NSData *data)
{
m_page->insertMultiRepresentationHEIC(data);
}
#endif

#if ENABLE(WEB_PLAYBACK_CONTROLS_MANAGER)

bool WebViewImpl::isPictureInPictureActive()
Expand Down
1 change: 1 addition & 0 deletions Tools/TestWebKitAPI/SourcesCocoa.txt
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ Tests/WebKitCocoa/WKWebsiteDatastore.mm
Tests/WebKitCocoa/WebContentProcessDidTerminate.mm
Tests/WebKitCocoa/WebCryptoMasterKey.mm
Tests/WebKitCocoa/WebLocks.mm
Tests/WebKitCocoa/WebMultiRepresentationHEICAttachmentTests.mm
Tests/WebKitCocoa/WebProcessKillIDBCleanup.mm
Tests/WebKitCocoa/WebProcessTerminate.mm
Tests/WebKitCocoa/WebPushDaemon.mm
Expand Down
2 changes: 2 additions & 0 deletions Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3447,6 +3447,7 @@
E589183B252BC90A0041DED5 /* DateTimeInputsAccessoryViewTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DateTimeInputsAccessoryViewTests.mm; sourceTree = "<group>"; };
E5AA42F1259128AE00410A3D /* UserInterfaceIdiomUpdate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = UserInterfaceIdiomUpdate.mm; sourceTree = "<group>"; };
E5AA8D1C25151CC60051CC45 /* DateInputTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DateInputTests.mm; sourceTree = "<group>"; };
E5F67D662B637F9200CC30DE /* WebMultiRepresentationHEICAttachmentTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebMultiRepresentationHEICAttachmentTests.mm; sourceTree = "<group>"; };
EB230D3D245E722E00C66AD1 /* IDBCheckpointWAL.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = IDBCheckpointWAL.html; sourceTree = "<group>"; };
EB230D3E245E726300C66AD1 /* IDBCheckpointWAL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IDBCheckpointWAL.mm; sourceTree = "<group>"; };
EB4D320727C045430081A8E4 /* TestNotificationProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TestNotificationProvider.cpp; sourceTree = "<group>"; };
Expand Down Expand Up @@ -4232,6 +4233,7 @@
57A79856224AB34E00A7F6F1 /* WebCryptoMasterKey.mm */,
5C973F5B1F58EF0A00359C27 /* WebGLPolicy.mm */,
46061545275824B400AB613D /* WebLocks.mm */,
E5F67D662B637F9200CC30DE /* WebMultiRepresentationHEICAttachmentTests.mm */,
51714EB61CF8C7A4004723C4 /* WebProcessKillIDBCleanup.mm */,
C1D8EE212028E8E3008EB141 /* WebProcessTerminate.mm */,
5C157A022717C3B100ED5280 /* WebPushDaemon.mm */,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright (C) 2024 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/

#import "config.h"

#if USE(APPLE_INTERNAL_SDK)
#import <WebKitAdditions/WebMultiRepresentationHEICAttachmentTestsAdditions.mm>
#endif

0 comments on commit 9707cf7

Please sign in to comment.