From f720619e0df51a0bdcb330762fadd7fb254542df Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 10 Mar 2016 14:38:37 +0100 Subject: [PATCH] Remove Windows CE from tests (others). Remove #ifdef sections for Q_OS_WINCE, wince .pro file clauses and CE-specific files. Task-number: QTBUG-51673 Change-Id: Ibf599204f5c0daaef086edaf8fac86853db3ee14 Reviewed-by: Lars Knoll --- .../languagechange/tst_languagechange.cpp | 12 +- tests/auto/other/other.pro | 5 +- .../other/qaccessibility/qaccessibility.pro | 6 - .../qaccessibility/tst_qaccessibility.cpp | 22 -- .../other/windowsmobile/test/ddhelper.cpp | 148 ------------- .../auto/other/windowsmobile/test/ddhelper.h | 49 ----- tests/auto/other/windowsmobile/test/test.pro | 23 --- .../test/testQMenuBar_current.png | Bin 22964 -> 0 bytes .../test/testSimpleWidget_current.png | Bin 23841 -> 0 bytes .../windowsmobile/test/tst_windowsmobile.cpp | 195 ------------------ .../windowsmobile/test/windowsmobile.qrc | 6 - .../other/windowsmobile/testQMenuBar/main.cpp | 98 --------- .../testQMenuBar/testQMenuBar.pro | 5 - .../other/windowsmobile/windowsmobile.pro | 9 - tests/auto/xml/dom/qdom/qdom.pro | 5 - .../shared/baselineprotocol.cpp | 3 - .../corelib/io/qdiriterator/main.cpp | 5 - .../corelib/io/qdiriterator/qdiriterator.pro | 7 - tests/benchmarks/corelib/io/qfile/main.cpp | 7 +- .../benchmarks/corelib/io/qfileinfo/main.cpp | 4 +- .../io/qprocess/tst_bench_qprocess.cpp | 7 +- .../tools/containers-sequential/main.cpp | 7 +- .../corelib/tools/qcryptographichash/main.cpp | 9 - .../qgraphicsview/tst_qgraphicsview.cpp | 3 - .../gui/image/qimagereader/qimagereader.pro | 16 -- .../qnetworkreply/tst_qnetworkreply.cpp | 18 +- .../socket/qtcpserver/tst_qtcpserver.cpp | 3 - tests/manual/manual.pro | 6 +- 28 files changed, 15 insertions(+), 663 deletions(-) delete mode 100644 tests/auto/other/windowsmobile/test/ddhelper.cpp delete mode 100644 tests/auto/other/windowsmobile/test/ddhelper.h delete mode 100644 tests/auto/other/windowsmobile/test/test.pro delete mode 100644 tests/auto/other/windowsmobile/test/testQMenuBar_current.png delete mode 100644 tests/auto/other/windowsmobile/test/testSimpleWidget_current.png delete mode 100644 tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp delete mode 100644 tests/auto/other/windowsmobile/test/windowsmobile.qrc delete mode 100644 tests/auto/other/windowsmobile/testQMenuBar/main.cpp delete mode 100644 tests/auto/other/windowsmobile/testQMenuBar/testQMenuBar.pro delete mode 100644 tests/auto/other/windowsmobile/windowsmobile.pro diff --git a/tests/auto/other/languagechange/tst_languagechange.cpp b/tests/auto/other/languagechange/tst_languagechange.cpp index 7380398071c..22c2e1fbc70 100644 --- a/tests/auto/other/languagechange/tst_languagechange.cpp +++ b/tests/auto/other/languagechange/tst_languagechange.cpp @@ -281,9 +281,6 @@ void tst_languageChange::retranslatability() fooFile.write("test"); fooFile.close(); dlg.setDirectory(temporaryDir.path()); -#ifdef Q_OS_WINCE - dlg.setDirectory("\\Windows"); -#endif dlg.setFileMode(QFileDialog::ExistingFiles); dlg.setViewMode(QFileDialog::Detail); stateMachine.start(); @@ -295,13 +292,8 @@ void tst_languageChange::retranslatability() // In case we use a Color dialog, we do not want to test for // strings non existing in the dialog and which do not get // translated. - if ((dialogType == ColorDialog) && -#ifndef Q_OS_WINCE - (qApp->desktop()->width() < 480 || qApp->desktop()->height() < 350) -#else - true // On Qt/WinCE we always use compact mode -#endif - ) { + const QSize desktopSize = QApplication::desktop()->size(); + if (dialogType == ColorDialog && (desktopSize.width() < 480 || desktopSize.height() < 350)) { expected.remove("QColorDialog::&Basic colors"); expected.remove("QColorDialog::&Custom colors"); expected.remove("QColorDialog::&Define Custom Colors >>"); diff --git a/tests/auto/other/other.pro b/tests/auto/other/other.pro index 673e922fdd3..c229e7053bd 100644 --- a/tests/auto/other/other.pro +++ b/tests/auto/other/other.pro @@ -21,7 +21,6 @@ SUBDIRS=\ qsharedpointer_and_qwidget \ qprocess_and_guieventloop \ qtokenautomaton \ - windowsmobile \ toolsupport \ !qtHaveModule(widgets): SUBDIRS -= \ @@ -48,7 +47,7 @@ cross_compile: SUBDIRS -= \ atwrapper \ compiler -wince*|!contains(QT_CONFIG, accessibility): SUBDIRS -= qaccessibility +!contains(QT_CONFIG, accessibility): SUBDIRS -= qaccessibility !contains(QT_CONFIG, accessibility-atspi-bridge): SUBDIRS -= qaccessibilitylinux @@ -58,7 +57,7 @@ wince*|!contains(QT_CONFIG, accessibility): SUBDIRS -= qaccessibility macplist \ qaccessibilitymac -!embedded|wince: SUBDIRS -= \ +!embedded: SUBDIRS -= \ qdirectpainter winrt: SUBDIRS -= \ diff --git a/tests/auto/other/qaccessibility/qaccessibility.pro b/tests/auto/other/qaccessibility/qaccessibility.pro index 7b3173798df..f697aee38fc 100644 --- a/tests/auto/other/qaccessibility/qaccessibility.pro +++ b/tests/auto/other/qaccessibility/qaccessibility.pro @@ -7,12 +7,6 @@ HEADERS += accessiblewidgets.h unix:!darwin:!haiku:!integity: LIBS += -lm -wince { - accessneeded.files = $$QT_BUILD_TREE\\plugins\\accessible\\*.dll - accessneeded.path = accessible - DEPLOYMENT += accessneeded -} - win32 { !*g++:!winrt { include(../../../../src/3rdparty/iaccessible2/iaccessible2.pri) diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp index 99e3fc5bf21..046c77d6c36 100644 --- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp @@ -68,20 +68,6 @@ static inline void setFrameless(QWidget *w) w->setWindowFlags(flags); } -#if defined(Q_OS_WINCE) -extern "C" bool SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni); -#define SPI_GETPLATFORMTYPE 257 -inline bool IsValidCEPlatform() { - wchar_t tszPlatform[64]; - if (SystemParametersInfo(SPI_GETPLATFORMTYPE, sizeof(tszPlatform) / sizeof(*tszPlatform), tszPlatform, 0)) { - QString platform = QString::fromWCharArray(tszPlatform); - if ((platform == QLatin1String("PocketPC")) || (platform == QLatin1String("Smartphone"))) - return false; - } - return true; -} -#endif - static inline bool verifyChild(QWidget *child, QAccessibleInterface *interface, int index, const QRect &domain) { @@ -1469,10 +1455,6 @@ void tst_QAccessibility::menuTest() QCOMPARE(iHelp->role(), QAccessible::MenuItem); QCOMPARE(iAction->role(), QAccessible::MenuItem); #ifndef Q_OS_MAC -#ifdef Q_OS_WINCE - if (!IsValidCEPlatform()) - QSKIP("Tests do not work on Mobile platforms due to native menus"); -#endif QCOMPARE(mw.mapFromGlobal(interface->rect().topLeft()), mw.menuBar()->geometry().topLeft()); QCOMPARE(interface->rect().size(), mw.menuBar()->size()); @@ -3561,10 +3543,6 @@ void tst_QAccessibility::dockWidgetTest() void tst_QAccessibility::comboBoxTest() { -#if defined(Q_OS_WINCE) - if (!IsValidCEPlatform()) - QSKIP("Test skipped on Windows Mobile test hardware"); -#endif { // not editable combobox QComboBox combo; combo.addItems(QStringList() << "one" << "two" << "three"); diff --git a/tests/auto/other/windowsmobile/test/ddhelper.cpp b/tests/auto/other/windowsmobile/test/ddhelper.cpp deleted file mode 100644 index 3ce99a0ded9..00000000000 --- a/tests/auto/other/windowsmobile/test/ddhelper.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifdef Q_OS_WINCE_WM - -#include -#include - -static LPDIRECTDRAW g_pDD = NULL; // DirectDraw object -static LPDIRECTDRAWSURFACE g_pDDSSurface = NULL; // DirectDraw primary surface - -static DDSCAPS ddsCaps; -static DDSURFACEDESC ddsSurfaceDesc; -static void *buffer = NULL; - -static int width = 0; -static int height = 0; -static int pitch = 0; -static int bitCount = 0; -static int windowId = 0; - -static bool initialized = false; -static bool locked = false; - -void q_lock() -{ - if (locked) { - qWarning("Direct Painter already locked (QDirectPainter::lock())"); - return; - } - locked = true; - - - memset(&ddsSurfaceDesc, 0, sizeof(ddsSurfaceDesc)); - ddsSurfaceDesc.dwSize = sizeof(ddsSurfaceDesc); - - HRESULT h = g_pDDSSurface->Lock(0, &ddsSurfaceDesc, DDLOCK_WRITEONLY, 0); - if (h != DD_OK) - qDebug() << "GetSurfaceDesc failed!"; - - width = ddsSurfaceDesc.dwWidth; - height = ddsSurfaceDesc.dwHeight; - bitCount = ddsSurfaceDesc.ddpfPixelFormat.dwRGBBitCount; - pitch = ddsSurfaceDesc.lPitch; - buffer = ddsSurfaceDesc.lpSurface; -} - -void q_unlock() -{ - if( !locked) { - qWarning("Direct Painter not locked (QDirectPainter::unlock()"); - return; - } - g_pDDSSurface->Unlock(0); - locked = false; -} - -void q_initDD() -{ - if (initialized) - return; - - DirectDrawCreate(NULL, &g_pDD, NULL); - - HRESULT h; - h = g_pDD->SetCooperativeLevel(0, DDSCL_NORMAL); - - if (h != DD_OK) - qDebug() << "cooperation level failed"; - - h = g_pDD->TestCooperativeLevel(); - if (h != DD_OK) - qDebug() << "cooperation level failed test"; - - DDSURFACEDESC ddsd; - memset(&ddsd, 0, sizeof(ddsd)); - ddsd.dwSize = sizeof(ddsd); - - ddsd.dwFlags = DDSD_CAPS; - - ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; - - h = g_pDD->CreateSurface(&ddsd, &g_pDDSSurface, NULL); - - if (h != DD_OK) - qDebug() << "CreateSurface failed!"; - - if (g_pDDSSurface->GetCaps(&ddsCaps) != DD_OK) - qDebug() << "GetCaps failed"; - - q_lock(); - q_unlock(); - initialized = true; -} - -uchar* q_frameBuffer() -{ - return (uchar*) buffer; -} - -int q_screenDepth() -{ - return bitCount; -} - -int q_screenWidth() -{ - return width; -} - -int q_screenHeight() -{ - return height; -} - -int q_linestep() -{ - return pitch; -} - -#endif //Q_OS_WINCE_WM - - diff --git a/tests/auto/other/windowsmobile/test/ddhelper.h b/tests/auto/other/windowsmobile/test/ddhelper.h deleted file mode 100644 index ce68654b764..00000000000 --- a/tests/auto/other/windowsmobile/test/ddhelper.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __DDHELPER__ -#define __DDHELPER__ - -extern uchar* q_frameBuffer(); - -extern int q_screenDepth(); - -extern int q_screenWidth(); - -extern int q_screenHeight(); - -extern int q_linestep(); - -extern void q_initDD(); - -extern void q_unlock(); - -extern void q_lock(); - -#endif //__DDHELPER__ - diff --git a/tests/auto/other/windowsmobile/test/test.pro b/tests/auto/other/windowsmobile/test/test.pro deleted file mode 100644 index 36dd15f60ee..00000000000 --- a/tests/auto/other/windowsmobile/test/test.pro +++ /dev/null @@ -1,23 +0,0 @@ - -CONFIG += testcase -QT += widgets testlib -HEADERS += ddhelper.h -SOURCES += tst_windowsmobile.cpp ddhelper.cpp -RESOURCES += windowsmobile.qrc - -TARGET = ../tst_windowsmobile - -wincewm*: { - addFiles.files = $$OUT_PWD/../testQMenuBar/*.exe - - - addFiles.path = "\\Program Files\\tst_windowsmobile" - DEPLOYMENT += addFiles -} - -wincewm*: { - LIBS += Ddraw.lib -} - - - diff --git a/tests/auto/other/windowsmobile/test/testQMenuBar_current.png b/tests/auto/other/windowsmobile/test/testQMenuBar_current.png deleted file mode 100644 index f0042b8fe07054f6a2560e7127b42c41ccc0176f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22964 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

