Title: [221262] trunk/Source/WebKit
- Revision
- 221262
- Author
- [email protected]
- Date
- 2017-08-28 11:20:49 -0700 (Mon, 28 Aug 2017)
Log Message
Add WKUIDelegatePrivate equivalent of WKPageUIClient's didExceedBackgroundResourceLimitWhileInForeground
https://bugs.webkit.org/show_bug.cgi?id=176028
<rdar://problem/29270035>
Reviewed by Andy Estes.
An API test for this did not succeed with either the memory or CPU limit calls,
possibly because the app must be in the foreground for this call to be made.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::toWKResourceLimit):
(WebKit::UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (221261 => 221262)
--- trunk/Source/WebKit/ChangeLog 2017-08-28 16:52:48 UTC (rev 221261)
+++ trunk/Source/WebKit/ChangeLog 2017-08-28 18:20:49 UTC (rev 221262)
@@ -1,3 +1,21 @@
+2017-08-28 Alex Christensen <[email protected]>
+
+ Add WKUIDelegatePrivate equivalent of WKPageUIClient's didExceedBackgroundResourceLimitWhileInForeground
+ https://bugs.webkit.org/show_bug.cgi?id=176028
+ <rdar://problem/29270035>
+
+ Reviewed by Andy Estes.
+
+ An API test for this did not succeed with either the memory or CPU limit calls,
+ possibly because the app must be in the foreground for this call to be made.
+
+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+ * UIProcess/Cocoa/UIDelegate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::UIDelegate::setDelegate):
+ (WebKit::toWKResourceLimit):
+ (WebKit::UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
+
2017-08-28 Carlos Garcia Campos <[email protected]>
WebDriver: implement screen capture commands
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (221261 => 221262)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2017-08-28 16:52:48 UTC (rev 221261)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2017-08-28 18:20:49 UTC (rev 221262)
@@ -59,6 +59,11 @@
_WKAutoplayEventUserDidInterfereWithPlayback,
} WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+typedef NS_ENUM(NSInteger, _WKResourceLimit) {
+ _WKResourceLimitMemory,
+ _WKResourceLimitCPU,
+} WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+
typedef NS_OPTIONS(NSInteger, _WKAutoplayEventFlags) {
_WKAutoplayEventFlagsNone = 0,
_WKAutoplayEventFlagsHasAudio = 1 << 0,
@@ -145,6 +150,7 @@
- (void)_webView:(WKWebView *)webView didNotHandleWheelEvent:(NSEvent *)event WK_API_AVAILABLE(macosx(WK_MAC_TBA));
- (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macosx(WK_MAC_TBA));
- (void)_webView:(WKWebView *)webView saveDataToFile:(NSData *)data suggestedFilename:(NSString *)suggestedFilename mimeType:(NSString *)mimeType originatingURL:(NSURL *)url WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+- (void)_webView:(WKWebView *)webView didExceedBackgroundResourceLimitWhileInForeground:(_WKResourceLimit)limit WK_API_AVAILABLE(macosx(WK_MAC_TBA));
- (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element WK_API_AVAILABLE(macosx(10.12));
- (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element userInfo:(id <NSSecureCoding>)userInfo WK_API_AVAILABLE(macosx(10.12));
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h (221261 => 221262)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h 2017-08-28 16:52:48 UTC (rev 221261)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h 2017-08-28 18:20:49 UTC (rev 221262)
@@ -103,6 +103,7 @@
void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&) final;
void handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) final;
bool runOpenPanel(WebPageProxy*, WebFrameProxy*, const WebCore::SecurityOriginData&, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) final;
+ void didExceedBackgroundResourceLimitWhileInForeground(WebPageProxy&, WKResourceLimit) final;
void saveDataToFileInDownloadsFolder(WebPageProxy*, const WTF::String&, const WTF::String&, const WebCore::URL&, API::Data&) final;
#endif
bool decidePolicyForUserMediaPermissionRequest(WebPageProxy&, WebFrameProxy&, API::SecurityOrigin&, API::SecurityOrigin&, UserMediaPermissionRequestProxy&) final;
@@ -149,6 +150,7 @@
bool webViewTakeFocus : 1;
bool webViewDidNotHandleWheelEvent : 1;
bool webViewHandleAutoplayEventWithFlags : 1;
+ bool webViewDidExceedBackgroundResourceLimitWhileInForeground : 1;
bool webViewSaveDataToFileSuggestedFilenameMimeTypeOriginatingURL : 1;
bool webViewRunOpenPanelWithParametersInitiatedByFrameCompletionHandler : 1;
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (221261 => 221262)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2017-08-28 16:52:48 UTC (rev 221261)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2017-08-28 18:20:49 UTC (rev 221262)
@@ -108,6 +108,7 @@
m_delegateMethods.webViewTakeFocus = [delegate respondsToSelector:@selector(_webView:takeFocus:)];
m_delegateMethods.webViewDidNotHandleWheelEvent = [delegate respondsToSelector:@selector(_webView:didNotHandleWheelEvent:)];
m_delegateMethods.webViewHandleAutoplayEventWithFlags = [delegate respondsToSelector:@selector(_webView:handleAutoplayEvent:withFlags:)];
+ m_delegateMethods.webViewDidExceedBackgroundResourceLimitWhileInForeground = [delegate respondsToSelector:@selector(_webView:didExceedBackgroundResourceLimitWhileInForeground:)];
m_delegateMethods.webViewSaveDataToFileSuggestedFilenameMimeTypeOriginatingURL = [delegate respondsToSelector:@selector(_webView:saveDataToFile:suggestedFilename:mimeType:originatingURL:)];
m_delegateMethods.webViewRunOpenPanelWithParametersInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:)];
#endif
@@ -427,6 +428,30 @@
[(id <WKUIDelegatePrivate>)delegate _unfocusWebView:m_uiDelegate.m_webView];
}
+static _WKResourceLimit toWKResourceLimit(WKResourceLimit limit)
+{
+ switch (limit) {
+ case kWKResourceLimitMemory:
+ return _WKResourceLimitMemory;
+ case kWKResourceLimitCPU:
+ return _WKResourceLimitCPU;
+ }
+ ASSERT_NOT_REACHED();
+ return _WKResourceLimitMemory;
+}
+
+void UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground(WebKit::WebPageProxy&, WKResourceLimit limit)
+{
+ if (!m_uiDelegate.m_delegateMethods.webViewDidExceedBackgroundResourceLimitWhileInForeground)
+ return;
+
+ auto delegate = m_uiDelegate.m_delegate.get();
+ if (!delegate)
+ return;
+
+ [static_cast<id <WKUIDelegatePrivate>>(delegate) _webView:m_uiDelegate.m_webView didExceedBackgroundResourceLimitWhileInForeground:toWKResourceLimit(limit)];
+}
+
void UIDelegate::UIClient::didNotHandleWheelEvent(WebKit::WebPageProxy*, const WebKit::NativeWebWheelEvent& event)
{
if (!m_uiDelegate.m_delegateMethods.webViewDidNotHandleWheelEvent)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes