#ifndef UIClient_h
#define UIClient_h
#import "WKFoundation.h"
#if WK_API_ENABLED
#import "APIUIClient.h"
#import "WeakObjCPtr.h"
#import <wtf/RetainPtr.h>
@class _WKActivatedElementInfo;
@class WKWebView;
@protocol WKUIDelegate;
namespace WebKit {
class UIDelegate {
public:
explicit UIDelegate(WKWebView *);
~UIDelegate();
std::unique_ptr<API::UIClient> createUIClient();
RetainPtr<id <WKUIDelegate> > delegate();
void setDelegate(id <WKUIDelegate>);
private:
class UIClient : public API::UIClient {
public:
explicit UIClient(UIDelegate&);
~UIClient();
private:
virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const WebKit::NavigationActionData&) override;
virtual void close(WebKit::WebPageProxy*) override;
virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) override;
virtual void didEnterFullscreen(WebKit::WebPageProxy*) override;
virtual void didExitFullscreen(WebKit::WebPageProxy*) override;
virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&, std::function<void ()> completionHandler) override;
virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&, std::function<void (bool)> completionHandler) override;
virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*, const WebKit::SecurityOriginData&, std::function<void (const WTF::String&)> completionHandler) override;
virtual void exceededDatabaseQuota(WebPageProxy*, WebFrameProxy*, API::SecurityOrigin*, const WTF::String& databaseName, const WTF::String& displayName, unsigned long long currentQuota, unsigned long long currentOriginUsage, unsigned long long currentUsage, unsigned long long expectedUsage, std::function<void (unsigned long long)>) override;
virtual void reachedApplicationCacheOriginQuota(WebPageProxy*, const WebCore::SecurityOrigin&, uint64_t currentQuota, uint64_t totalBytesNeeded, std::function<void (unsigned long long)> completionHandler) override;
virtual void printFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*) override;
#if PLATFORM(IOS)
#if HAVE(APP_LINKS)
virtual bool shouldIncludeAppLinkActionsForElement(_WKActivatedElementInfo *) override;
#endif
virtual RetainPtr<NSArray> actionsForElement(_WKActivatedElementInfo *, RetainPtr<NSArray> defaultActions) override;
virtual void didNotHandleTapAsClick(const WebCore::IntPoint&) override;
#endif
#if ENABLE(VIDEO)
virtual void mediaDocumentNaturalSizeChanged(const WebCore::IntSize&) override;
#endif
UIDelegate& m_uiDelegate;
};
WKWebView *m_webView;
WeakObjCPtr<id <WKUIDelegate> > m_delegate;
struct {
bool webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures : 1;
bool webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler : 1;
bool webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler : 1;
bool webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler : 1;
bool webViewDecideDatabaseQuotaForSecurityOriginCurrentQuotaCurrentOriginUsageCurrentDatabaseUsageExpectedUsageDecisionHandler : 1;
bool webViewDecideWebApplicationCacheQuotaForSecurityOriginCurrentQuotaTotalBytesNeeded : 1;
bool webViewPrintFrame : 1;
bool webViewDidClose : 1;
bool webViewClose : 1;
bool webViewFullscreenMayReturnToInline : 1;
bool webViewDidEnterFullscreen : 1;
bool webViewDidExitFullscreen : 1;
#if PLATFORM(IOS)
#if HAVE(APP_LINKS)
bool webViewShouldIncludeAppLinkActionsForElement : 1;
#endif
bool webViewActionsForElementDefaultActions : 1;
bool webViewDidNotHandleTapAsClickAtPoint : 1;
#endif
#if ENABLE(VIDEO)
bool webViewMediaDocumentNaturalSizeChanged : 1;
#endif
} m_delegateMethods;
};
}
#endif // WK_API_ENABLED
#endif // UIClient_h