[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

weinig at apple.com weinig at apple.com
Wed Dec 22 13:32:17 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 6b8bc95841ef337462b481bb761391702507c172
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sun Sep 19 00:30:48 2010 +0000

    WebKit2: Improve/unify the PageLoadClient interfaces.
    https://bugs.webkit.org/show_bug.cgi?id=46043
    
    Reviewed by Dan Bernstein.
    
    - Ensure that all the PageLoadClient functions (that are load related)
      have bundle API equivalents (this meant adding didFirstLayoutForFrame
      and didFirstVisuallyNonEmptyLayoutForFrame to the BundlePageLoadClient).
    - Add a userData out parameters to all the now paired BundlePageLoadClient
      functions, and a matching userData parameter to the PageLoadClient ones.
    
    * UIProcess/API/C/WKPage.h:
    * UIProcess/API/qt/ClientImpl.cpp:
    (qt_wk_didStartProvisionalLoadForFrame):
    (qt_wk_didReceiveServerRedirectForProvisionalLoadForFrame):
    (qt_wk_didFailProvisionalLoadWithErrorForFrame):
    (qt_wk_didCommitLoadForFrame):
    (qt_wk_didFinishDocumentLoadForFrame):
    (qt_wk_didFinishLoadForFrame):
    (qt_wk_didFailLoadWithErrorForFrame):
    (qt_wk_didReceiveTitleForFrame):
    (qt_wk_didFirstLayoutForFrame):
    (qt_wk_didFirstVisuallyNonEmptyLayoutForFrame):
    * UIProcess/WebLoaderClient.cpp:
    (WebKit::WebLoaderClient::didStartProvisionalLoadForFrame):
    (WebKit::WebLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::WebLoaderClient::didFailProvisionalLoadWithErrorForFrame):
    (WebKit::WebLoaderClient::didCommitLoadForFrame):
    (WebKit::WebLoaderClient::didFinishDocumentLoadForFrame):
    (WebKit::WebLoaderClient::didFinishLoadForFrame):
    (WebKit::WebLoaderClient::didFailLoadWithErrorForFrame):
    (WebKit::WebLoaderClient::didReceiveTitleForFrame):
    (WebKit::WebLoaderClient::didFirstLayoutForFrame):
    (WebKit::WebLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
    (WebKit::WebLoaderClient::didStartProgress):
    (WebKit::WebLoaderClient::didChangeProgress):
    (WebKit::WebLoaderClient::didFinishProgress):
    (WebKit::WebLoaderClient::didBecomeUnresponsive):
    (WebKit::WebLoaderClient::didBecomeResponsive):
    (WebKit::WebLoaderClient::processDidExit):
    (WebKit::WebLoaderClient::didChangeBackForwardList):
    * UIProcess/WebLoaderClient.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::didReceiveMessage):
    (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
    (WebKit::WebPageProxy::didCommitLoadForFrame):
    (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
    (WebKit::WebPageProxy::didFinishLoadForFrame):
    (WebKit::WebPageProxy::didFailLoadForFrame):
    (WebKit::WebPageProxy::didReceiveTitleForFrame):
    (WebKit::WebPageProxy::didFirstLayoutForFrame):
    (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
    * UIProcess/WebPageProxy.h:
    * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
    (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didCommitLoadForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didFinishLoadForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didReceiveTitleForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didFirstLayoutForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didClearWindowObjectForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame):
    (WebKit::InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didChangeLocationWithinPageForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame):
    (WebKit::InjectedBundlePageLoaderClient::didRunInsecureContentForFrame):
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
    (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):
    (WebKit::WebFrameLoaderClient::dispatchDidFirstLayout):
    (WebKit::WebFrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout):
    
    WebKitTools: Improve/unify the PageLoadClient interfaces
    https://bugs.webkit.org/show_bug.cgi?id=46043
    
    Reviewed by Dan Bernstein.
    
    * MiniBrowser/mac/BrowserWindowController.m:
    (didStartProvisionalLoadForFrame):
    (didReceiveServerRedirectForProvisionalLoadForFrame):
    (didFailProvisionalLoadWithErrorForFrame):
    (didCommitLoadForFrame):
    (didFinishDocumentLoadForFrame):
    (didFinishLoadForFrame):
    (didFailLoadWithErrorForFrame):
    (didReceiveTitleForFrame):
    (didFirstLayoutForFrame):
    (didFirstVisuallyNonEmptyLayoutForFrame):
    * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
    (WTR::InjectedBundlePage::InjectedBundlePage):
    (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
    (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
    (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
    (WTR::InjectedBundlePage::didCommitLoadForFrame):
    (WTR::InjectedBundlePage::didFinishLoadForFrame):
    (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
    (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
    (WTR::InjectedBundlePage::didReceiveTitleForFrame):
    * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
    * WebKitTestRunner/TestController.cpp:
    (WTR::TestController::didReceiveMessageFromInjectedBundle):
    (WTR::TestController::didFinishLoadForFrame):
    * WebKitTestRunner/TestController.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67802 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index dfa09dd..58fbdc9 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,92 @@
+2010-09-18  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Dan Bernstein.
+
+        Improve/unify the PageLoadClient interfaces.
+        https://bugs.webkit.org/show_bug.cgi?id=46043
+
+        - Ensure that all the PageLoadClient functions (that are load related)
+          have bundle API equivalents (this meant adding didFirstLayoutForFrame
+          and didFirstVisuallyNonEmptyLayoutForFrame to the BundlePageLoadClient).
+        - Add a userData out parameters to all the now paired BundlePageLoadClient
+          functions, and a matching userData parameter to the PageLoadClient ones.
+
+        * UIProcess/API/C/WKPage.h:
+        * UIProcess/API/qt/ClientImpl.cpp:
+        (qt_wk_didStartProvisionalLoadForFrame):
+        (qt_wk_didReceiveServerRedirectForProvisionalLoadForFrame):
+        (qt_wk_didFailProvisionalLoadWithErrorForFrame):
+        (qt_wk_didCommitLoadForFrame):
+        (qt_wk_didFinishDocumentLoadForFrame):
+        (qt_wk_didFinishLoadForFrame):
+        (qt_wk_didFailLoadWithErrorForFrame):
+        (qt_wk_didReceiveTitleForFrame):
+        (qt_wk_didFirstLayoutForFrame):
+        (qt_wk_didFirstVisuallyNonEmptyLayoutForFrame):
+        * UIProcess/WebLoaderClient.cpp:
+        (WebKit::WebLoaderClient::didStartProvisionalLoadForFrame):
+        (WebKit::WebLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WebKit::WebLoaderClient::didFailProvisionalLoadWithErrorForFrame):
+        (WebKit::WebLoaderClient::didCommitLoadForFrame):
+        (WebKit::WebLoaderClient::didFinishDocumentLoadForFrame):
+        (WebKit::WebLoaderClient::didFinishLoadForFrame):
+        (WebKit::WebLoaderClient::didFailLoadWithErrorForFrame):
+        (WebKit::WebLoaderClient::didReceiveTitleForFrame):
+        (WebKit::WebLoaderClient::didFirstLayoutForFrame):
+        (WebKit::WebLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
+        (WebKit::WebLoaderClient::didStartProgress):
+        (WebKit::WebLoaderClient::didChangeProgress):
+        (WebKit::WebLoaderClient::didFinishProgress):
+        (WebKit::WebLoaderClient::didBecomeUnresponsive):
+        (WebKit::WebLoaderClient::didBecomeResponsive):
+        (WebKit::WebLoaderClient::processDidExit):
+        (WebKit::WebLoaderClient::didChangeBackForwardList):
+        * UIProcess/WebLoaderClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::didReceiveMessage):
+        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
+        (WebKit::WebPageProxy::didCommitLoadForFrame):
+        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
+        (WebKit::WebPageProxy::didFinishLoadForFrame):
+        (WebKit::WebPageProxy::didFailLoadForFrame):
+        (WebKit::WebPageProxy::didReceiveTitleForFrame):
+        (WebKit::WebPageProxy::didFirstLayoutForFrame):
+        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
+        * UIProcess/WebPageProxy.h:
+        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
+        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
+        (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didCommitLoadForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didFinishLoadForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didReceiveTitleForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didFirstLayoutForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didClearWindowObjectForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didChangeLocationWithinPageForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame):
+        (WebKit::InjectedBundlePageLoaderClient::didRunInsecureContentForFrame):
+        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
+        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):
+        (WebKit::WebFrameLoaderClient::dispatchDidFirstLayout):
+        (WebKit::WebFrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout):
+
 2010-09-18  Ademar de Souza Reis Jr  <ademar.reis at openbossa.org>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/WebKit2/UIProcess/API/C/WKPage.h b/WebKit2/UIProcess/API/C/WKPage.h
index 4f08d5c..acb36c4 100644
--- a/WebKit2/UIProcess/API/C/WKPage.h
+++ b/WebKit2/UIProcess/API/C/WKPage.h
@@ -57,16 +57,16 @@ enum {
 typedef uint32_t WKEventModifiers;
 
 // FrameLoad Client
-typedef void (*WKPageDidStartProvisionalLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidReceiveServerRedirectForProvisionalLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidFailProvisionalLoadWithErrorForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo); // FIXME: Add WKErrorRef.
-typedef void (*WKPageDidCommitLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidFinishDocumentLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidFinishLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidFailLoadWithErrorForFrameCallback)(WKPageRef page, WKFrameRef frame, const void *clientInfo); // FIXME: Add WKErrorRef.
-typedef void (*WKPageDidReceiveTitleForFrameCallback)(WKPageRef page, WKStringRef title, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidFirstLayoutForFrame)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
-typedef void (*WKPageDidFirstVisuallyNonEmptyLayoutForFrame)(WKPageRef page, WKFrameRef frame, const void *clientInfo);
+typedef void (*WKPageDidStartProvisionalLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidReceiveServerRedirectForProvisionalLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidFailProvisionalLoadWithErrorForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo); // FIXME: Add WKErrorRef.
+typedef void (*WKPageDidCommitLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidFinishDocumentLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidFinishLoadForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidFailLoadWithErrorForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo); // FIXME: Add WKErrorRef.
+typedef void (*WKPageDidReceiveTitleForFrameCallback)(WKPageRef page, WKStringRef title, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidFirstLayoutForFrame)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
+typedef void (*WKPageDidFirstVisuallyNonEmptyLayoutForFrame)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
 
 // Progress Client
 typedef void (*WKPageDidStartProgressCallback)(WKPageRef page, const void *clientInfo);
diff --git a/WebKit2/UIProcess/API/qt/ClientImpl.cpp b/WebKit2/UIProcess/API/qt/ClientImpl.cpp
index 286c779..282982e 100644
--- a/WebKit2/UIProcess/API/qt/ClientImpl.cpp
+++ b/WebKit2/UIProcess/API/qt/ClientImpl.cpp
@@ -36,7 +36,7 @@ static QWKPage* toQWKPage(const void* clientInfo)
     return 0;
 }
 
-void qt_wk_didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
@@ -44,15 +44,15 @@ void qt_wk_didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, con
     QWKPagePrivate::get(toQWKPage(clientInfo))->updateNavigationActions();
 }
 
-void qt_wk_didReceiveServerRedirectForProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didReceiveServerRedirectForProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
 }
 
-void qt_wk_didFailProvisionalLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didFailProvisionalLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
 }
 
-void qt_wk_didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
@@ -63,12 +63,12 @@ void qt_wk_didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, const void* c
     QWKPagePrivate::get(toQWKPage(clientInfo))->updateNavigationActions();
 }
 
-void qt_wk_didFinishDocumentLoadForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didFinishDocumentLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     // FIXME: Implement (bug #44934)
 }
 
-void qt_wk_didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
@@ -76,7 +76,7 @@ void qt_wk_didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, const void* c
     QWKPagePrivate::get(toQWKPage(clientInfo))->updateNavigationActions();
 }
 
-void qt_wk_didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
@@ -84,7 +84,7 @@ void qt_wk_didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, const
     QWKPagePrivate::get(toQWKPage(clientInfo))->updateNavigationActions();
 }
 
-void qt_wk_didReceiveTitleForFrame(WKPageRef page, WKStringRef title, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didReceiveTitleForFrame(WKPageRef page, WKStringRef title, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
@@ -92,14 +92,14 @@ void qt_wk_didReceiveTitleForFrame(WKPageRef page, WKStringRef title, WKFrameRef
     emit toQWKPage(clientInfo)->titleChanged(qTitle);
 }
 
-void qt_wk_didFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
     emit toQWKPage(clientInfo)->initialLayoutCompleted();
 }
 
-void qt_wk_didFirstVisuallyNonEmptyLayoutForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void qt_wk_didFirstVisuallyNonEmptyLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
 {
     if (!WKFrameIsMainFrame(frame))
         return;
diff --git a/WebKit2/UIProcess/WebLoaderClient.cpp b/WebKit2/UIProcess/WebLoaderClient.cpp
index e5a0cfe..a6c4d86 100644
--- a/WebKit2/UIProcess/WebLoaderClient.cpp
+++ b/WebKit2/UIProcess/WebLoaderClient.cpp
@@ -43,106 +43,140 @@ void WebLoaderClient::initialize(const WKPageLoaderClient* client)
         memset(&m_pageLoaderClient, 0, sizeof(m_pageLoaderClient));
 }
 
-void WebLoaderClient::didStartProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didStartProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didStartProvisionalLoadForFrame)
-        m_pageLoaderClient.didStartProvisionalLoadForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didStartProvisionalLoadForFrame)
+        return;
+
+    m_pageLoaderClient.didStartProvisionalLoadForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didReceiveServerRedirectForProvisionalLoadForFrame)
-        m_pageLoaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didReceiveServerRedirectForProvisionalLoadForFrame)
+        return;
+
+    m_pageLoaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didFailProvisionalLoadWithErrorForFrame)
-        m_pageLoaderClient.didFailProvisionalLoadWithErrorForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFailProvisionalLoadWithErrorForFrame)
+        return;
+
+    m_pageLoaderClient.didFailProvisionalLoadWithErrorForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didCommitLoadForFrame)
-        m_pageLoaderClient.didCommitLoadForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didCommitLoadForFrame)
+        return;
+
+    m_pageLoaderClient.didCommitLoadForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didFinishDocumentLoadForFrame)
-        m_pageLoaderClient.didFinishDocumentLoadForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFinishDocumentLoadForFrame)
+        return;
+
+    m_pageLoaderClient.didFinishDocumentLoadForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didFinishLoadForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didFinishLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didFinishLoadForFrame)
-        m_pageLoaderClient.didFinishLoadForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFinishLoadForFrame)
+        return;
+
+    m_pageLoaderClient.didFinishLoadForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didFailLoadWithErrorForFrame)
-        m_pageLoaderClient.didFailLoadWithErrorForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFailLoadWithErrorForFrame)
+        return;
+
+    m_pageLoaderClient.didFailLoadWithErrorForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didReceiveTitleForFrame(WebPageProxy* page, StringImpl* title, WebFrameProxy* frame)
+void WebLoaderClient::didReceiveTitleForFrame(WebPageProxy* page, const String& title, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didReceiveTitleForFrame)
-        m_pageLoaderClient.didReceiveTitleForFrame(toRef(page), toRef(title), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didReceiveTitleForFrame)
+        return;
+
+    m_pageLoaderClient.didReceiveTitleForFrame(toRef(page), toRef(title.impl()), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didFirstLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didFirstLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didFirstLayoutForFrame)
-        m_pageLoaderClient.didFirstLayoutForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFirstLayoutForFrame)
+        return;
+
+    m_pageLoaderClient.didFirstLayoutForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame)
+void WebLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy* page, WebFrameProxy* frame, APIObject* userData)
 {
-    if (m_pageLoaderClient.didFirstVisuallyNonEmptyLayoutForFrame)
-        m_pageLoaderClient.didFirstVisuallyNonEmptyLayoutForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFirstVisuallyNonEmptyLayoutForFrame)
+        return;
+
+    m_pageLoaderClient.didFirstVisuallyNonEmptyLayoutForFrame(toRef(page), toRef(frame), toRef(userData), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::didStartProgress(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.didStartProgress)
-        m_pageLoaderClient.didStartProgress(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didStartProgress)
+        return;
+
+    m_pageLoaderClient.didStartProgress(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::didChangeProgress(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.didChangeProgress)
-        m_pageLoaderClient.didChangeProgress(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didChangeProgress)
+        return;
+
+    m_pageLoaderClient.didChangeProgress(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::didFinishProgress(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.didFinishProgress)
-        m_pageLoaderClient.didFinishProgress(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didFinishProgress)
+        return;
+
+    m_pageLoaderClient.didFinishProgress(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::didBecomeUnresponsive(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.didBecomeUnresponsive)
-        m_pageLoaderClient.didBecomeUnresponsive(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didBecomeUnresponsive)
+        return;
+
+    m_pageLoaderClient.didBecomeUnresponsive(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::didBecomeResponsive(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.didBecomeResponsive)
-        m_pageLoaderClient.didBecomeResponsive(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didBecomeResponsive)
+        return;
+
+    m_pageLoaderClient.didBecomeResponsive(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::processDidExit(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.processDidExit)
-        m_pageLoaderClient.processDidExit(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.processDidExit)
+        return;
+
+    m_pageLoaderClient.processDidExit(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 void WebLoaderClient::didChangeBackForwardList(WebPageProxy* page)
 {
-    if (m_pageLoaderClient.didChangeBackForwardList)
-        m_pageLoaderClient.didChangeBackForwardList(toRef(page), m_pageLoaderClient.clientInfo);
+    if (!m_pageLoaderClient.didChangeBackForwardList)
+        return;
+
+    m_pageLoaderClient.didChangeBackForwardList(toRef(page), m_pageLoaderClient.clientInfo);
 }
 
 } // namespace WebKit
diff --git a/WebKit2/UIProcess/WebLoaderClient.h b/WebKit2/UIProcess/WebLoaderClient.h
index fa7a935..ed4afb0 100644
--- a/WebKit2/UIProcess/WebLoaderClient.h
+++ b/WebKit2/UIProcess/WebLoaderClient.h
@@ -31,6 +31,7 @@
 
 namespace WebKit {
 
+class APIObject;
 class WebPageProxy;
 class WebFrameProxy;
 
@@ -39,16 +40,17 @@ public:
     WebLoaderClient();
     void initialize(const WKPageLoaderClient*);
 
-    void didStartProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*);
-    void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*);
-    void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*);
-    void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*);
-    void didFinishDocumentLoadForFrame(WebPageProxy*, WebFrameProxy*);
-    void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*);
-    void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*);
-    void didReceiveTitleForFrame(WebPageProxy*, StringImpl*, WebFrameProxy*);
-    void didFirstLayoutForFrame(WebPageProxy*, WebFrameProxy*);
-    void didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy*, WebFrameProxy*);
+    void didStartProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didFinishDocumentLoadForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didReceiveTitleForFrame(WebPageProxy*, const String&, WebFrameProxy*, APIObject*);
+    void didFirstLayoutForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+    void didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy*, WebFrameProxy*, APIObject*);
+
     void didStartProgress(WebPageProxy*);
     void didChangeProgress(WebPageProxy*);
     void didFinishProgress(WebPageProxy*);
