Title: [168593] trunk/Source/WebKit2
Revision
168593
Author
[email protected]
Date
2014-05-10 20:32:29 -0700 (Sat, 10 May 2014)

Log Message

Implement -forwardingTargetForSelector on WKScrollViewDelegateForwarder
https://bugs.webkit.org/show_bug.cgi?id=132790
<rdar://problem/16877802>

Reviewed by Dan Bernstein.

* UIProcess/ios/WKScrollView.mm:
(-[WKScrollViewDelegateForwarder forwardingTargetForSelector:]):
If only one of the delegates will respond to a selector,
we can return it from forwardingTargetForSelector: to avoid
NSInvocation overhead.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (168592 => 168593)


--- trunk/Source/WebKit2/ChangeLog	2014-05-11 03:02:04 UTC (rev 168592)
+++ trunk/Source/WebKit2/ChangeLog	2014-05-11 03:32:29 UTC (rev 168593)
@@ -1,3 +1,17 @@
+2014-05-10  Tim Horton  <[email protected]>
+
+        Implement -forwardingTargetForSelector on WKScrollViewDelegateForwarder
+        https://bugs.webkit.org/show_bug.cgi?id=132790
+        <rdar://problem/16877802>
+
+        Reviewed by Dan Bernstein.
+
+        * UIProcess/ios/WKScrollView.mm:
+        (-[WKScrollViewDelegateForwarder forwardingTargetForSelector:]):
+        If only one of the delegates will respond to a selector,
+        we can return it from forwardingTargetForSelector: to avoid
+        NSInvocation overhead.
+
 2014-05-10  Dan Bernstein  <[email protected]>
 
         [Mac] Some targets that link or soft-link WebKit.framework don't depend on it

Modified: trunk/Source/WebKit2/UIProcess/ios/WKScrollView.mm (168592 => 168593)


--- trunk/Source/WebKit2/UIProcess/ios/WKScrollView.mm	2014-05-11 03:02:04 UTC (rev 168592)
+++ trunk/Source/WebKit2/UIProcess/ios/WKScrollView.mm	2014-05-11 03:32:29 UTC (rev 168593)
@@ -85,6 +85,18 @@
         [super forwardInvocation:anInvocation];
 }
 
+- (id)forwardingTargetForSelector:(SEL)aSelector
+{
+    BOOL internalDelegateWillRespond = [_internalDelegate respondsToSelector:aSelector];
+    BOOL externalDelegateWillRespond = [_externalDelegate respondsToSelector:aSelector];
+
+    if (internalDelegateWillRespond && !externalDelegateWillRespond)
+        return _internalDelegate;
+    if (externalDelegateWillRespond && !internalDelegateWillRespond)
+        return _externalDelegate;
+    return nil;
+}
+
 @end
 
 @implementation WKScrollView {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to