diff options
Diffstat (limited to 'WebKit/mac/WebCoreSupport/WebChromeClient.mm')
| -rw-r--r-- | WebKit/mac/WebCoreSupport/WebChromeClient.mm | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/WebKit/mac/WebCoreSupport/WebChromeClient.mm b/WebKit/mac/WebCoreSupport/WebChromeClient.mm index 965e607..a2c4ee5 100644 --- a/WebKit/mac/WebCoreSupport/WebChromeClient.mm +++ b/WebKit/mac/WebCoreSupport/WebChromeClient.mm @@ -29,6 +29,7 @@ #import "WebChromeClient.h" +#import "DOMElementInternal.h" #import "DOMNodeInternal.h" #import "WebDefaultUIDelegate.h" #import "WebDelegateImplementationCaching.h" @@ -822,21 +823,41 @@ void WebChromeClient::exitFullscreenForNode(Node*) bool WebChromeClient::supportsFullScreenForElement(const Element* element) { - return CallUIDelegateReturningBoolean(false, m_webView, @selector(webView:supportsFullScreenForElement:), kit(const_cast<WebCore::Element*>(element))); + SEL selector = @selector(webView:supportsFullScreenForElement:); + if ([[m_webView UIDelegate] respondsToSelector:selector]) + return CallUIDelegateReturningBoolean(false, m_webView, selector, kit(const_cast<WebCore::Element*>(element))); + return [m_webView _supportsFullScreenForElement:const_cast<WebCore::Element*>(element)]; } void WebChromeClient::enterFullScreenForElement(Element* element) { - WebKitFullScreenListener* listener = [[WebKitFullScreenListener alloc] initWithElement:element]; - CallUIDelegate(m_webView, @selector(webView:enterFullScreenForElement:listener:), kit(element), listener); - [listener release]; + SEL selector = @selector(webView:enterFullScreenForElement:listener:); + if ([[m_webView UIDelegate] respondsToSelector:selector]) { + WebKitFullScreenListener* listener = [[WebKitFullScreenListener alloc] initWithElement:element]; + CallUIDelegate(m_webView, selector, kit(element), listener); + [listener release]; + } else + [m_webView _enterFullScreenForElement:element]; } void WebChromeClient::exitFullScreenForElement(Element* element) { - WebKitFullScreenListener* listener = [[WebKitFullScreenListener alloc] initWithElement:element]; - CallUIDelegate(m_webView, @selector(webView:exitFullScreenForElement:listener:), kit(element), listener); - [listener release]; + SEL selector = @selector(webView:exitFullScreenForElement:listener:); + if ([[m_webView UIDelegate] respondsToSelector:selector]) { + WebKitFullScreenListener* listener = [[WebKitFullScreenListener alloc] initWithElement:element]; + CallUIDelegate(m_webView, selector, kit(element), listener); + [listener release]; + } else + [m_webView _exitFullScreenForElement:element]; +} + +void WebChromeClient::fullScreenRendererChanged(RenderBox* renderer) +{ + SEL selector = @selector(webView:fullScreenRendererChanged:); + if ([[m_webView UIDelegate] respondsToSelector:selector]) + CallUIDelegate(m_webView, selector, (id)renderer); + else + [m_webView _fullScreenRendererChanged:renderer]; } #endif |