diff --git a/WebKit2/UIProcess/WebPageProxy.cpp b/WebKit2/UIProcess/WebPageProxy.cpp
index 0e553b9..d51c4de 100644
--- a/WebKit2/UIProcess/WebPageProxy.cpp
+++ b/WebKit2/UIProcess/WebPageProxy.cpp
@@ -541,75 +541,125 @@ void WebPageProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::M
         case WebPageProxyMessage::DidStartProvisionalLoadForFrame: {
             uint64_t frameID;
             String url;
-            if (!arguments->decode(CoreIPC::Out(frameID, url)))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, url, messageDecoder)))
                 return;
-            didStartProvisionalLoadForFrame(process()->webFrame(frameID), url);
+
+            didStartProvisionalLoadForFrame(process()->webFrame(frameID), url, userData.get());
             break;
         }
         case WebPageProxyMessage::DidReceiveServerRedirectForProvisionalLoadForFrame: {
             uint64_t frameID;
             String url;
-            if (!arguments->decode(CoreIPC::Out(frameID, url)))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, url, messageDecoder)))
                 return;
-            didReceiveServerRedirectForProvisionalLoadForFrame(process()->webFrame(frameID), url);
+
+            didReceiveServerRedirectForProvisionalLoadForFrame(process()->webFrame(frameID), url, userData.get());
             break;
         }
         case WebPageProxyMessage::DidFailProvisionalLoadForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+            
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
                 return;
-            didFailProvisionalLoadForFrame(process()->webFrame(frameID));
+
+            didFailProvisionalLoadForFrame(process()->webFrame(frameID), userData.get());
             break;
         }
         case WebPageProxyMessage::DidCommitLoadForFrame: {
             uint64_t frameID;
             PlatformCertificateInfo certificateInfo;
-            if (!arguments->decode(CoreIPC::Out(frameID, certificateInfo)))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, certificateInfo, messageDecoder)))
                 return;
-            didCommitLoadForFrame(process()->webFrame(frameID), certificateInfo);
+    
+            didCommitLoadForFrame(process()->webFrame(frameID), certificateInfo, userData.get());
             break;
         }
         case WebPageProxyMessage::DidFinishDocumentLoadForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
                 return;
-            didFinishDocumentLoadForFrame(process()->webFrame(frameID));
+
+            didFinishDocumentLoadForFrame(process()->webFrame(frameID), userData.get());
             break;
         }
         case WebPageProxyMessage::DidFinishLoadForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
                 return;
-            didFinishLoadForFrame(process()->webFrame(frameID));
+
+            didFinishLoadForFrame(process()->webFrame(frameID), userData.get());
             break;
         }
         case WebPageProxyMessage::DidFailLoadForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
                 return;
