Skip to content

Commit

Permalink
Move remaining ivars from WKWebViewConfiguration to API::PageConfigur…
Browse files Browse the repository at this point in the history
…ation

https://bugs.webkit.org/show_bug.cgi?id=271451
rdar://125216495

Reviewed by Tim Horton.

* Source/WebKit/Shared/API/Cocoa/WKDataDetectorTypesInternal.h:
(toWKDataDetectorTypes):
* Source/WebKit/UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::setRelatedPage):
(API::PageConfiguration::setPageToCloneSessionStorageFrom):
(API::PageConfiguration::alternateWebViewForNavigationGestures const):
(API::PageConfiguration::setAlternateWebViewForNavigationGestures):
* Source/WebKit/UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::dataDetectorTypes const):
(API::PageConfiguration::setDataDetectorTypes):
(API::PageConfiguration::selectionGranularity const):
(API::PageConfiguration::setSelectionGranularity):
(API::PageConfiguration::allowsPictureInPictureMediaPlayback const):
(API::PageConfiguration::setAllowsPictureInPictureMediaPlayback):
(API::PageConfiguration::mediaTypesRequiringUserActionForPlayback const):
(API::PageConfiguration::setMediaTypesRequiringUserActionForPlayback):
(API::PageConfiguration::suppressesIncrementalRendering const):
(API::PageConfiguration::setSuppressesIncrementalRendering):
(API::PageConfiguration::allowsAirPlayForMediaPlayback const):
(API::PageConfiguration::setAllowsAirPlayForMediaPlayback):
(API::PageConfiguration::ignoresViewportScaleLimits const):
(API::PageConfiguration::setIgnoresViewportScaleLimits):
(API::PageConfiguration::userInterfaceDirectionPolicy const):
(API::PageConfiguration::setUserInterfaceDirectionPolicy):
* Source/WebKit/UIProcess/API/Cocoa/APIPageConfigurationCocoa.mm:
(API::PageConfiguration::Data::defaultMediaTypesRequiringUserActionForPlayback):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration selectionGranularity]):
(-[WKWebViewConfiguration setSelectionGranularity:]):
(-[WKWebViewConfiguration setAllowsPictureInPictureMediaPlayback:]):
(-[WKWebViewConfiguration allowsPictureInPictureMediaPlayback]):
(-[WKWebViewConfiguration setIgnoresViewportScaleLimits:]):
(-[WKWebViewConfiguration ignoresViewportScaleLimits]):
(-[WKWebViewConfiguration setDataDetectorTypes:]):
(-[WKWebViewConfiguration dataDetectorTypes]):
(-[WKWebViewConfiguration userInterfaceDirectionPolicy]):
(-[WKWebViewConfiguration setUserInterfaceDirectionPolicy:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration mediaTypesRequiringUserActionForPlayback]):
(-[WKWebViewConfiguration setMediaTypesRequiringUserActionForPlayback:]):
(-[WKWebViewConfiguration suppressesIncrementalRendering]):
(-[WKWebViewConfiguration setSuppressesIncrementalRendering:]):
(-[WKWebViewConfiguration setAllowsAirPlayForMediaPlayback:]):
(-[WKWebViewConfiguration allowsAirPlayForMediaPlayback]):
(-[WKWebViewConfiguration _relatedWebView]):
(-[WKWebViewConfiguration _setRelatedWebView:]):
(-[WKWebViewConfiguration _webViewToCloneSessionStorageFrom]):
(-[WKWebViewConfiguration _setWebViewToCloneSessionStorageFrom:]):
(-[WKWebViewConfiguration _alternateWebViewForNavigationGestures]):
(-[WKWebViewConfiguration _setAlternateWebViewForNavigationGestures:]):

Canonical link: https://commits.webkit.org/276554@main
  • Loading branch information
achristensen07 committed Mar 22, 2024
1 parent 8bf288b commit cf4a98a
Show file tree
Hide file tree
Showing 8 changed files with 219 additions and 80 deletions.
24 changes: 23 additions & 1 deletion Source/WebKit/Shared/API/Cocoa/WKDataDetectorTypesInternal.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

#import "WKDataDetectorTypes.h"

#if PLATFORM(IOS_FAMILY)
#if PLATFORM(IOS_FAMILY) && ENABLE(DATA_DETECTION)

#import <WebCore/DataDetectorType.h>

Expand All @@ -50,4 +50,26 @@ static inline OptionSet<WebCore::DataDetectorType> fromWKDataDetectorTypes(WKDat
return result;
}

static inline WKDataDetectorTypes toWKDataDetectorTypes(OptionSet<WebCore::DataDetectorType> types)
{
WKDataDetectorTypes result { WKDataDetectorTypeNone };
if (types.contains(WebCore::DataDetectorType::PhoneNumber))
result = result | WKDataDetectorTypePhoneNumber;
if (types.contains(WebCore::DataDetectorType::Link))
result = result | WKDataDetectorTypeLink;
if (types.contains(WebCore::DataDetectorType::Address))
result = result | WKDataDetectorTypeAddress;
if (types.contains(WebCore::DataDetectorType::CalendarEvent))
result = result | WKDataDetectorTypeCalendarEvent;
if (types.contains(WebCore::DataDetectorType::TrackingNumber))
result = result | WKDataDetectorTypeTrackingNumber;
if (types.contains(WebCore::DataDetectorType::FlightNumber))
result = result | WKDataDetectorTypeFlightNumber;
if (types.contains(WebCore::DataDetectorType::LookupSuggestion))
result = result | WKDataDetectorTypeLookupSuggestion;

return result;
}


#endif
16 changes: 13 additions & 3 deletions Source/WebKit/UIProcess/API/APIPageConfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ WebPageProxy* PageConfiguration::relatedPage() const
return m_data.relatedPage.get();
}

void PageConfiguration::setRelatedPage(RefPtr<WebPageProxy>&& relatedPage)
void PageConfiguration::setRelatedPage(WeakPtr<WebPageProxy>&& relatedPage)
{
m_data.relatedPage = WTFMove(relatedPage);
}
Expand All @@ -187,9 +187,19 @@ WebPageProxy* PageConfiguration::pageToCloneSessionStorageFrom() const
return m_data.pageToCloneSessionStorageFrom.get();
}

void PageConfiguration::setPageToCloneSessionStorageFrom(WebPageProxy* pageToCloneSessionStorageFrom)
void PageConfiguration::setPageToCloneSessionStorageFrom(WeakPtr<WebPageProxy>&& pageToCloneSessionStorageFrom)
{
m_data.pageToCloneSessionStorageFrom = pageToCloneSessionStorageFrom;
m_data.pageToCloneSessionStorageFrom = WTFMove(pageToCloneSessionStorageFrom);
}

WebPageProxy* PageConfiguration::alternateWebViewForNavigationGestures() const
{
return m_data.alternateWebViewForNavigationGestures.get();
}

void PageConfiguration::setAlternateWebViewForNavigationGestures(WeakPtr<WebPageProxy>&& alternateWebViewForNavigationGestures)
{
m_data.alternateWebViewForNavigationGestures = WTFMove(alternateWebViewForNavigationGestures);
}

WebKit::VisitedLinkStore& PageConfiguration::visitedLinkStore() const
Expand Down
56 changes: 53 additions & 3 deletions Source/WebKit/UIProcess/API/APIPageConfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
OBJC_PROTOCOL(_UIClickInteractionDriving);
#include <pal/system/ios/UserInterfaceIdiom.h>
#include <wtf/RetainPtr.h>
#else
#include <WebCore/UserInterfaceDirectionPolicy.h>
#endif

namespace WebKit {
Expand Down Expand Up @@ -70,6 +72,10 @@ enum class DragLiftDelay : uint8_t {
Medium,
Long
};
enum class SelectionGranularity : bool {
Dynamic,
Character
};
#endif

}
Expand Down Expand Up @@ -114,10 +120,13 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
void setPreferences(RefPtr<WebKit::WebPreferences>&&);

WebKit::WebPageProxy* relatedPage() const;
void setRelatedPage(RefPtr<WebKit::WebPageProxy>&&);
void setRelatedPage(WeakPtr<WebKit::WebPageProxy>&&);

WebKit::WebPageProxy* pageToCloneSessionStorageFrom() const;
void setPageToCloneSessionStorageFrom(WebKit::WebPageProxy*);
void setPageToCloneSessionStorageFrom(WeakPtr<WebKit::WebPageProxy>&&);

WebKit::WebPageProxy* alternateWebViewForNavigationGestures() const;
void setAlternateWebViewForNavigationGestures(WeakPtr<WebKit::WebPageProxy>&&);

WebKit::VisitedLinkStore& visitedLinkStore() const;
void setVisitedLinkStore(RefPtr<WebKit::VisitedLinkStore>&&);
Expand Down Expand Up @@ -152,9 +161,20 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
WebKit::DragLiftDelay dragLiftDelay() const { return m_data.dragLiftDelay; }
void setDragLiftDelay(WebKit::DragLiftDelay delay) { m_data.dragLiftDelay = delay; }

