From 448c3e85dddbfc5c101aceeeceb8584a3d41c913 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Thu, 21 Mar 2013 21:09:42 +0200 Subject: Fix Qt tests for Android. Change-Id: I53856056a00684a9a37596a74b79f46d3b47331f Reviewed-by: Eskil Abrahamsen Blomfeldt --- tests/auto/android/AndroidManifest.xml | 2 +- tests/auto/android/res/values/libs.xml | 28 ++++++----- tests/auto/android/runtests.pl | 26 ++++++---- .../src/org/qtproject/qt5/android/QtActivity.java | 7 +-- .../src/org/qtproject/qt5/android/QtNative.java | 55 ++++++++++++++++++++-- 5 files changed, 87 insertions(+), 31 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/android/AndroidManifest.xml b/tests/auto/android/AndroidManifest.xml index 32e2b88d66..bd1e0afc68 100644 --- a/tests/auto/android/AndroidManifest.xml +++ b/tests/auto/android/AndroidManifest.xml @@ -4,7 +4,7 @@ android:versionCode="1" android:versionName="1.0"> - + diff --git a/tests/auto/android/res/values/libs.xml b/tests/auto/android/res/values/libs.xml index 7f2858e554..43f1d4aff4 100644 --- a/tests/auto/android/res/values/libs.xml +++ b/tests/auto/android/res/values/libs.xml @@ -1,19 +1,21 @@ - QtCore - QtGui - QtTest - QtOpenGL - QtNetwork - QtScript - QtSql - QtXml - QtScriptTools - QtSvg - QtXmlPatterns - QtDeclarative - QtWebKit + gnustl_shared + Qt5Core + Qt5Gui + Qt5Widgets + Qt5Test + Qt5OpenGL + Qt5Network + Qt5Script + Qt5Sql + Qt5Xml + Qt5ScriptTools + Qt5Svg + Qt5XmlPatterns + Qt5Declarative + Qt5WebKit diff --git a/tests/auto/android/runtests.pl b/tests/auto/android/runtests.pl index 70a242f29f..7bb6833859 100755 --- a/tests/auto/android/runtests.pl +++ b/tests/auto/android/runtests.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################# ## +## Copyright (C) 2012-2013 BogDan Vatra ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -## Copyright (C) 2012 BogDan Vatra ## Contact: http://www.qt-project.org/legal ## ## This file is part of the test suite of the Qt Toolkit. @@ -61,7 +61,8 @@ my $help = 0; my $make_clean = 0; my $deploy_qt = 0; my $time_out=400; -my $android_sdk_dir = "$ENV{'HOME'}/NecessitasQtSDK/android-sdk"; +my $android_sdk_dir = "$ENV{'ANDROID_SDK_ROOT'}"; +my $android_ndk_dir = "$ENV{'ANDROID_NDK_ROOT'}"; my $ant_tool = `which ant`; chomp $ant_tool; my $strip_tool=""; @@ -74,6 +75,7 @@ GetOptions('h|help' => \$help , 'd|deploy' => \$deploy_qt , 'j|jobs=i' => \$jobs , 'sdk=s' => \$android_sdk_dir + , 'ndk=s' => \$android_ndk_dir , 'ant=s' => \$ant_tool , 'strip=s' => \$strip_tool , 'readelf=s' => \$readelf_tool @@ -87,8 +89,8 @@ system("$adb_tool devices") == 0 or die "No device found, please plug/start at l $device_serial = "-s $device_serial" if ($device_serial); $testsubset="/$testsubset" if ($testsubset); -$strip_tool="$ENV{'HOME'}/NecessitasQtSDK/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-strip" unless($strip_tool); -$readelf_tool="$ENV{'HOME'}/NecessitasQtSDK/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf" unless($readelf_tool); +$strip_tool="$android_ndk_dir/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-strip" unless($strip_tool); +$readelf_tool="$android_ndk_dir/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf" unless($readelf_tool); $readelf_tool="$readelf_tool -d -w "; sub dir @@ -141,7 +143,7 @@ sub waitForProcess return 0; } -my $src_dir_qt=abs_path(dirname($0)."/.."); +my $src_dir_qt=abs_path(dirname($0)."/../../.."); my $quadruplor_dir="$src_dir_qt/tests/auto/android"; my $qmake_path="$src_dir_qt/bin/qmake"; my $tests_dir="$src_dir_qt/tests$testsubset"; @@ -232,11 +234,12 @@ if ($deploy_qt) } system("cp -a plugins $temp_dir"); system("cp -a imports $temp_dir"); + system("cp -a qml $temp_dir"); pushd($temp_dir); system("find -name *.so | xargs $strip_tool --strip-unneeded"); popd; - system("$adb_tool $device_serial shell rm -r /data/local/qt"); # remove old qt libs - system("$adb_tool $device_serial push $temp_dir /data/local/qt"); # copy newer qt libs + system("$adb_tool $device_serial shell rm -r /data/local/tmp/qt"); # remove old qt libs + system("$adb_tool $device_serial push $temp_dir /data/local/tmp/qt"); # copy newer qt libs popd; } @@ -245,6 +248,7 @@ reinstallQuadruplor; ########### build qt tests and benchmarks ########### pushd($tests_dir); +print "Building $tests_dir \n"; system("make distclean") if ($make_clean); system("$qmake_path CONFIG-=QTDIR_build -r") == 0 or die "Can't run qmake\n"; #exec qmake system("make -j$jobs") == 0 or warn "Can't build all tests\n"; #exec make @@ -273,12 +277,12 @@ foreach (split("\n",$testsFiles)) { if (needsOpenGl("$temp_dir/libtst_$application.so")) { - startTest("/data/local/qt/plugins/platforms/android/libandroidGL-$sdk_api.so", "/data/data/$packageName/app_files/libtst_$application.so", 1 + startTest("/data/local/tmp/qt/plugins/platforms/android/libqtforandroidGL.so", "/data/data/$packageName/app_files/libtst_$application.so", 1 , "$output_name.xml") or warn "Can't run $application ...\n"; } else { - startTest("/data/local/qt/plugins/platforms/android/libandroid-$sdk_api.so", "/data/data/$packageName/app_files/libtst_$application.so", 0 + startTest("/data/local/tmp/qt/plugins/platforms/android/libqtforandroid.so", "/data/data/$packageName/app_files/libtst_$application.so", 0 , "$output_name.xml") or warn "Can't run $application stopping tests ...\n"; } } @@ -329,6 +333,10 @@ Make jobs when building tests. Android SDK path. +=item B<--ndk = ndk_path> + +Android NDK path. + =item B<--ant = ant_tool_path> Ant tool path. diff --git a/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java b/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java index ae4ca3c30a..6242f55488 100644 --- a/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java +++ b/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java @@ -90,7 +90,7 @@ public class QtActivity extends Activity { String qtLibs[] = getResources().getStringArray(R.array.qt_libs); ArrayList libraryList = new ArrayList(); for (int i = 0; i < qtLibs.length; i++) - libraryList.add("/data/local/qt/lib/lib" + qtLibs[i] + ".so"); + libraryList.add("/data/local/tmp/qt/lib/lib" + qtLibs[i] + ".so"); String mainLib = null; String nativeLibDir = null; @@ -124,8 +124,9 @@ public class QtActivity extends Activity { } String[] libs = new String[libraryList.size()]; libs = libraryList.toArray(libs); - loadQtLibs(libs, "QML_IMPORT_PATH=/data/local/qt/imports\tQT_PLUGIN_PATH=/data/local/qt/plugins", - "-xml\t-silent\t-o\toutput.xml", mainLib, nativeLibDir); + loadQtLibs(libs + ,"QT_QPA_EGLFS_HIDECURSOR=1\tQML2_IMPORT_PATH=/data/local/tmp/qt/qml\tQML_IMPORT_PATH=/data/local/tmp/qt/imports\tQT_PLUGIN_PATH=/data/local/tmp/qt/plugins" + , "-xml\t-silent\t-o\toutput.xml", mainLib, nativeLibDir); } catch (Exception e) { Log.e(QtNative.QtTAG, "Can't create main activity", e); } diff --git a/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java b/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java index 8faeabe5b0..d9995e3178 100644 --- a/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java +++ b/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java @@ -34,6 +34,7 @@ import android.app.Application; import android.content.Intent; import android.net.Uri; import android.util.Log; +import android.view.ContextMenu; import android.view.Menu; import android.view.MotionEvent; @@ -294,6 +295,9 @@ public class QtNative extends Application } } + private static void updateSelection(final int selStart, final int selEnd, final int candidatesStart, final int candidatesEnd) + { + } private static void showSoftwareKeyboard(final int x, final int y , final int width, final int height @@ -327,6 +331,11 @@ public class QtNative extends Application }); } + private static boolean isSoftwareKeyboardVisible() + { + return false; + } + private static void setFullScreen(final boolean fullScreen) { runAction(new Runnable() { @@ -338,10 +347,41 @@ public class QtNative extends Application }); } + private static void registerClipboardManager() + { + } + + private static void setClipboardText(String text) + { + } + + private static boolean hasClipboardText() + { + return false; + } + + private static String getClipboardText() + { + return "Qt"; + } + + private static void openContextMenu() + { + } + + private static void closeContextMenu() + { + } + + private static void resetOptionsMenu() + { + } + // screen methods public static native void setDisplayMetrics(int screenWidthPixels, int screenHeightPixels, int desktopWidthPixels, int desktopHeightPixels, double XDpi, double YDpi); + public static native void handleOrientationChanged(int newOrientation); // screen methods private static void showOptionsMenu() @@ -395,6 +435,7 @@ public class QtNative extends Application public static native void touchBegin(int winId); public static native void touchAdd(int winId, int pointerId, int action, boolean primary, int x, int y, float size, float pressure); public static native void touchEnd(int winId, int action); + public static native void longPress(int winId, int x, int y); // pointer methods // keyboard methods @@ -413,9 +454,13 @@ public class QtNative extends Application public static native void updateWindow(); // window methods - // options menu methods - public static native void createOptionsMenu(Menu menu); - public static native boolean prepareOptionsMenu(Menu menu); - public static native boolean optionsItemSelected(int groupId, int itemId); - // options menu methods + // menu methods + public static native boolean onPrepareOptionsMenu(Menu menu); + public static native boolean onOptionsItemSelected(int itemId, boolean checked); + public static native void onOptionsMenuClosed(Menu menu); + + public static native void onCreateContextMenu(ContextMenu menu); + public static native boolean onContextItemSelected(int itemId, boolean checked); + public static native void onContextMenuClosed(Menu menu); + // menu methods } -- cgit v1.2.3