-            didFailLoadForFrame(process()->webFrame(frameID));
+
+            didFailLoadForFrame(process()->webFrame(frameID), userData.get());
             break;
         }
         case WebPageProxyMessage::DidReceiveTitleForFrame: {
             uint64_t frameID;
             String title;
-            if (!arguments->decode(CoreIPC::Out(frameID, title)))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, title, messageDecoder)))
                 return;
-            didReceiveTitleForFrame(process()->webFrame(frameID), title);
+
+            didReceiveTitleForFrame(process()->webFrame(frameID), title, userData.get());
             break;
         }
         case WebPageProxyMessage::DidFirstLayoutForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
                 return;
-            didFirstLayoutForFrame(process()->webFrame(frameID));
+
+            didFirstLayoutForFrame(process()->webFrame(frameID), userData.get());
             break;
         }
         case WebPageProxyMessage::DidFirstVisuallyNonEmptyLayoutForFrame: {
             uint64_t frameID;
-            if (!arguments->decode(frameID))
+
+            RefPtr<APIObject> userData;
+            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+
+            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
                 return;
-            didFirstVisuallyNonEmptyLayoutForFrame(process()->webFrame(frameID));
+
+            didFirstVisuallyNonEmptyLayoutForFrame(process()->webFrame(frameID), userData.get());
             break;
         }
         case WebPageProxyMessage::DidStartProgress:
@@ -925,47 +975,47 @@ void WebPageProxy::didFinishProgress()
     m_loaderClient.didFinishProgress(this);
 }
 