6h60ya6l=y8H_V#%>79_ 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%0A*rsCiGLWAH{t~7QeiWR5!R>86VsPg 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Ξ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 -#include -#include -#include -#include -#ifdef Q_OS_WINCE_WM -#include -#include "ddhelper.h" -#endif - - - -class tst_WindowsMobile : public QObject -{ - Q_OBJECT -public: - tst_WindowsMobile() - { - qApp->setCursorFlashTime (24 * 3600 * 1000); // once a day - // qApp->setCursorFlashTime (INT_MAX); -#ifdef Q_OS_WINCE_WM - q_initDD(); -#endif - } - -#if defined(Q_OS_WINCE_WM) && defined(_WIN32_WCE) && _WIN32_WCE <= 0x501 - private slots: - void testMainWindowAndMenuBar(); - void testSimpleWidget(); -#endif -}; - -#if defined(Q_OS_WINCE_WM) && defined(_WIN32_WCE) && _WIN32_WCE <= 0x501 - -bool qt_wince_is_platform(const QString &platformString) { - wchar_t tszPlatform[64]; - if (SystemParametersInfo(SPI_GETPLATFORMTYPE, - sizeof(tszPlatform)/sizeof(*tszPlatform),tszPlatform,0)) - if (0 == _tcsicmp(reinterpret_cast (platformString.utf16()), tszPlatform)) - return true; - return false; -} - -bool qt_wince_is_smartphone() { - return qt_wince_is_platform(QString::fromLatin1("Smartphone")); -} - -void openMenu() -{ - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,450,630,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,450,630,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,55535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,55535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,58535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,58535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,40535,55535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,40535,55535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,32535,55535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,32535,55535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,65535,65535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,50535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,50535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,55535,40535,0,0); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,55535,40535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,48535,45535,0,0); - QTest::qWait(2000); - ::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,48535,45535,0,0); -} - -void compareScreenshots(const QString &image1, const QString &image2) -{ - QImage screenShot(image1); - QImage original(image2); - - // cut away the title bar before comparing - QDesktopWidget desktop; - QRect desktopFrameRect = desktop.frameGeometry(); - QRect desktopClientRect = desktop.availableGeometry(); - - QPainter p1(&screenShot); - QPainter p2(&original); - - //screenShot.save("scr1.png", "PNG"); - p1.fillRect(0, 0, desktopFrameRect.width(), desktopClientRect.y(), Qt::black); - p2.fillRect(0, 0, desktopFrameRect.width(), desktopClientRect.y(), Qt::black); - - //screenShot.save("scr2.png", "PNG"); - //original.save("orig1.png", "PNG"); - - QCOMPARE(original, screenShot); -} - -void takeScreenShot(const QString filename) -{ - q_lock(); - QImage image = QImage(( uchar *) q_frameBuffer(), q_screenWidth(), - q_screenHeight(), q_screenWidth() * q_screenDepth() / 8, QImage::Format_RGB16); - image.save(filename, "PNG"); - q_unlock(); -} - -void tst_WindowsMobile::testMainWindowAndMenuBar() -{ - if (qt_wince_is_smartphone()) - QSKIP("This test is only for Windows Mobile"); - - QProcess process; - process.start("testQMenuBar.exe"); - QCOMPARE(process.state(), QProcess::Running); - QTest::qWait(6000); - openMenu(); - QTest::qWait(1000); - takeScreenShot("testQMenuBar_current.png"); - process.close(); - compareScreenshots("testQMenuBar_current.png", ":/testQMenuBar_current.png"); -} - -void tst_WindowsMobile::testSimpleWidget() -{ - if (qt_wince_is_smartphone()) - QSKIP("This test is only for Windows Mobile"); - - QMenuBar menubar; - menubar.show(); - QWidget maximized; - QPalette pal = maximized.palette(); - pal.setColor(QPalette::Background, Qt::red); - maximized.setPalette(pal); - maximized.showMaximized(); - QWidget widget; - widget.setGeometry(100, 100, 200, 200); - widget.setWindowTitle("Widget"); - widget.show(); - qApp->processEvents(); - QTest::qWait(1000); - - QWidget widget2; - widget2.setGeometry(100, 380, 300, 200); - widget2.setWindowTitle("Widget 2"); - widget2.setWindowFlags(Qt::Popup); - widget2.show(); - - qApp->processEvents(); - QTest::qWait(1000); - takeScreenShot("testSimpleWidget_current.png"); - compareScreenshots("testSimpleWidget_current.png", ":/testSimpleWidget_current.png"); -} - - -#endif //Q_OS_WINCE_WM - - -QTEST_MAIN(tst_WindowsMobile) -#include "tst_windowsmobile.moc" - diff --git a/tests/auto/other/windowsmobile/test/windowsmobile.qrc b/tests/auto/other/windowsmobile/test/windowsmobile.qrc deleted file mode 100644 index 5d6f61459e0..00000000000 --- a/tests/auto/other/windowsmobile/test/windowsmobile.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - testQMenuBar_current.png - testSimpleWidget_current.png - - diff --git a/tests/auto/other/windowsmobile/testQMenuBar/main.cpp b/tests/auto/other/windowsmobile/testQMenuBar/main.cpp deleted file mode 100644 index 8d9071ff72a..00000000000 --- a/tests/auto/other/windowsmobile/testQMenuBar/main.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include -#include -#include -#include - -int main(int argc, char * argv[]) -{ - QList widgets; - QApplication app(argc, argv); - - QMainWindow mainWindow; - mainWindow.setWindowTitle("Test"); - QMenu *fileMenu = mainWindow.menuBar()->addMenu("File"); - QMenu *editMenu = mainWindow.menuBar()->addMenu("Edit"); - QMenu *viewMenu = mainWindow.menuBar()->addMenu("View"); - QMenu *toolsMenu = mainWindow.menuBar()->addMenu("Tools"); - QMenu *optionsMenu = mainWindow.menuBar()->addMenu("Options"); - QMenu *helpMenu = mainWindow.menuBar()->addMenu("Help"); - - qApp->processEvents(); - - fileMenu->addAction("Open"); - QAction *close = fileMenu->addAction("Close"); - fileMenu->addSeparator(); - fileMenu->addAction("Exit"); - - close->setEnabled(false); - - editMenu->addAction("Cut"); - editMenu->addAction("Pase"); - editMenu->addAction("Copy"); - editMenu->addSeparator(); - editMenu->addAction("Find"); - - viewMenu->addAction("Hide"); - viewMenu->addAction("Show"); - viewMenu->addAction("Explore"); - QAction *visible = viewMenu->addAction("Visible"); - visible->setCheckable(true); - visible->setChecked(true); - - toolsMenu->addMenu("Hammer"); - toolsMenu->addMenu("Caliper"); - toolsMenu->addMenu("Helm"); - - optionsMenu->addMenu("Settings"); - optionsMenu->addMenu("Standard"); - optionsMenu->addMenu("Extended"); - - QMenu *subMenu = helpMenu->addMenu("Help"); - subMenu->addAction("Index"); - subMenu->addSeparator(); - subMenu->addAction("Vodoo Help"); - helpMenu->addAction("Contens"); - helpMenu->addSeparator(); - helpMenu->addAction("About"); - - QToolBar toolbar; - mainWindow.addToolBar(&toolbar); - toolbar.addAction(QIcon(qApp->style()->standardPixmap(QStyle::SP_FileIcon)), QString("textAction")); - - QTextEdit textEdit; - mainWindow.setCentralWidget(&textEdit); - - mainWindow.showMaximized(); - - app.exec(); -} diff --git a/tests/auto/other/windowsmobile/testQMenuBar/testQMenuBar.pro b/tests/auto/other/windowsmobile/testQMenuBar/testQMenuBar.pro deleted file mode 100644 index 12ef683c117..00000000000 --- a/tests/auto/other/windowsmobile/testQMenuBar/testQMenuBar.pro +++ /dev/null @@ -1,5 +0,0 @@ -SOURCES += main.cpp -QT += widgets -TARGET = ../testQMenuBar - -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/other/windowsmobile/windowsmobile.pro b/tests/auto/other/windowsmobile/windowsmobile.pro deleted file mode 100644 index 2e6b444d7bf..00000000000 --- a/tests/auto/other/windowsmobile/windowsmobile.pro +++ /dev/null @@ -1,9 +0,0 @@ - -TEMPLATE = subdirs - -wincewm* { - SUBDIRS = testQMenuBar -} - SUBDIRS += test - - diff --git a/tests/auto/xml/dom/qdom/qdom.pro b/tests/auto/xml/dom/qdom/qdom.pro index 3248b8e0e2e..dd1fa1a75bf 100644 --- a/tests/auto/xml/dom/qdom/qdom.pro +++ b/tests/auto/xml/dom/qdom/qdom.pro @@ -4,9 +4,4 @@ SOURCES += tst_qdom.cpp QT = core xml testlib -wince* { - wince*|qt_not_deployed { - DEPLOYMENT_PLUGIN += qcncodecs qjpcodecs qkrcodecs qtwcodecs - } -} TESTDATA += testdata/* doubleNamespaces.xml umlaut.xml diff --git a/tests/baselineserver/shared/baselineprotocol.cpp b/tests/baselineserver/shared/baselineprotocol.cpp index 305f7318a44..3335ff8ffc6 100644 --- a/tests/baselineserver/shared/baselineprotocol.cpp +++ b/tests/baselineserver/shared/baselineprotocol.cpp @@ -94,9 +94,6 @@ PlatformInfo PlatformInfo::localHostInfo() uname.start(QLS("uname"), QStringList() << QLS("-r")); if (uname.waitForFinished(3000)) pi.insert(PI_OSVersion, QString::fromLocal8Bit(uname.readAllStandardOutput().constData()).simplified()); -#elif defined(Q_OS_WINCE) - pi.insert(PI_OSName, QLS("WinCE")); - pi.insert(PI_OSVersion, QString::number(QSysInfo::windowsVersion())); #elif defined(Q_OS_WIN) pi.insert(PI_OSName, QLS("Windows")); pi.insert(PI_OSVersion, QString::number(QSysInfo::windowsVersion())); diff --git a/tests/benchmarks/corelib/io/qdiriterator/main.cpp b/tests/benchmarks/corelib/io/qdiriterator/main.cpp index a9fd7fd5eca..cd5a83e5477 100644 --- a/tests/benchmarks/corelib/io/qdiriterator/main.cpp +++ b/tests/benchmarks/corelib/io/qdiriterator/main.cpp @@ -59,10 +59,6 @@ private slots: void tst_qdiriterator::data() { -#if defined(Q_OS_WINCE) - QByteArray qtdir = qPrintable(QCoreApplication::applicationDirPath()); - qtdir += "/depot"; -#else #if defined(Q_OS_WIN) const char *qtdir = "C:\\depot\\qt\\main"; #else @@ -72,7 +68,6 @@ void tst_qdiriterator::data() fprintf(stderr, "QTDIR not set\n"); exit(1); } -#endif QTest::addColumn("dirpath"); QByteArray ba = QByteArray(qtdir) + "/src/corelib"; diff --git a/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro b/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro index 3cfb0b44dea..061b22a5d1d 100644 --- a/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro +++ b/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro @@ -6,10 +6,3 @@ CONFIG += release SOURCES += main.cpp qfilesystemiterator.cpp HEADERS += qfilesystemiterator.h - -wince* { - corelibdir.files = $$QT_SOURCE_TREE/src/corelib - corelibdir.path = ./depot/src - DEPLOYMENT += corelibdir -} - diff --git a/tests/benchmarks/corelib/io/qfile/main.cpp b/tests/benchmarks/corelib/io/qfile/main.cpp index 175dc740743..1966b307739 100644 --- a/tests/benchmarks/corelib/io/qfile/main.cpp +++ b/tests/benchmarks/corelib/io/qfile/main.cpp @@ -591,12 +591,7 @@ void tst_qfile::createSmallFiles() dir.cd("tst"); tmpDirName = dir.absolutePath(); -#if defined(Q_OS_WINCE) - for (int i = 0; i < 100; ++i) -#else - for (int i = 0; i < 1000; ++i) -#endif - { + for (int i = 0; i < 1000; ++i) { QFile f(tmpDirName + QLatin1Char('/') + QString::number(i)); f.open(QIODevice::WriteOnly); f.seek(511); diff --git a/tests/benchmarks/corelib/io/qfileinfo/main.cpp b/tests/benchmarks/corelib/io/qfileinfo/main.cpp index 24a32a7c724..5180e7c29ea 100644 --- a/tests/benchmarks/corelib/io/qfileinfo/main.cpp +++ b/tests/benchmarks/corelib/io/qfileinfo/main.cpp @@ -41,7 +41,7 @@ class qfileinfo : public QObject private slots: void existsTemporary(); void existsStatic(); -#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT) +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) void symLinkTargetPerformanceLNK(); void symLinkTargetPerformanceMounpoint(); #endif @@ -71,7 +71,7 @@ void qfileinfo::existsStatic() QBENCHMARK { QFileInfo::exists(appPath); } } -#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT) +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) void qfileinfo::symLinkTargetPerformanceLNK() { QVERIFY(QFile::link("file","link.lnk")); diff --git a/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp b/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp index d8792ed7ef5..782cad94a1f 100644 --- a/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp +++ b/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp @@ -33,7 +33,7 @@ class tst_QProcess : public QObject { Q_OBJECT -#if !defined(QT_NO_PROCESS) && !defined(Q_OS_WINCE) +#if !defined(QT_NO_PROCESS) private slots: void echoTest_performance(); @@ -41,8 +41,7 @@ private slots: #endif // QT_NO_PROCESS }; -#if !defined(QT_NO_PROCESS) && !defined(Q_OS_WINCE) -// Reading and writing to a process is not supported on Qt/CE +#if !defined(QT_NO_PROCESS) void tst_QProcess::echoTest_performance() { QProcess process; @@ -88,7 +87,7 @@ void tst_QProcess::echoTest_performance() QVERIFY(process.waitForFinished()); } -#endif // QT_NO_PROCESS && Q_OS_WINCE +#endif // QT_NO_PROCESS QTEST_MAIN(tst_QProcess) #include "tst_bench_qprocess.moc" diff --git a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp index 9ce8fffa8e1..64d3dd5733b 100644 --- a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp +++ b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp @@ -119,12 +119,7 @@ struct Large { // A "large" item type int x[1000]; }; -// Embedded devices typically have limited memory -#if defined(Q_OS_WINCE) -# define LARGE_MAX_SIZE 2000 -#else -# define LARGE_MAX_SIZE 20000 -#endif +#define LARGE_MAX_SIZE 20000 class tst_vector_vs_std : public QObject { diff --git a/tests/benchmarks/corelib/tools/qcryptographichash/main.cpp b/tests/benchmarks/corelib/tools/qcryptographichash/main.cpp index 045beb17f38..5799b32b1c1 100644 --- a/tests/benchmarks/corelib/tools/qcryptographichash/main.cpp +++ b/tests/benchmarks/corelib/tools/qcryptographichash/main.cpp @@ -34,15 +34,6 @@ #include -#ifdef Q_OS_WINCE -// no C89 time() on Windows CE: -// http://blogs.msdn.com/b/cenet/archive/2006/04/29/time-h-on-windows-ce.aspx -uint time(void *) -{ - return uint(-1); -} -#endif - class tst_bench_QCryptographicHash : public QObject { Q_OBJECT diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp index 7f52bb0eba9..0064ecbaaf8 100644 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp @@ -401,9 +401,6 @@ void tst_QGraphicsView::chipTester_data() void tst_QGraphicsView::chipTester() { -#ifdef Q_OS_WINCE_WM - QSKIP("WinCE WM: Fails on Windows Mobile w/o OpenGL"); -#endif QFETCH(bool, antialias); QFETCH(bool, opengl); QFETCH(int, operation); diff --git a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro index e54e2ffce5a..da1de139f25 100644 --- a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro +++ b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro @@ -8,19 +8,3 @@ SOURCES += tst_qimagereader.cpp !contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF !contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG QT += network - -wince { - addFiles.files = images - addFiles.path = . - - CONFIG(debug, debug|release):{ - imageFormatsPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/*d4.dll - } - - CONFIG(release, debug|release):{ - imageFormatsPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/*[^d]4.dll - } - imageFormatsPlugins.path = imageformats - DEPLOYMENT += addFiles imageFormatsPlugins -} - diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp index 73035be14f4..dfa658df110 100644 --- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -668,12 +668,8 @@ void tst_qnetworkreply::uploadPerformance() void tst_qnetworkreply::httpUploadPerformance() { -#if defined(Q_OS_WINCE_WM) - // Show some mercy for non-desktop platform/s - enum {UploadSize = 4*1024*1024}; // 4 MB -#else enum {UploadSize = 128*1024*1024}; // 128 MB -#endif + ThreadedDataReaderHttpServer reader; FixedSizeDataGenerator generator(UploadSize); @@ -739,12 +735,9 @@ void tst_qnetworkreply::httpDownloadPerformance() { QFETCH(bool, serverSendsContentLength); QFETCH(bool, chunkedEncoding); -#if defined(Q_OS_WINCE_WM) - // Show some mercy to non-desktop platform/s - enum {UploadSize = 4*1024*1024}; // 4 MB -#else + enum {UploadSize = 128*1024*1024}; // 128 MB -#endif + HttpDownloadPerformanceServer server(UploadSize, serverSendsContentLength, chunkedEncoding); QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1")); @@ -823,12 +816,7 @@ void tst_qnetworkreply::httpDownloadPerformanceDownloadBuffer() QFETCH(HttpDownloadPerformanceDownloadBufferTestType, testType); // On my Linux Desktop the results are already visible with 128 kB, however we use this to have good results. -#if defined(Q_OS_WINCE_WM) - // Show some mercy to non-desktop platform/s - enum {UploadSize = 4*1024*1024}; // 4 MB -#else enum {UploadSize = 32*1024*1024}; // 32 MB -#endif HttpDownloadPerformanceServer server(UploadSize, true, false); diff --git a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp index 2e4a3b3fcdc..3e731bec96a 100644 --- a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -166,9 +166,6 @@ void tst_QTcpServer::ipv6LoopbackPerformanceTest() QFETCH_GLOBAL(bool, setProxy); if (setProxy) return; -#if defined(Q_OS_WINCE_WM) - QSKIP("WinCE WM: Not yet supported"); -#endif QTcpServer server; if (!server.listen(QHostAddress::LocalHostIPv6, 0)) { diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro index 8777cc6e116..05988c21602 100644 --- a/tests/manual/manual.pro +++ b/tests/manual/manual.pro @@ -56,11 +56,7 @@ contains(QT_CONFIG, opengl) { contains(QT_CONFIG, egl): SUBDIRS += qopenglcontext } -win32 { - SUBDIRS -= network_remote_stresstest network_stresstest - # disable some tests on wince because of missing dependencies - wince: SUBDIRS -= lance windowmodality -} +win32: SUBDIRS -= network_remote_stresstest network_stresstest lessThan(QT_MAJOR_VERSION, 5): SUBDIRS -= bearerex lance qnetworkaccessmanager/qget qmimedatabase qnetworkreply \ qpainfo qscreen socketengine xembed-raster xembed-widgets windowtransparency \