Created
November 3, 2011 15:44
-
-
Save bbandix/1336819 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Source/WebKit2/UIProcess/API/qt/qbasewebview.h b/Source/WebKit2/UIProcess/API/qt/qbasewebview.h | |
index 05cf550..06076d2 100644 | |
--- a/Source/WebKit2/UIProcess/API/qt/qbasewebview.h | |
+++ b/Source/WebKit2/UIProcess/API/qt/qbasewebview.h | |
@@ -79,6 +79,7 @@ Q_SIGNALS: | |
void loadSucceeded(); | |
void loadFailed(QBaseWebView::ErrorType errorType, int errorCode, const QUrl& url); | |
void loadProgressChanged(int progress); | |
+ void initialLayoutCompleted(); | |
void urlChanged(const QUrl& url); | |
void messageReceived(const QVariantMap& message); | |
void downloadRequested(QWebDownloadItem* downloadItem); | |
diff --git a/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp | |
index afa9377..eb0a16f 100644 | |
--- a/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp | |
+++ b/Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp | |
@@ -185,6 +185,12 @@ void QDesktopWebViewPrivate::didChangeLoadProgress(int percentageLoaded) | |
emit q->loadProgressChanged(percentageLoaded); | |
} | |
+void QDesktopWebViewPrivate::didCompleteInitialLayout() | |
+{ | |
+ Q_Q(QDesktopWebView); | |
+ emit q->initialLayoutCompleted(); | |
+} | |
+ | |
void QDesktopWebViewPrivate::showContextMenu(QSharedPointer<QMenu> menu) | |
{ | |
Q_Q(QDesktopWebView); | |
diff --git a/Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h b/Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h | |
index 252e6c3..5c22447 100644 | |
--- a/Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h | |
+++ b/Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h | |
@@ -70,6 +70,7 @@ private: | |
virtual void loadDidSucceed(); | |
virtual void loadDidFail(const QtWebError&); | |
virtual void didChangeLoadProgress(int); | |
+ virtual void didCompleteInitialLayout(); | |
virtual void showContextMenu(QSharedPointer<QMenu>); | |
virtual void hideContextMenu(); | |
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp b/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp | |
index a570b0a..785dbe0 100644 | |
--- a/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp | |
+++ b/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp | |
@@ -41,6 +41,7 @@ private slots: | |
void reload(); | |
void stop(); | |
void loadProgress(); | |
+ void initialLayout(); | |
void show(); | |
private: | |
@@ -172,6 +173,16 @@ void tst_CommonViewTests::loadProgress() | |
QCOMPARE(viewAbstraction->loadProgress(), 100); | |
} | |
+void tst_CommonViewTests::initialLayout() | |
+{ | |
+ QSignalSpy initialLoadFinishedSpy(viewAbstraction.data(), SIGNAL(initialLayoutCompleted())); | |
+ | |
+ viewAbstraction->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"))); | |
+ QVERIFY(waitForSignal(viewAbstraction.data(), SIGNAL(initialLayoutCompleted()))); | |
+ | |
+ QCOMPARE(initialLoadFinishedSpy.size(), 1); | |
+} | |
+ | |
void tst_CommonViewTests::show() | |
{ | |
// This should not crash. | |
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp b/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp | |
index 2baa336..7ac28ad 100644 | |
--- a/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp | |
+++ b/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.cpp | |
@@ -37,6 +37,7 @@ WebViewAbstraction::WebViewAbstraction() | |
connect(touchWebView(), SIGNAL(loadSucceeded()), this, SLOT(touchViewLoadSucceeded())); | |
connect(touchWebView(), SIGNAL(loadFailed(QBaseWebView::ErrorType, int, const QUrl&)), this, SLOT(touchViewLoadFailed(QBaseWebView::ErrorType, int, const QUrl&))); | |
connect(touchWebView(), SIGNAL(loadProgressChanged(int)), this, SLOT(touchViewLoadProgressChanged(int))); | |
+ connect(touchWebView(), SIGNAL(initialLayoutCompleted()), this, SLOT(touchViewInitialLayoutCompleted())); | |
screenHalf.moveLeft(screenHalf.right()); | |
m_desktopWebViewWindow.setGeometry(screenHalf); | |
@@ -45,6 +46,7 @@ WebViewAbstraction::WebViewAbstraction() | |
connect(desktopWebView(), SIGNAL(loadSucceeded()), this, SLOT(desktopViewLoadSucceeded())); | |
connect(desktopWebView(), SIGNAL(loadFailed(QBaseWebView::ErrorType, int, const QUrl&)), this, SLOT(desktopViewLoadFailed(QBaseWebView::ErrorType, int, const QUrl&))); | |
connect(desktopWebView(), SIGNAL(loadProgressChanged(int)), this, SLOT(desktopViewLoadProgressChanged(int))); | |
+ connect(desktopWebView(), SIGNAL(initialLayoutCompleted()), this, SLOT(desktopViewInitialLayoutCompleted())); | |
} | |
void WebViewAbstraction::show() | |
@@ -177,6 +179,20 @@ void WebViewAbstraction::desktopViewLoadProgressChanged(int progress) | |
emit loadProgressChanged(progress); | |
} | |
+void WebViewAbstraction::touchViewInitialLayoutCompleted() | |
+{ | |
+ m_touchViewSignalsCounter[SIGNAL(initialLayoutCompleted())]++; | |
+ if (m_touchViewSignalsCounter[SIGNAL(initialLayoutCompleted())] == m_desktopViewSignalsCounter[SIGNAL(initialLayoutCompleted())]) | |
+ emit initialLayoutCompleted(); | |
+} | |
+ | |
+void WebViewAbstraction::desktopViewInitialLayoutCompleted() | |
+{ | |
+ m_desktopViewSignalsCounter[SIGNAL(initialLayoutCompleted())]++; | |
+ if (m_touchViewSignalsCounter[SIGNAL(initialLayoutCompleted())] == m_desktopViewSignalsCounter[SIGNAL(initialLayoutCompleted())]) | |
+ emit initialLayoutCompleted(); | |
+} | |
+ | |
QTouchWebView* WebViewAbstraction::touchWebView() const | |
{ | |
return static_cast<QTouchWebView*>(m_touchWebViewWindow.webView.data()); | |
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h b/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h | |
index cfcb441..485a328 100644 | |
--- a/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h | |
+++ b/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/webviewabstraction.h | |
@@ -51,6 +51,7 @@ Q_SIGNALS: | |
void loadSucceeded(); | |
void loadFailed(QBaseWebView::ErrorType, int, const QUrl&); | |
void loadProgressChanged(int); | |
+ void initialLayoutCompleted(); | |
private Q_SLOTS: | |
void touchViewLoadStarted(); | |
@@ -61,6 +62,8 @@ private Q_SLOTS: | |
void desktopViewLoadFailed(QBaseWebView::ErrorType, int, const QUrl&); | |
void touchViewLoadProgressChanged(int); | |
void desktopViewLoadProgressChanged(int); | |
+ void touchViewInitialLayoutCompleted(); | |
+ void desktopViewInitialLayoutCompleted(); | |
private: | |
QTouchWebView* touchWebView() const; | |
diff --git a/Source/WebKit2/UIProcess/qt/ClientImpl.cpp b/Source/WebKit2/UIProcess/qt/ClientImpl.cpp | |
index 802ede6..ef5357a 100644 | |
--- a/Source/WebKit2/UIProcess/qt/ClientImpl.cpp | |
+++ b/Source/WebKit2/UIProcess/qt/ClientImpl.cpp | |
@@ -119,6 +119,13 @@ static void qt_wk_didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, | |
dispatchLoadFailed(frame, clientInfo, error); | |
} | |
+static void qt_wk_didFirstVisuallyNonEmptyLayoutForFrame(WKPageRef, WKFrameRef frame, WKTypeRef, const void* clientInfo) | |
+{ | |
+ if (!WKFrameIsMainFrame(frame)) | |
+ return; | |
+ toQtWebPageProxy(clientInfo)->didCompleteInitialLayout(); | |
+} | |
+ | |
static void qt_wk_didSameDocumentNavigationForFrame(WKPageRef page, WKFrameRef frame, WKSameDocumentNavigationType type, WKTypeRef userData, const void* clientInfo) | |
{ | |
WebFrameProxy* wkframe = toImpl(frame); | |
@@ -311,6 +318,7 @@ void setupPageLoaderClient(QtWebPageProxy* qtWebPageProxy, WebPageProxy* webPage | |
loadClient.didCommitLoadForFrame = qt_wk_didCommitLoadForFrame; | |
loadClient.didFinishLoadForFrame = qt_wk_didFinishLoadForFrame; | |
loadClient.didFailLoadWithErrorForFrame = qt_wk_didFailLoadWithErrorForFrame; | |
+ loadClient.didFirstVisuallyNonEmptyLayoutForFrame = qt_wk_didFirstVisuallyNonEmptyLayoutForFrame; | |
loadClient.didSameDocumentNavigationForFrame = qt_wk_didSameDocumentNavigationForFrame; | |
loadClient.didReceiveTitleForFrame = qt_wk_didReceiveTitleForFrame; | |
loadClient.didStartProgress = qt_wk_didStartProgress; | |
diff --git a/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.cpp b/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.cpp | |
index f9f9b96..b48f427 100644 | |
--- a/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.cpp | |
+++ b/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.cpp | |
@@ -137,6 +137,11 @@ void QtTouchViewInterface::loadDidFail(const QtWebError& error) | |
emit m_viewportView->loadFailed(static_cast<QBaseWebView::ErrorType>(error.type()), error.errorCode(), error.url()); | |
} | |
+void QtTouchViewInterface::didCompleteInitialLayout() | |
+{ | |
+ emit m_viewportView->initialLayoutCompleted(); | |
+} | |
+ | |
void QtTouchViewInterface::didChangeLoadProgress(int percentageLoaded) | |
{ | |
emit m_viewportView->loadProgressChanged(percentageLoaded); | |
diff --git a/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.h b/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.h | |
index a4fd457..6ff9f8b 100644 | |
--- a/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.h | |
+++ b/Source/WebKit2/UIProcess/qt/QtTouchViewInterface.h | |
@@ -67,6 +67,7 @@ private: | |
virtual void loadDidSucceed(); | |
virtual void loadDidFail(const QtWebError&); | |
virtual void didChangeLoadProgress(int); | |
+ virtual void didCompleteInitialLayout(); | |
virtual void showContextMenu(QSharedPointer<QMenu>); | |
virtual void hideContextMenu(); | |
diff --git a/Source/WebKit2/UIProcess/qt/QtViewInterface.h b/Source/WebKit2/UIProcess/qt/QtViewInterface.h | |
index a818911..2b73637 100644 | |
--- a/Source/WebKit2/UIProcess/qt/QtViewInterface.h | |
+++ b/Source/WebKit2/UIProcess/qt/QtViewInterface.h | |
@@ -77,6 +77,7 @@ public: | |
virtual void loadDidCommit() = 0; | |
virtual void loadDidSucceed() = 0; | |
virtual void loadDidFail(const QtWebError&) = 0; | |
+ virtual void didCompleteInitialLayout() = 0; | |
virtual void didChangeLoadProgress(int) = 0; | |
virtual void showContextMenu(QSharedPointer<QMenu>) = 0; | |
diff --git a/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp b/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp | |
index 9454f56..a4a0e26 100644 | |
--- a/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp | |
+++ b/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp | |
@@ -399,6 +399,11 @@ void QtWebPageProxy::loadDidFail(const QtWebError& error) | |
m_viewInterface->loadDidFail(error); | |
} | |
+void QtWebPageProxy::didCompleteInitialLayout() | |
+{ | |
+ m_viewInterface->didCompleteInitialLayout(); | |
+} | |
+ | |
void QtWebPageProxy::didChangeLoadProgress(int newLoadProgress) | |
{ | |
m_loadProgress = newLoadProgress; | |
diff --git a/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h b/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h | |
index de01db2..7a57f3e 100644 | |
--- a/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h | |
+++ b/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h | |
@@ -135,6 +135,7 @@ public: | |
void loadDidCommit(); | |
void loadDidSucceed(); | |
void loadDidFail(const QtWebError&); | |
+ void didCompleteInitialLayout(); | |
void didChangeLoadProgress(int); | |
int loadProgress() const { return m_loadProgress; } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment