diff options
| author | Kristian Monsen <kristianm@google.com> | 2010-09-08 12:18:00 +0100 |
|---|---|---|
| committer | Kristian Monsen <kristianm@google.com> | 2010-09-11 12:08:58 +0100 |
| commit | 5ddde30071f639962dd557c453f2ad01f8f0fd00 (patch) | |
| tree | 775803c4ab35af50aa5f5472cd1fb95fe9d5152d /WebKitTools/DumpRenderTree/qt | |
| parent | 3e63d9b33b753ca86d0765d1b3d711114ba9e34f (diff) | |
| download | external_webkit-5ddde30071f639962dd557c453f2ad01f8f0fd00.zip external_webkit-5ddde30071f639962dd557c453f2ad01f8f0fd00.tar.gz external_webkit-5ddde30071f639962dd557c453f2ad01f8f0fd00.tar.bz2 | |
Merge WebKit at r66666 : Initial merge by git.
Change-Id: I57dedeb49859adc9c539e760f0e749768c66626f
Diffstat (limited to 'WebKitTools/DumpRenderTree/qt')
| -rw-r--r-- | WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro | 1 | ||||
| -rw-r--r-- | WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp | 105 | ||||
| -rw-r--r-- | WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h | 18 | ||||
| -rw-r--r-- | WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp | 8 | ||||
| -rw-r--r-- | WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h | 4 | ||||
| -rw-r--r-- | WebKitTools/DumpRenderTree/qt/main.cpp | 14 |
6 files changed, 114 insertions, 36 deletions
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro index 63554b2..5b81901 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro @@ -6,7 +6,6 @@ BASEDIR = $$PWD/../ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../.. include(../../../WebKit.pri) -INCLUDEPATH += /usr/include/freetype2 INCLUDEPATH += ../../.. INCLUDEPATH += ../../../JavaScriptCore INCLUDEPATH += ../../../JavaScriptCore/ForwardingHeaders diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp index 4a57d1d..00ccdb5 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp @@ -159,7 +159,7 @@ WebPage::WebPage(QObject* parent, DumpRenderTree* drt) connect(this, SIGNAL(requestPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain)), this, SLOT(requestPermission(QWebFrame*, QWebPage::PermissionDomain))); connect(this, SIGNAL(checkPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain, QWebPage::PermissionPolicy&)), this, SLOT(checkPermission(QWebFrame*, QWebPage::PermissionDomain, QWebPage::PermissionPolicy&))); - connect(this, SIGNAL(cancelRequestsForPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain)), this, SLOT(cancelRequestsForPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain))); + connect(this, SIGNAL(cancelRequestsForPermission(QWebFrame*, QWebPage::PermissionDomain)), this, SLOT(cancelPermission(QWebFrame*, QWebPage::PermissionDomain))); } WebPage::~WebPage() @@ -202,6 +202,8 @@ void WebPage::resetSettings() QWebSettings::setMaximumPagesInCache(0); // reset to default settings()->setUserStyleSheetUrl(QUrl()); // reset to default + + m_pendingGeolocationRequests.clear(); } QWebPage *WebPage::createWindow(QWebPage::WebWindowType) @@ -224,6 +226,15 @@ void WebPage::requestPermission(QWebFrame* frame, QWebPage::PermissionDomain dom if (!m_drt->layoutTestController()->ignoreReqestForPermission()) setUserPermission(frame, domain, PermissionGranted); break; + case GeolocationPermissionDomain: + if (m_drt->layoutTestController()->isGeolocationPermissionSet()) + if (m_drt->layoutTestController()->geolocationPermission()) + setUserPermission(frame, domain, PermissionGranted); + else + setUserPermission(frame, domain, PermissionDenied); + else + m_pendingGeolocationRequests.append(frame); + break; default: break; } @@ -243,8 +254,35 @@ void WebPage::checkPermission(QWebFrame* frame, QWebPage::PermissionDomain domai } } -void WebPage::cancelRequestsForPermission(QWebFrame*, QWebPage::PermissionDomain) +void WebPage::cancelPermission(QWebFrame* frame, QWebPage::PermissionDomain domain) +{ + switch (domain) { + case GeolocationPermissionDomain: + m_pendingGeolocationRequests.removeOne(frame); + break; + default: + break; + } +} + +void WebPage::permissionSet(QWebPage::PermissionDomain domain) { + switch (domain) { + case GeolocationPermissionDomain: + { + Q_ASSERT(m_drt->layoutTestController()->isGeolocationPermissionSet()); + foreach (QWebFrame* frame, m_pendingGeolocationRequests) + if (m_drt->layoutTestController()->geolocationPermission()) + setUserPermission(frame, domain, PermissionGranted); + else + setUserPermission(frame, domain, PermissionDenied); + + m_pendingGeolocationRequests.clear(); + break; + } + default: + break; + } } static QString urlSuitableForTestResult(const QString& url) @@ -367,11 +405,6 @@ QObject* WebPage::createPlugin(const QString& classId, const QUrl& url, const QS #endif } -bool WebPage::allowGeolocationRequest(QWebFrame *) -{ - return m_drt->layoutTestController()->geolocationPermission(); -} - void WebPage::setViewGeometry(const QRect& rect) { if (WebViewGraphicsBased* v = qobject_cast<WebViewGraphicsBased*>(view())) @@ -391,7 +424,7 @@ DumpRenderTree::DumpRenderTree() : m_dumpPixels(false) , m_stdin(0) , m_enableTextOutput(false) - , m_singleFileMode(false) + , m_standAloneMode(false) , m_graphicsBased(false) , m_persistentStoragePath(QString(getenv("DUMPRENDERTREE_TEMP"))) { @@ -431,6 +464,9 @@ DumpRenderTree::DumpRenderTree() connect(m_controller, SIGNAL(showPage()), this, SLOT(showPage())); connect(m_controller, SIGNAL(hidePage()), this, SLOT(hidePage())); + // async geolocation permission set by controller + connect(m_controller, SIGNAL(geolocationPermissionSet()), this, SLOT(geolocationPermissionSet())); + connect(m_controller, SIGNAL(done()), this, SLOT(dump())); m_eventSender = new EventSender(m_page); m_textInputController = new TextInputController(m_page); @@ -605,6 +641,40 @@ void DumpRenderTree::readLine() processLine(QString::fromLocal8Bit(line.constData(), line.length())); } +void DumpRenderTree::processArgsLine(const QStringList &args) +{ + setStandAloneMode(true); + + for (int i = 1; i < args.size(); ++i) + if (!args.at(i).startsWith('-')) + m_standAloneModeTestList.append(args[i]); + + QFileInfo firstEntry(m_standAloneModeTestList.first()); + if (firstEntry.isDir()) { + QDir folderEntry(m_standAloneModeTestList.first()); + QStringList supportedExt; + // Check for all supported extensions (from Scripts/webkitpy/layout_tests/layout_package/test_files.py). + supportedExt << "*.html" << "*.shtml" << "*.xml" << "*.xhtml" << "*.xhtmlmp" << "*.pl" << "*.php" << "*.svg"; + m_standAloneModeTestList = folderEntry.entryList(supportedExt, QDir::Files); + for (int i = 0; i < m_standAloneModeTestList.size(); ++i) + m_standAloneModeTestList[i] = folderEntry.absoluteFilePath(m_standAloneModeTestList[i]); + } + + processLine(m_standAloneModeTestList.first()); + m_standAloneModeTestList.removeFirst(); + + connect(this, SIGNAL(ready()), this, SLOT(loadNextTestInStandAloneMode())); +} + +void DumpRenderTree::loadNextTestInStandAloneMode() +{ + if (m_standAloneModeTestList.isEmpty()) + emit quit(); + + processLine(m_standAloneModeTestList.first()); + m_standAloneModeTestList.removeFirst(); +} + void DumpRenderTree::processLine(const QString &input) { QString line = input; @@ -636,14 +706,9 @@ void DumpRenderTree::processLine(const QString &input) fi = QFileInfo(currentDir, line.prepend(QLatin1String("LayoutTests/"))); if (!fi.exists()) { - if (isSingleFileMode()) - emit quit(); - else - emit ready(); - + emit ready(); return; } - } open(QUrl::fromLocalFile(fi.absoluteFilePath())); @@ -834,7 +899,7 @@ void DumpRenderTree::dump() QWebFrame *mainFrame = m_page->mainFrame(); - if (isSingleFileMode()) { + if (isStandAloneMode()) { QString markup = mainFrame->toHtml(); fprintf(stdout, "Source:\n\n%s\n", markup.toUtf8().constData()); } @@ -922,10 +987,7 @@ void DumpRenderTree::dump() fflush(stdout); fflush(stderr); - if (isSingleFileMode()) - emit quit(); - else - emit ready(); + emit ready(); } void DumpRenderTree::titleChanged(const QString &s) @@ -999,6 +1061,11 @@ int DumpRenderTree::windowCount() const return windows.count() + 1; } +void DumpRenderTree::geolocationPermissionSet() +{ + m_page->permissionSet(QWebPage::GeolocationPermissionDomain); +} + void DumpRenderTree::switchFocus(bool focused) { QFocusEvent event((focused) ? QEvent::FocusIn : QEvent::FocusOut, Qt::ActiveWindowFocusReason); diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h index de0c6c5..3d34443 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h @@ -79,9 +79,6 @@ public: void setTextOutputEnabled(bool enable) { m_enableTextOutput = enable; } bool isTextOutputEnabled() { return m_enableTextOutput; } - void setSingleFileMode(bool flag) { m_singleFileMode = flag; } - bool isSingleFileMode() { return m_singleFileMode; } - void setGraphicsBased(bool flag) { m_graphicsBased = flag; } bool isGraphicsBased() { return m_graphicsBased; } @@ -106,6 +103,7 @@ public: #if defined(Q_WS_X11) static void initializeFonts(); #endif + void processArgsLine(const QStringList&); public Q_SLOTS: void initJSObjects(); @@ -128,8 +126,13 @@ private Q_SLOTS: void showPage(); void hidePage(); void dryRunPrint(QWebFrame*); + void loadNextTestInStandAloneMode(); + void geolocationPermissionSet(); private: + void setStandAloneMode(bool flag) { m_standAloneMode = flag; } + bool isStandAloneMode() { return m_standAloneMode; } + QString dumpFramesAsText(QWebFrame* frame); QString dumpBackForwardList(QWebPage* page); QString dumpFrameScrollPosition(QWebFrame* frame); @@ -137,6 +140,7 @@ private: bool m_dumpPixels; QString m_expectedHash; + QStringList m_standAloneModeTestList; WebPage *m_page; QWidget* m_mainView; @@ -150,7 +154,7 @@ private: QList<QObject*> windows; bool m_enableTextOutput; - bool m_singleFileMode; + bool m_standAloneMode; bool m_graphicsBased; QString m_persistentStoragePath; }; @@ -188,12 +192,13 @@ public: QObject* createPlugin(const QString&, const QUrl&, const QStringList&, const QStringList&); + void permissionSet(QWebPage::PermissionDomain domain); + public slots: bool shouldInterruptJavaScript() { return false; } - bool allowGeolocationRequest(QWebFrame *frame); void requestPermission(QWebFrame* frame, QWebPage::PermissionDomain domain); void checkPermission(QWebFrame* frame, QWebPage::PermissionDomain domain, QWebPage::PermissionPolicy& policy); - void cancelRequestsForPermission(QWebFrame* frame, QWebPage::PermissionDomain domain); + void cancelPermission(QWebFrame* frame, QWebPage::PermissionDomain domain); protected: bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, NavigationType type); @@ -204,6 +209,7 @@ private slots: private: QWebInspector* m_webInspector; + QList<QWebFrame*> m_pendingGeolocationRequests; DumpRenderTree *m_drt; }; diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp index 74baf37..b783141 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp @@ -68,6 +68,8 @@ void LayoutTestController::reset() m_userStyleSheetEnabled = false; m_desktopNotificationAllowedOrigins.clear(); m_ignoreDesktopNotification = false; + m_isGeolocationPermissionSet = false; + m_geolocationPermission = false; DumpRenderTreeSupportQt::dumpEditingCallbacks(false); DumpRenderTreeSupportQt::dumpFrameLoader(false); @@ -715,6 +717,12 @@ void LayoutTestController::setMockDeviceOrientation(bool canProvideAlpha, double void LayoutTestController::setGeolocationPermission(bool allow) { + setGeolocationPermissionCommon(allow); + emit geolocationPermissionSet(); +} + +void LayoutTestController::setGeolocationPermissionCommon(bool allow) +{ m_isGeolocationPermissionSet = true; m_geolocationPermission = allow; } diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h index 207e093..7e58f44 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h @@ -85,6 +85,7 @@ signals: void showPage(); void hidePage(); + void geolocationPermissionSet(); public slots: void maybeDump(bool ok); @@ -239,6 +240,9 @@ private slots: void processWork(); private: + void setGeolocationPermissionCommon(bool allow); + +private: bool m_hasDumped; bool m_textDump; bool m_dumpBackForwardList; diff --git a/WebKitTools/DumpRenderTree/qt/main.cpp b/WebKitTools/DumpRenderTree/qt/main.cpp index 7d1c08c..8349d73 100644 --- a/WebKitTools/DumpRenderTree/qt/main.cpp +++ b/WebKitTools/DumpRenderTree/qt/main.cpp @@ -143,7 +143,8 @@ int main(int argc, char* argv[]) QStringList args = app.arguments(); if (args.count() < 2) { - qDebug() << "Usage: DumpRenderTree [-v|--pixel-tests] filename"; + qDebug() << "Usage: DumpRenderTree [-v|--pixel-tests] filename [filename2..n]"; + qDebug() << "Or folder containing test files: DumpRenderTree [-v|--pixel-tests] dirpath"; exit(0); } @@ -161,15 +162,8 @@ int main(int argc, char* argv[]) if (args.contains(QLatin1String("-"))) { QObject::connect(&dumper, SIGNAL(ready()), &dumper, SLOT(readLine()), Qt::QueuedConnection); QTimer::singleShot(0, &dumper, SLOT(readLine())); - } else { - dumper.setSingleFileMode(true); - for (int i = 1; i < args.size(); ++i) { - if (!args.at(i).startsWith('-')) { - dumper.processLine(args.at(i)); - break; - } - } - } + } else + dumper.processArgsLine(args); return app.exec(); |