-void WebPageProxy::didStartProvisionalLoadForFrame(WebFrameProxy* frame, const String& url)
+void WebPageProxy::didStartProvisionalLoadForFrame(WebFrameProxy* frame, const String& url, APIObject* userData)
 {
     frame->didStartProvisionalLoad(url);
-    m_loaderClient.didStartProvisionalLoadForFrame(this, frame);
+    m_loaderClient.didStartProvisionalLoadForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy* frame, const String& url)
+void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy* frame, const String& url, APIObject* userData)
 {
     frame->didReceiveServerRedirectForProvisionalLoad(url);
-    m_loaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(this, frame);
+    m_loaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didFailProvisionalLoadForFrame(WebFrameProxy* frame)
+void WebPageProxy::didFailProvisionalLoadForFrame(WebFrameProxy* frame, APIObject* userData)
 {
-    m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame);
+    m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didCommitLoadForFrame(WebFrameProxy* frame, const PlatformCertificateInfo& certificateInfo)
+void WebPageProxy::didCommitLoadForFrame(WebFrameProxy* frame, const PlatformCertificateInfo& certificateInfo, APIObject* userData)
 {
     frame->setCertificateInfo(WebCertificateInfo::create(certificateInfo));
     frame->didCommitLoad();
-    m_loaderClient.didCommitLoadForFrame(this, frame);
+    m_loaderClient.didCommitLoadForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didFinishDocumentLoadForFrame(WebFrameProxy* frame)
+void WebPageProxy::didFinishDocumentLoadForFrame(WebFrameProxy* frame, APIObject* userData)
 {
-    m_loaderClient.didFinishDocumentLoadForFrame(this, frame);
+    m_loaderClient.didFinishDocumentLoadForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didFinishLoadForFrame(WebFrameProxy* frame)
+void WebPageProxy::didFinishLoadForFrame(WebFrameProxy* frame, APIObject* userData)
 {
     frame->didFinishLoad();
-    m_loaderClient.didFinishLoadForFrame(this, frame);
+    m_loaderClient.didFinishLoadForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didFailLoadForFrame(WebFrameProxy* frame)
+void WebPageProxy::didFailLoadForFrame(WebFrameProxy* frame, APIObject* userData)
 {
-    m_loaderClient.didFailLoadWithErrorForFrame(this, frame);
+    m_loaderClient.didFailLoadWithErrorForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didReceiveTitleForFrame(WebFrameProxy* frame, const String& title)
+void WebPageProxy::didReceiveTitleForFrame(WebFrameProxy* frame, const String& title, APIObject* userData)
 {
     frame->didReceiveTitle(title);
 
@@ -973,17 +1023,17 @@ void WebPageProxy::didReceiveTitleForFrame(WebFrameProxy* frame, const String& t
     if (frame == m_mainFrame)
         m_pageTitle = title;
 
-    m_loaderClient.didReceiveTitleForFrame(this, title.impl(), frame);
+    m_loaderClient.didReceiveTitleForFrame(this, title, frame, userData);
 }
 
-void WebPageProxy::didFirstLayoutForFrame(WebFrameProxy* frame)
+void WebPageProxy::didFirstLayoutForFrame(WebFrameProxy* frame, APIObject* userData)
 {
-    m_loaderClient.didFirstLayoutForFrame(this, frame);
+    m_loaderClient.didFirstLayoutForFrame(this, frame, userData);
 }
 
-void WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy* frame)
+void WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy* frame, APIObject* userData)
 {
-    m_loaderClient.didFirstVisuallyNonEmptyLayoutForFrame(this, frame);
+    m_loaderClient.didFirstVisuallyNonEmptyLayoutForFrame(this, frame, userData);
 }
 
 // PolicyClient
diff --git a/WebKit2/UIProcess/WebPageProxy.h b/WebKit2/UIProcess/WebPageProxy.h
index bb50286..4a1387d 100644
--- a/WebKit2/UIProcess/WebPageProxy.h
+++ b/WebKit2/UIProcess/WebPageProxy.h
@@ -205,16 +205,16 @@ private:
     void didCreateMainFrame(uint64_t frameID);
     void didCreateSubFrame(uint64_t frameID);
 
-    void didStartProvisionalLoadForFrame(WebFrameProxy*, const String&);
-    void didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy*, const String&);
-    void didFailProvisionalLoadForFrame(WebFrameProxy*);
-    void didCommitLoadForFrame(WebFrameProxy*, const PlatformCertificateInfo&);
-    void didFinishDocumentLoadForFrame(WebFrameProxy*);
-    void didFinishLoadForFrame(WebFrameProxy*);
-    void didFailLoadForFrame(WebFrameProxy*);
-    void didReceiveTitleForFrame(WebFrameProxy*, const String&);
-    void didFirstLayoutForFrame(WebFrameProxy*);
-    void didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy*);
+    void didStartProvisionalLoadForFrame(WebFrameProxy*, const String&, APIObject*);
+    void didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy*, const String&, APIObject*);
+    void didFailProvisionalLoadForFrame(WebFrameProxy*, APIObject*);
+    void didCommitLoadForFrame(WebFrameProxy*, const PlatformCertificateInfo&, APIObject*);
+    void didFinishDocumentLoadForFrame(WebFrameProxy*, APIObject*);
+    void didFinishLoadForFrame(WebFrameProxy*, APIObject*);
+    void didFailLoadForFrame(WebFrameProxy*, APIObject*);
+    void didReceiveTitleForFrame(WebFrameProxy*, const String&, APIObject*);
+    void didFirstLayoutForFrame(WebFrameProxy*, APIObject*);
+    void didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy*, APIObject*);
     void didStartProgress();
     void didChangeProgress(double);
     void didFinishProgress();
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
index 1fb8220..602ffb9 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
@@ -49,19 +49,22 @@ enum {
 typedef uint32_t WKAffinityType;
 
 // Loader Client
-typedef void (*WKBundlePageDidStartProvisionalLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
-typedef void (*WKBundlePageDidReceiveServerRedirectForProvisionalLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
-typedef void (*WKBundlePageDidFailProvisionalLoadWithErrorForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo); // FIXME: Add WKErrorRef.
-typedef void (*WKBundlePageDidCommitLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
-typedef void (*WKBundlePageDidDocumentFinishLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
-typedef void (*WKBundlePageDidFinishLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
-typedef void (*WKBundlePageDidFailLoadWithErrorForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo); // FIXME: Add WKErrorRef.
-typedef void (*WKBundlePageDidReceiveTitleForFrameCallback)(WKBundlePageRef page, WKStringRef title, WKBundleFrameRef frame, const void *clientInfo);
+typedef void (*WKBundlePageDidStartProvisionalLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidReceiveServerRedirectForProvisionalLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidFailProvisionalLoadWithErrorForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo); // FIXME: Add WKErrorRef.
+typedef void (*WKBundlePageDidCommitLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidDocumentFinishLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidFinishLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidFinishDocumentLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidFailLoadWithErrorForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo); // FIXME: Add WKErrorRef.
+typedef void (*WKBundlePageDidReceiveTitleForFrameCallback)(WKBundlePageRef page, WKStringRef title, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidFirstLayoutForFrame)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+typedef void (*WKBundlePageDidFirstVisuallyNonEmptyLayoutForFrame)(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo);
+// FIXME: There are no WKPage equivilent of these functions yet.
 typedef void (*WKBundlePageDidClearWindowObjectForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKBundleScriptWorldRef world, const void *clientInfo);
 typedef void (*WKBundlePageDidCancelClientRedirectForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
 typedef void (*WKBundlePageWillPerformClientRedirectForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, WKURLRef url, double delay, double date, const void *clientInfo);
 typedef void (*WKBundlePageDidChangeLocationWithinPageForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
-typedef void (*WKBundlePageDidFinishDocumentLoadForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
 typedef void (*WKBundlePageDidHandleOnloadEventsForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
 typedef void (*WKBundlePageDidDisplayInsecureContentForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo);
 typedef void (*WKBundlePageDidRunInsecureContentForFrameCallback)(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo); // FIXME: Add WKSecurityOriginRef.
@@ -78,6 +81,10 @@ struct WKBundlePageLoaderClient {
     WKBundlePageDidFinishLoadForFrameCallback                           didFinishLoadForFrame;
     WKBundlePageDidFailLoadWithErrorForFrameCallback                    didFailLoadWithErrorForFrame;
     WKBundlePageDidReceiveTitleForFrameCallback                         didReceiveTitleForFrame;
+    WKBundlePageDidFirstLayoutForFrame                                  didFirstLayoutForFrame;
+    WKBundlePageDidFirstVisuallyNonEmptyLayoutForFrame                  didFirstVisuallyNonEmptyLayoutForFrame;
+
+    // FIXME: There are no WKPage equivilent of these functions yet.
     WKBundlePageDidClearWindowObjectForFrameCallback                    didClearWindowObjectForFrame;
     WKBundlePageDidCancelClientRedirectForFrameCallback                 didCancelClientRedirectForFrame;
     WKBundlePageWillPerformClientRedirectForFrameCallback               willPerformClientRedirectForFrame;
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp
index b47cede..118b638 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp
@@ -47,94 +47,160 @@ void InjectedBundlePageLoaderClient::initialize(WKBundlePageLoaderClient* client
         memset(&m_client, 0, sizeof(m_client));
 }
 
-void InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didStartProvisionalLoadForFrame)
-        m_client.didStartProvisionalLoadForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didStartProvisionalLoadForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didStartProvisionalLoadForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
+}
+
+void InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
+{
+    if (!m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
-        m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didFailProvisionalLoadWithErrorForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didFailProvisionalLoadWithErrorForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didCommitLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didFailProvisionalLoadWithErrorForFrame)
-        m_client.didFailProvisionalLoadWithErrorForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didCommitLoadForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didCommitLoadForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didCommitLoadForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didCommitLoadForFrame)
-        m_client.didCommitLoadForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didFinishDocumentLoadForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didFinishDocumentLoadForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didFinishLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didFinishDocumentLoadForFrame)
-        m_client.didFinishDocumentLoadForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didFinishLoadForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didFinishLoadForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didFinishLoadForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didFinishLoadForFrame)
-        m_client.didFinishLoadForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didFailLoadWithErrorForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didFailLoadWithErrorForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame(WebPage* page, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didReceiveTitleForFrame(WebPage* page, const String& title, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didFailLoadWithErrorForFrame)
-        m_client.didFailLoadWithErrorForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didReceiveTitleForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didReceiveTitleForFrame(toRef(page), toRef(title.impl()), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
-void InjectedBundlePageLoaderClient::didReceiveTitleForFrame(WebPage* page, const String& title, WebFrame* frame)
+void InjectedBundlePageLoaderClient::didFirstLayoutForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
 {
-    if (m_client.didReceiveTitleForFrame)
-        m_client.didReceiveTitleForFrame(toRef(page), toRef(title.impl()), toRef(frame), m_client.clientInfo);
+    if (!m_client.didFirstLayoutForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didFirstLayoutForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
+}
+
+void InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
+{
+    if (!m_client.didFirstVisuallyNonEmptyLayoutForFrame)
+        return;
+
+    WKTypeRef userDataToPass = 0;
+    m_client.didFirstVisuallyNonEmptyLayoutForFrame(toRef(page), toRef(frame), &userDataToPass, m_client.clientInfo);
+    userData = adoptRef(toWK(userDataToPass));
 }
 
 void InjectedBundlePageLoaderClient::didClearWindowObjectForFrame(WebPage* page, WebFrame* frame, DOMWrapperWorld* world)
 {
-    if (m_client.didClearWindowObjectForFrame)
-        m_client.didClearWindowObjectForFrame(toRef(page), toRef(frame), toRef(InjectedBundleScriptWorld::getOrCreate(world).get()), m_client.clientInfo);
+    if (!m_client.didClearWindowObjectForFrame)
+        return;
+
+    m_client.didClearWindowObjectForFrame(toRef(page), toRef(frame), toRef(InjectedBundleScriptWorld::getOrCreate(world).get()), m_client.clientInfo);
 }
 
 void InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame(WebPage* page, WebFrame* frame)
 {
-    if (m_client.didCancelClientRedirectForFrame)
-        m_client.didCancelClientRedirectForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didCancelClientRedirectForFrame)
+        return;
+
+    m_client.didCancelClientRedirectForFrame(toRef(page), toRef(frame), m_client.clientInfo);
 }
 
 void InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame(WebPage* page, WebFrame* frame, const String& url, double delay, double date)
 {
-    if (m_client.willPerformClientRedirectForFrame)
-        m_client.willPerformClientRedirectForFrame(toRef(page), toRef(frame), toURLRef(url.impl()), delay, date, m_client.clientInfo);
+    if (!m_client.willPerformClientRedirectForFrame)
+        return;
+
+    m_client.willPerformClientRedirectForFrame(toRef(page), toRef(frame), toURLRef(url.impl()), delay, date, m_client.clientInfo);
 }
 
 void InjectedBundlePageLoaderClient::didChangeLocationWithinPageForFrame(WebPage* page, WebFrame* frame)
 {
-    if (m_client.didChangeLocationWithinPageForFrame)
-        m_client.didChangeLocationWithinPageForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didChangeLocationWithinPageForFrame)
+        return;
+
+    m_client.didChangeLocationWithinPageForFrame(toRef(page), toRef(frame), m_client.clientInfo);
 }
 
 void InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame(WebPage* page, WebFrame* frame)
 {
-    if (m_client.didHandleOnloadEventsForFrame)
-        m_client.didHandleOnloadEventsForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didHandleOnloadEventsForFrame)
+        return;
+
+    m_client.didHandleOnloadEventsForFrame(toRef(page), toRef(frame), m_client.clientInfo);
 }
 
 void InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame(WebPage* page, WebFrame* frame)
 {
-    if (m_client.didDisplayInsecureContentForFrame)
-        m_client.didDisplayInsecureContentForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didDisplayInsecureContentForFrame)
+        return;
+
+    m_client.didDisplayInsecureContentForFrame(toRef(page), toRef(frame), m_client.clientInfo);
 }
 
 void InjectedBundlePageLoaderClient::didRunInsecureContentForFrame(WebPage* page, WebFrame* frame)
 {
-    if (m_client.didRunInsecureContentForFrame)
-        m_client.didRunInsecureContentForFrame(toRef(page), toRef(frame), m_client.clientInfo);
+    if (!m_client.didRunInsecureContentForFrame)
+        return;
+
+    m_client.didRunInsecureContentForFrame(toRef(page), toRef(frame), m_client.clientInfo);
 }
 
 } // namespace WebKit
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h
index 84dbb1b..2c73964 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h
@@ -36,6 +36,7 @@ class DOMWrapperWorld;
 
 namespace WebKit {
 
+class APIObject;
 class WebPage;
 class WebFrame;
 
@@ -44,14 +45,17 @@ public:
     InjectedBundlePageLoaderClient();
     void initialize(WKBundlePageLoaderClient*);
 
-    void didStartProvisionalLoadForFrame(WebPage*, WebFrame*);
-    void didReceiveServerRedirectForProvisionalLoadForFrame(WebPage*, WebFrame*);
-    void didFailProvisionalLoadWithErrorForFrame(WebPage*, WebFrame*);
-    void didCommitLoadForFrame(WebPage*, WebFrame*);
-    void didFinishDocumentLoadForFrame(WebPage*, WebFrame*);
-    void didFinishLoadForFrame(WebPage*, WebFrame*);
-    void didFailLoadWithErrorForFrame(WebPage*, WebFrame*);
-    void didReceiveTitleForFrame(WebPage*, const String&, WebFrame*);
+    void didStartProvisionalLoadForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didReceiveServerRedirectForProvisionalLoadForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didFailProvisionalLoadWithErrorForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didCommitLoadForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didFinishDocumentLoadForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didFinishLoadForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didFailLoadWithErrorForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didReceiveTitleForFrame(WebPage*, const String&, WebFrame*, RefPtr<APIObject>& userData);
+    void didFirstLayoutForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+    void didFirstVisuallyNonEmptyLayoutForFrame(WebPage*, WebFrame*, RefPtr<APIObject>& userData);
+
     void didClearWindowObjectForFrame(WebPage*, WebFrame*, WebCore::DOMWrapperWorld*);
     void didCancelClientRedirectForFrame(WebPage*, WebFrame*);
     void willPerformClientRedirectForFrame(WebPage*, WebFrame*, const String& url, double delay, double date);
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
index 6447dfa..ea34287 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
@@ -207,12 +207,13 @@ void WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad()
 
     DocumentLoader* provisionalLoader = m_frame->coreFrame()->loader()->provisionalDocumentLoader();
     const String& url = provisionalLoader->url().string();
+    RefPtr<APIObject> userData;
 
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didReceiveServerRedirectForProvisionalLoadForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didReceiveServerRedirectForProvisionalLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveServerRedirectForProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), url));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveServerRedirectForProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 void WebFrameLoaderClient::dispatchDidCancelClientRedirect()
@@ -278,12 +279,13 @@ void WebFrameLoaderClient::dispatchDidStartProvisionalLoad()
 
     DocumentLoader* provisionalLoader = m_frame->coreFrame()->loader()->provisionalDocumentLoader();
     const String& url = provisionalLoader->url().string();
+    RefPtr<APIObject> userData;
 
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didStartProvisionalLoadForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didStartProvisionalLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidStartProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), url));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidStartProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
@@ -292,11 +294,13 @@ void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
     if (!webPage)
         return;
 
