- Revision
- 282375
- Author
- [email protected]
- Date
- 2021-09-13 20:11:07 -0700 (Mon, 13 Sep 2021)
Log Message
Refactor -[WKWebViewConfiguration _setRequiresUserActionForEditingControlsManager:] to use API::PageConfiguration
https://bugs.webkit.org/show_bug.cgi?id=230238
rdar://83078713
Reviewed by Tim Horton.
Move the `_requiresUserActionForEditingControlsManager` bit out of WebViewImpl and into API::PageConfiguration.
This makes it easier to introduce state in WebPage that keeps track of whether or not user action is required
for showing text editing controls on the touch bar, since we can fetch the (unchanging) state off of
API::PageConfiguration, and propagate it to the web process via WebPageCreationParameters.
No change in behavior.
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy const):
* UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::requiresUserActionForEditingControlsManager const):
(API::PageConfiguration::setRequiresUserActionForEditingControlsManager):
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _requiresUserActionForEditingControlsManager]):
(-[WKWebViewConfiguration _setRequiresUserActionForEditingControlsManager:]):
Call into API::PageConfiguration instead.
* UIProcess/API/mac/WKView.mm:
(-[WKView _requiresUserActionForEditingControlsManager]): Deleted.
(-[WKView _setRequiresUserActionForEditingControlsManager:]): Deleted.
Additionally delete this private method on WKView, which was only used by Safari on macOS, back before Safari
used WKWebView. There are currently no internal clients of this SPI method.
* UIProcess/Cocoa/WebViewImpl.h:
(WebKit::WebViewImpl::setRequiresUserActionForEditingControlsManager): Deleted.
(WebKit::WebViewImpl::requiresUserActionForEditingControlsManager const): Deleted.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::requiresUserActionForEditingControlsManager const):
Turn this into a helper method that just asks the API::PageConfiguration.
(WebKit::WebViewImpl::updateTouchBar):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (282374 => 282375)
--- trunk/Source/WebKit/ChangeLog 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/ChangeLog 2021-09-14 03:11:07 UTC (rev 282375)
@@ -1,5 +1,53 @@
2021-09-13 Wenson Hsieh <[email protected]>
+ Refactor -[WKWebViewConfiguration _setRequiresUserActionForEditingControlsManager:] to use API::PageConfiguration
+ https://bugs.webkit.org/show_bug.cgi?id=230238
+ rdar://83078713
+
+ Reviewed by Tim Horton.
+
+ Move the `_requiresUserActionForEditingControlsManager` bit out of WebViewImpl and into API::PageConfiguration.
+ This makes it easier to introduce state in WebPage that keeps track of whether or not user action is required
+ for showing text editing controls on the touch bar, since we can fetch the (unchanging) state off of
+ API::PageConfiguration, and propagate it to the web process via WebPageCreationParameters.
+
+ No change in behavior.
+
+ * UIProcess/API/APIPageConfiguration.cpp:
+ (API::PageConfiguration::copy const):
+ * UIProcess/API/APIPageConfiguration.h:
+ (API::PageConfiguration::requiresUserActionForEditingControlsManager const):
+ (API::PageConfiguration::setRequiresUserActionForEditingControlsManager):
+ * UIProcess/API/Cocoa/WKViewPrivate.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _initializeWithConfiguration:]):
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration init]):
+ (-[WKWebViewConfiguration copyWithZone:]):
+ (-[WKWebViewConfiguration _requiresUserActionForEditingControlsManager]):
+ (-[WKWebViewConfiguration _setRequiresUserActionForEditingControlsManager:]):
+
+ Call into API::PageConfiguration instead.
+
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView _requiresUserActionForEditingControlsManager]): Deleted.
+ (-[WKView _setRequiresUserActionForEditingControlsManager:]): Deleted.
+
+ Additionally delete this private method on WKView, which was only used by Safari on macOS, back before Safari
+ used WKWebView. There are currently no internal clients of this SPI method.
+
+ * UIProcess/Cocoa/WebViewImpl.h:
+ (WebKit::WebViewImpl::setRequiresUserActionForEditingControlsManager): Deleted.
+ (WebKit::WebViewImpl::requiresUserActionForEditingControlsManager const): Deleted.
+ * UIProcess/Cocoa/WebViewImpl.mm:
+ (WebKit::WebViewImpl::requiresUserActionForEditingControlsManager const):
+
+ Turn this into a helper method that just asks the API::PageConfiguration.
+
+ (WebKit::WebViewImpl::updateTouchBar):
+
+2021-09-13 Wenson Hsieh <[email protected]>
+
[macOS] -toggleAutomaticSpellingCorrection: menu item validation shouldn't require post-layout editor state
https://bugs.webkit.org/show_bug.cgi?id=230205
Modified: trunk/Source/WebKit/UIProcess/API/APIPageConfiguration.cpp (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/API/APIPageConfiguration.cpp 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/API/APIPageConfiguration.cpp 2021-09-14 03:11:07 UTC (rev 282375)
@@ -99,6 +99,9 @@
#if PLATFORM(IOS_FAMILY)
copy->m_appInitiatedOverrideValueForTesting = this->m_appInitiatedOverrideValueForTesting;
#endif
+#if HAVE(TOUCH_BAR)
+ copy->m_requiresUserActionForEditingControlsManager = this->m_requiresUserActionForEditingControlsManager;
+#endif
return copy;
}
Modified: trunk/Source/WebKit/UIProcess/API/APIPageConfiguration.h (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/API/APIPageConfiguration.h 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/API/APIPageConfiguration.h 2021-09-14 03:11:07 UTC (rev 282375)
@@ -184,6 +184,11 @@
void setAppInitiatedOverrideValueForTesting(WebKit::AttributionOverrideTesting appInitiatedOverrideValueForTesting) { m_appInitiatedOverrideValueForTesting = appInitiatedOverrideValueForTesting; }
#endif
+#if HAVE(TOUCH_BAR)
+ bool requiresUserActionForEditingControlsManager() const { return m_requiresUserActionForEditingControlsManager; }
+ void setRequiresUserActionForEditingControlsManager(bool value) { m_requiresUserActionForEditingControlsManager = value; }
+#endif
+
private:
RefPtr<WebKit::WebProcessPool> m_processPool;
@@ -239,6 +244,10 @@
#if PLATFORM(IOS_FAMILY)
WebKit::AttributionOverrideTesting m_appInitiatedOverrideValueForTesting { WebKit::AttributionOverrideTesting::NoOverride };
#endif
+
+#if HAVE(TOUCH_BAR)
+ bool m_requiresUserActionForEditingControlsManager { false };
+#endif
};
} // namespace API
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKViewPrivate.h (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKViewPrivate.h 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKViewPrivate.h 2021-09-14 03:11:07 UTC (rev 282375)
@@ -89,8 +89,6 @@
@property (strong, nonatomic, setter=_setInspectorAttachmentView:) NSView *_inspectorAttachmentView WK_API_AVAILABLE(macos(10.11));
-@property (nonatomic, readwrite, setter=_setRequiresUserActionForEditingControlsManager:) BOOL _requiresUserActionForEditingControlsManager;
-
- (NSView*)fullScreenPlaceholderView;
- (NSWindow*)createFullScreenWindow;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-09-14 03:11:07 UTC (rev 282375)
@@ -414,7 +414,6 @@
_contentView = adoptNS([[WKContentView alloc] initWithFrame:self.bounds page:_page.copyRef()]);
_impl->setAutomaticallyAdjustsContentInsets(true);
- _impl->setRequiresUserActionForEditingControlsManager([configuration _requiresUserActionForEditingControlsManager]);
[self _setupScrollAndContentViews];
#endif
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2021-09-14 03:11:07 UTC (rev 282375)
@@ -158,7 +158,6 @@
WKRetainPtr<WKPageGroupRef> _pageGroup;
BOOL _showsURLsInToolTips;
BOOL _serviceControlsEnabled;
- BOOL _requiresUserActionForEditingControlsManager;
#endif
BOOL _waitsForPaintAfterViewDidMoveToWindow;
BOOL _controlledByAutomation;
@@ -229,7 +228,6 @@
_respectsImageOrientation = NO;
_showsURLsInToolTips = NO;
_serviceControlsEnabled = NO;
- _requiresUserActionForEditingControlsManager = NO;
#endif
_waitsForPaintAfterViewDidMoveToWindow = YES;
@@ -428,7 +426,6 @@
configuration->_userInterfaceDirectionPolicy = self->_userInterfaceDirectionPolicy;
configuration->_showsURLsInToolTips = self->_showsURLsInToolTips;
configuration->_serviceControlsEnabled = self->_serviceControlsEnabled;
- configuration->_requiresUserActionForEditingControlsManager = self->_requiresUserActionForEditingControlsManager;
configuration->_pageGroup = self._pageGroup;
#endif
#if ENABLE(DATA_DETECTION) && PLATFORM(IOS_FAMILY)
@@ -1160,12 +1157,12 @@
- (BOOL)_requiresUserActionForEditingControlsManager
{
- return _requiresUserActionForEditingControlsManager;
+ return _pageConfiguration->requiresUserActionForEditingControlsManager();
}
- (void)_setRequiresUserActionForEditingControlsManager:(BOOL)requiresUserAction
{
- _requiresUserActionForEditingControlsManager = requiresUserAction;
+ _pageConfiguration->setRequiresUserActionForEditingControlsManager(requiresUserAction);
}
- (WKPageGroupRef)_pageGroup
Modified: trunk/Source/WebKit/UIProcess/API/mac/WKView.mm (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/API/mac/WKView.mm 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/API/mac/WKView.mm 2021-09-14 03:11:07 UTC (rev 282375)
@@ -1346,16 +1346,6 @@
_data->_impl->setInspectorAttachmentView(newView);
}
-- (BOOL)_requiresUserActionForEditingControlsManager
-{
- return _data->_impl->requiresUserActionForEditingControlsManager();
-}
-
-- (void)_setRequiresUserActionForEditingControlsManager:(BOOL)requiresUserAction
-{
- _data->_impl->setRequiresUserActionForEditingControlsManager(requiresUserAction);
-}
-
- (NSView *)fullScreenPlaceholderView
{
return _data->_impl->fullScreenPlaceholderView();
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h 2021-09-14 03:11:07 UTC (rev 282375)
@@ -611,8 +611,7 @@
bool windowIsFrontWindowUnderMouse(NSEvent *);
- void setRequiresUserActionForEditingControlsManager(bool requiresUserActionForEditingControlsManager) { m_requiresUserActionForEditingControlsManager = requiresUserActionForEditingControlsManager; }
- bool requiresUserActionForEditingControlsManager() const { return m_requiresUserActionForEditingControlsManager; }
+ bool requiresUserActionForEditingControlsManager() const;
WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection();
void setUserInterfaceLayoutDirection(NSUserInterfaceLayoutDirection);
@@ -877,7 +876,6 @@
NSInteger m_lastCandidateRequestSequenceNumber;
NSRange m_softSpaceRange { NSNotFound, 0 };
bool m_isHandlingAcceptedCandidate { false };
- bool m_requiresUserActionForEditingControlsManager { false };
bool m_editableElementIsFocused { false };
bool m_isTextInsertionReplacingSoftSpace { false };
RetainPtr<WKSafeBrowsingWarning> m_safeBrowsingWarning;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (282374 => 282375)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2021-09-14 01:17:25 UTC (rev 282374)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2021-09-14 03:11:07 UTC (rev 282375)
@@ -31,6 +31,7 @@
#import "APIAttachment.h"
#import "APILegacyContextHistoryClient.h"
#import "APINavigation.h"
+#import "APIPageConfiguration.h"
#import "AppKitSPI.h"
#import "CoreTextHelpers.h"
#import "FontInfo.h"
@@ -1047,6 +1048,11 @@
return m_currentTouchBar.get();
}
+bool WebViewImpl::requiresUserActionForEditingControlsManager() const
+{
+ return m_page->configuration().requiresUserActionForEditingControlsManager();
+}
+
void WebViewImpl::updateTouchBar()
{
if (!m_canCreateTouchBars)
@@ -1053,7 +1059,7 @@
return;
NSTouchBar *touchBar = nil;
- bool userActionRequirementsHaveBeenMet = m_requiresUserActionForEditingControlsManager ? m_page->hasHadSelectionChangesFromUserInteraction() : true;
+ bool userActionRequirementsHaveBeenMet = !requiresUserActionForEditingControlsManager() || m_page->hasHadSelectionChangesFromUserInteraction();
if (m_page->editorState().isContentEditable && !m_page->isTouchBarUpdateSupressedForHiddenContentEditable()) {
updateTextTouchBar();
if (userActionRequirementsHaveBeenMet)