#if ENABLE(DATA_DETECTION)
OptionSet<WebCore::DataDetectorType> dataDetectorTypes() const { return m_data.dataDetectorTypes; }
void setDataDetectorTypes(OptionSet<WebCore::DataDetectorType> types) { m_data.dataDetectorTypes = types; }
#endif

WebKit::SelectionGranularity selectionGranularity() const { return m_data.selectionGranularity; }
void setSelectionGranularity(WebKit::SelectionGranularity granularity) { m_data.selectionGranularity = granularity; }

bool textInteractionGesturesEnabled() const { return m_data.textInteractionGesturesEnabled; }
void setTextInteractionGesturesEnabled(bool enabled) { m_data.textInteractionGesturesEnabled = enabled; }

bool allowsPictureInPictureMediaPlayback() const { return m_data.allowsPictureInPictureMediaPlayback; }
void setAllowsPictureInPictureMediaPlayback(bool allows) { m_data.allowsPictureInPictureMediaPlayback = allows; }

bool longPressActionsEnabled() const { return m_data.longPressActionsEnabled; }
void setLongPressActionsEnabled(bool enabled) { m_data.longPressActionsEnabled = enabled; }

Expand Down Expand Up @@ -195,6 +215,9 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {

bool clientNavigationsRunAtForegroundPriority() const { return m_data.clientNavigationsRunAtForegroundPriority; }
void setClientNavigationsRunAtForegroundPriority(bool value) { m_data.clientNavigationsRunAtForegroundPriority = value; }

uintptr_t mediaTypesRequiringUserActionForPlayback() const { return m_data.mediaTypesRequiringUserActionForPlayback; }
void setMediaTypesRequiringUserActionForPlayback(uintptr_t types) { m_data.mediaTypesRequiringUserActionForPlayback = types; }
#endif

#if ENABLE(APPLICATION_MANIFEST)
Expand Down Expand Up @@ -241,6 +264,15 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
void setHTTPSUpgradeEnabled(bool enabled) { m_data.httpsUpgradeEnabled = enabled; }
bool httpsUpgradeEnabled() const { return m_data.httpsUpgradeEnabled; }

bool suppressesIncrementalRendering() const { return m_data.suppressesIncrementalRendering; }
void setSuppressesIncrementalRendering(bool suppresses) { m_data.suppressesIncrementalRendering = suppresses; }

bool allowsAirPlayForMediaPlayback() const { return m_data.allowsAirPlayForMediaPlayback; }
void setAllowsAirPlayForMediaPlayback(bool allows) { m_data.allowsAirPlayForMediaPlayback = allows; }

bool ignoresViewportScaleLimits() const { return m_data.ignoresViewportScaleLimits; }
void setIgnoresViewportScaleLimits(bool ignores) { m_data.ignoresViewportScaleLimits = ignores; }

#if PLATFORM(MAC)
bool showsURLsInToolTips() const { return m_data.showsURLsInToolTips; }
void setShowsURLsInToolTips(bool shows) { m_data.showsURLsInToolTips = shows; }
Expand All @@ -253,6 +285,9 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {

bool contextMenuQRCodeDetectionEnabled() const { return m_data.contextMenuQRCodeDetectionEnabled; }
void setContextMenuQRCodeDetectionEnabled(bool enabled) { m_data.contextMenuQRCodeDetectionEnabled = enabled; }

WebCore::UserInterfaceDirectionPolicy userInterfaceDirectionPolicy() const { return m_data.userInterfaceDirectionPolicy; }
void setUserInterfaceDirectionPolicy(WebCore::UserInterfaceDirectionPolicy policy) { m_data.userInterfaceDirectionPolicy = policy; }
#endif

#if ENABLE(APPLE_PAY)
Expand Down Expand Up @@ -392,6 +427,9 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
static bool defaultShouldDecidePolicyBeforeLoadingQuickLookPreview();
static WebKit::DragLiftDelay defaultDragLiftDelay();
#endif
#if PLATFORM(COCOA)
uintptr_t defaultMediaTypesRequiringUserActionForPlayback();
#endif

LazyInitializedRef<WebKit::BrowsingContextGroup, createBrowsingContextGroup> browsingContextGroup;
LazyInitializedRef<WebKit::WebProcessPool, createWebProcessPool> processPool;
Expand All @@ -407,8 +445,9 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
WeakPtr<WebKit::WebExtensionController> weakWebExtensionController;
#endif
RefPtr<WebKit::WebPageGroup> pageGroup;
RefPtr<WebKit::WebPageProxy> relatedPage;
WeakPtr<WebKit::WebPageProxy> relatedPage;
WeakPtr<WebKit::WebPageProxy> pageToCloneSessionStorageFrom;
WeakPtr<WebKit::WebPageProxy> alternateWebViewForNavigationGestures;

#if PLATFORM(IOS_FAMILY)
bool canShowWhileLocked { false };
Expand All @@ -419,10 +458,16 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
bool allowsInlineMediaPlaybackAfterFullscreen { !allowsInlineMediaPlayback };
bool mediaDataLoadsAutomatically { allowsInlineMediaPlayback };
WebKit::DragLiftDelay dragLiftDelay { defaultDragLiftDelay() };
#if ENABLE(DATA_DETECTION)
OptionSet<WebCore::DataDetectorType> dataDetectorTypes;
#endif
WebKit::SelectionGranularity selectionGranularity { WebKit::SelectionGranularity::Dynamic };
#if PLATFORM(WATCHOS)
bool allowsPictureInPictureMediaPlayback { false };
bool textInteractionGesturesEnabled { false };
bool longPressActionsEnabled { false };
#else // PLATFORM(WATCHOS)
bool allowsPictureInPictureMediaPlayback { true };
bool textInteractionGesturesEnabled { true };
bool longPressActionsEnabled { true };
#endif // PLATFORM(WATCHOS)
Expand All @@ -446,6 +491,7 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
RetainPtr<ClassStructPtr> attachmentFileWrapperClass;
std::optional<WTF::Vector<WTF::String>> additionalSupportedImageTypes;
bool clientNavigationsRunAtForegroundPriority { true };
uintptr_t mediaTypesRequiringUserActionForPlayback { defaultMediaTypesRequiringUserActionForPlayback() };
#endif

#if ENABLE(APPLICATION_MANIFEST)
Expand All @@ -468,12 +514,16 @@ class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {

bool mediaCaptureEnabled { false };
bool httpsUpgradeEnabled { true };
bool suppressesIncrementalRendering { false };
bool ignoresViewportScaleLimits { false };
bool allowsAirPlayForMediaPlayback { true };

#if PLATFORM(MAC)
bool showsURLsInToolTips { false };
bool serviceControlsEnabled { false };
bool imageControlsEnabled { false };
bool contextMenuQRCodeDetectionEnabled { false };
WebCore::UserInterfaceDirectionPolicy userInterfaceDirectionPolicy { WebCore::UserInterfaceDirectionPolicy::Content };
#endif
#if ENABLE(APPLE_PAY)
bool applePayEnabled { DEFAULT_VALUE_FOR_ApplePayEnabled };
Expand Down
13 changes: 13 additions & 0 deletions Source/WebKit/UIProcess/API/Cocoa/APIPageConfigurationCocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,17 @@
}
#endif

NSUInteger PageConfiguration::Data::defaultMediaTypesRequiringUserActionForPlayback()
{
#if PLATFORM(IOS_FAMILY)
#if !PLATFORM(WATCHOS)
if (linkedOnOrAfterSDKWithBehavior(SDKAlignedBehavior::MediaTypesRequiringUserActionForPlayback))
return WKAudiovisualMediaTypeAudio;
#endif // !PLATFORM(WATCHOS)
return WKAudiovisualMediaTypeAll;
#else // PLATFORM(IOS_FAMILY)
return WKAudiovisualMediaTypeNone;
#endif // PLATFORM(IOS_FAMILY)
}

} // namespace API
5 changes: 1 addition & 4 deletions Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
#import "WKBackForwardListItemInternal.h"
#import "WKBrowsingContextHandleInternal.h"
#import "WKContentWorldInternal.h"
#import "WKDataDetectorTypesInternal.h"
#import "WKDownloadInternal.h"
#import "WKErrorInternal.h"
#import "WKFindConfiguration.h"
Expand Down Expand Up @@ -176,10 +177,6 @@
#import "_WKApplicationManifestInternal.h"
#endif

#if ENABLE(DATA_DETECTION)
#import "WKDataDetectorTypesInternal.h"
#endif

#if ENABLE(WK_WEB_EXTENSIONS)
#import "_WKWebExtensionControllerInternal.h"
#endif
Expand Down
Loading

0 comments on commit cf4a98a

Please sign in to comment.