+    RefPtr<APIObject> userData;
+
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(webPage, title, m_frame);
+    webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(webPage, title, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveTitleForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), title));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveTitleForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), title, InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 void WebFrameLoaderClient::dispatchDidChangeIcons()
@@ -311,12 +315,13 @@ void WebFrameLoaderClient::dispatchDidCommitLoad()
         return;
 
     const ResourceResponse& response = m_frame->coreFrame()->loader()->documentLoader()->response();
+    RefPtr<APIObject> userData;
 
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didCommitLoadForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didCommitLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCommitLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), PlatformCertificateInfo(response)));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCommitLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), PlatformCertificateInfo(response), InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error)
@@ -325,11 +330,13 @@ void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& e
     if (!webPage)
         return;
 
+    RefPtr<APIObject> userData;
+
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didFailProvisionalLoadWithErrorForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didFailProvisionalLoadWithErrorForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFailProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFailProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
     
     // If we have a load listener, notify it.
     if (WebFrame::LoadListener* loadListener = m_frame->loadListener())
@@ -342,11 +349,13 @@ void WebFrameLoaderClient::dispatchDidFailLoad(const ResourceError& error)
     if (!webPage)
         return;
 
+    RefPtr<APIObject> userData;
+
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didFailLoadWithErrorForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didFailLoadWithErrorForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFailLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFailLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
 
     // If we have a load listener, notify it.
     if (WebFrame::LoadListener* loadListener = m_frame->loadListener())
@@ -359,11 +368,13 @@ void WebFrameLoaderClient::dispatchDidFinishDocumentLoad()
     if (!webPage)
         return;
 
+    RefPtr<APIObject> userData;
+
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didFinishDocumentLoadForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didFinishDocumentLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishDocumentLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishDocumentLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 void WebFrameLoaderClient::dispatchDidFinishLoad()
@@ -372,11 +383,13 @@ void WebFrameLoaderClient::dispatchDidFinishLoad()
     if (!webPage)
         return;
 
+    RefPtr<APIObject> userData;
+
     // Notify the bundle client.
-    webPage->injectedBundleLoaderClient().didFinishLoadForFrame(webPage, m_frame);
+    webPage->injectedBundleLoaderClient().didFinishLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
 
     // If we have a load listener, notify it.
     if (WebFrame::LoadListener* loadListener = m_frame->loadListener())
@@ -389,7 +402,13 @@ void WebFrameLoaderClient::dispatchDidFirstLayout()
     if (!webPage)
         return;
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFirstLayoutForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    RefPtr<APIObject> userData;
+
+    // Notify the bundle client.
+    webPage->injectedBundleLoaderClient().didFirstLayoutForFrame(webPage, m_frame, userData);
+
+    // Notify the UIProcess.
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFirstLayoutForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 void WebFrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
@@ -398,7 +417,13 @@ void WebFrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
     if (!webPage)
         return;
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFirstVisuallyNonEmptyLayoutForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID()));
+    RefPtr<APIObject> userData;
+
+    // Notify the bundle client.
+    webPage->injectedBundleLoaderClient().didFirstVisuallyNonEmptyLayoutForFrame(webPage, m_frame, userData);
+
+    // Notify the UIProcess.
+    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFirstVisuallyNonEmptyLayoutForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
 }
 
 Frame* WebFrameLoaderClient::dispatchCreatePage()
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index 71e9e23..ebd908f 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,37 @@
+2010-09-18  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Dan Bernstein.
+
+        Improve/unify the PageLoadClient interfaces
+        https://bugs.webkit.org/show_bug.cgi?id=46043
+
+        * MiniBrowser/mac/BrowserWindowController.m:
+        (didStartProvisionalLoadForFrame):
+        (didReceiveServerRedirectForProvisionalLoadForFrame):
+        (didFailProvisionalLoadWithErrorForFrame):
+        (didCommitLoadForFrame):
+        (didFinishDocumentLoadForFrame):
+        (didFinishLoadForFrame):
+        (didFailLoadWithErrorForFrame):
+        (didReceiveTitleForFrame):
+        (didFirstLayoutForFrame):
+        (didFirstVisuallyNonEmptyLayoutForFrame):
+        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
+        (WTR::InjectedBundlePage::InjectedBundlePage):
+        (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
+        (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
+        (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
+        (WTR::InjectedBundlePage::didCommitLoadForFrame):
+        (WTR::InjectedBundlePage::didFinishLoadForFrame):
+        (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
+        (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
+        (WTR::InjectedBundlePage::didReceiveTitleForFrame):
+        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::didReceiveMessageFromInjectedBundle):
+        (WTR::TestController::didFinishLoadForFrame):
+        * WebKitTestRunner/TestController.h:
+
 2010-09-17  Eric Seidel  <eric at webkit.org>
 
         Unreviewed.  Adding a shell script I use to run the
diff --git a/WebKitTools/MiniBrowser/mac/BrowserWindowController.m b/WebKitTools/MiniBrowser/mac/BrowserWindowController.m
index 757e555..bc17c70 100644
--- a/WebKitTools/MiniBrowser/mac/BrowserWindowController.m
+++ b/WebKitTools/MiniBrowser/mac/BrowserWindowController.m
@@ -248,54 +248,54 @@
 
 #pragma mark Loader Client Callbacks
 
-static void didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     [(BrowserWindowController *)clientInfo didStartProvisionalLoadForFrame:frame];
 }
 
-static void didReceiveServerRedirectForProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didReceiveServerRedirectForProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     [(BrowserWindowController *)clientInfo didReceiveServerRedirectForProvisionalLoadForFrame:frame];
 }
 
-static void didFailProvisionalLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didFailProvisionalLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     [(BrowserWindowController *)clientInfo didFailProvisionalLoadWithErrorForFrame:frame];
 }
 
-static void didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     [(BrowserWindowController *)clientInfo didCommitLoadForFrame:frame];
 }
 
-static void didFinishDocumentLoadForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didFinishDocumentLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     LOG(@"didFinishDocumentLoadForFrame");
 }
 
-static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     LOG(@"didFinishLoadForFrame");
 }
 
-static void didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     [(BrowserWindowController *)clientInfo didFailLoadWithErrorForFrame:frame];
 }
 
-static void didReceiveTitleForFrame(WKPageRef page, WKStringRef title, WKFrameRef frame, const void *clientInfo)
+static void didReceiveTitleForFrame(WKPageRef page, WKStringRef title, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     CFStringRef cfTitle = WKStringCopyCFString(0, title);
     LOG(@"didReceiveTitleForFrame \"%@\"", (NSString *)cfTitle);
     CFRelease(cfTitle);
 }
 
-static void didFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     LOG(@"didFirstLayoutForFrame");
 }
 
-static void didFirstVisuallyNonEmptyLayoutForFrame(WKPageRef page, WKFrameRef frame, const void *clientInfo)
+static void didFirstVisuallyNonEmptyLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
 {
     LOG(@"didFirstVisuallyNonEmptyLayoutForFrame");
 }
diff --git a/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp b/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
index 5f0052c..92e0332 100644
--- a/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
+++ b/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
@@ -145,6 +145,8 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
         didFinishLoadForFrame,
         didFailLoadWithErrorForFrame,
         didReceiveTitleForFrame,
+        0,
+        0,
         didClearWindowForFrame,
         didCancelClientRedirectForFrame,
         willPerformClientRedirectForFrame,
@@ -204,37 +206,42 @@ void InjectedBundlePage::reset()
 
 // Loader Client Callbacks
 
-void InjectedBundlePage::didStartProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didStartProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didStartProvisionalLoadForFrame(frame);
 }
 
-void InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didReceiveServerRedirectForProvisionalLoadForFrame(frame);
 }
 
-void InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didFailProvisionalLoadWithErrorForFrame(frame);
 }
 
-void InjectedBundlePage::didCommitLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didCommitLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didCommitLoadForFrame(frame);
 }
 
-void InjectedBundlePage::didFinishLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didFinishLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didFinishLoadForFrame(frame);
 }
 
-void InjectedBundlePage::didFailLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didFinishDocumentLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void* clientInfo)
+{
+    static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didFinishDocumentLoadForFrame(frame);
+}
+
+void InjectedBundlePage::didFailLoadWithErrorForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didFailLoadWithErrorForFrame(frame);
 }
 
-void InjectedBundlePage::didReceiveTitleForFrame(WKBundlePageRef page, WKStringRef title, WKBundleFrameRef frame, const void *clientInfo)
+void InjectedBundlePage::didReceiveTitleForFrame(WKBundlePageRef page, WKStringRef title, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didReceiveTitleForFrame(title, frame);
 }
@@ -259,11 +266,6 @@ void InjectedBundlePage::didChangeLocationWithinPageForFrame(WKBundlePageRef pag
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didChangeLocationWithinPageForFrame(frame);
 }
 
-void InjectedBundlePage::didFinishDocumentLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void* clientInfo)
-{
-    static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didFinishDocumentLoadForFrame(frame);
-}
-
 void InjectedBundlePage::didHandleOnloadEventsForFrame(WKBundlePageRef page, WKBundleFrameRef frame, const void* clientInfo)
 {
     static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->didHandleOnloadEventsForFrame(frame);
diff --git a/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h b/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
index 06601bb..19b9f21 100644
--- a/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
+++ b/WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
@@ -47,18 +47,18 @@ public:
 
 private:
     // Loader Client
-    static void didStartProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didCommitLoadForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didFinishLoadForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didFailLoadWithErrorForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didReceiveTitleForFrame(WKBundlePageRef, WKStringRef title, WKBundleFrameRef, const void*);
+    static void didStartProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*);
+    static void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*);
+    static void didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*);
+    static void didCommitLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*);
+    static void didFinishLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*);
+    static void didFinishDocumentLoadForFrame(WKBundlePageRef, WKBundleFrameRef,  WKTypeRef*, const void*);
+    static void didFailLoadWithErrorForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*);
+    static void didReceiveTitleForFrame(WKBundlePageRef, WKStringRef title, WKBundleFrameRef, WKTypeRef*, const void*);
     static void didClearWindowForFrame(WKBundlePageRef, WKBundleFrameRef, WKBundleScriptWorldRef, const void*);
     static void didCancelClientRedirectForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
     static void willPerformClientRedirectForFrame(WKBundlePageRef, WKBundleFrameRef, WKURLRef url, double delay, double date, const void*);
     static void didChangeLocationWithinPageForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
-    static void didFinishDocumentLoadForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
     static void didHandleOnloadEventsForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
     static void didDisplayInsecureContentForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
     static void didRunInsecureContentForFrame(WKBundlePageRef, WKBundleFrameRef, const void*);
diff --git a/WebKitTools/WebKitTestRunner/TestController.cpp b/WebKitTools/WebKitTestRunner/TestController.cpp
index 2464e90..a71b07d 100644
--- a/WebKitTools/WebKitTestRunner/TestController.cpp
+++ b/WebKitTools/WebKitTestRunner/TestController.cpp
@@ -250,7 +250,7 @@ void TestController::run()
 
 // WKContextInjectedBundleClient
 
-void TestController::didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo)
+void TestController::didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void* clientInfo)
 {
     static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveMessageFromInjectedBundle(messageName, messageBody);
 }
@@ -262,7 +262,7 @@ void TestController::didReceiveMessageFromInjectedBundle(WKStringRef messageName
 
 // WKPageLoaderClient
 
-void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, const void* clientInfo)
+void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void* clientInfo)
 {
     static_cast<TestController*>(const_cast<void*>(clientInfo))->didFinishLoadForFrame(page, frame);
 }
diff --git a/WebKitTools/WebKitTestRunner/TestController.h b/WebKitTools/WebKitTestRunner/TestController.h
index 5f6d99d..a9e6ab3 100644
--- a/WebKitTools/WebKitTestRunner/TestController.h
+++ b/WebKitTools/WebKitTestRunner/TestController.h
@@ -75,7 +75,7 @@ private:
     void didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);
 
     // WKPageLoaderClient
-    static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, const void*);
+    static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void*);
     void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame);
 
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list