Android: Stop using getPrimaryClipDescription

The function getPrimaryClipDescription was used to establish if the
clipboard data had text, html and/or uris. Analysing QTBUG-106646 and
tst_qquicktextedit showed inconsistent results, namely the description
hasMimeType failed to find html mimetype on copy&paste.
This patch changes it for searching it by hand instead of using
hasMimeType function.

Task-number: QTBUG-106646
Change-Id: I8918938e7a3fa6953eac95b72959fca85050e52f
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
This commit is contained in:
Samuel Mira 2022-09-30 14:05:02 +03:00
parent 54df3488af
commit 2937cf91c7

View File

@ -1052,15 +1052,7 @@ public class QtNative
public static boolean hasClipboardText()
{
try {
if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) {
ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription();
return primaryClipDescription.hasMimeType("text/*");
}
} catch (Exception e) {
Log.e(QtTAG, "Failed to get clipboard data", e);
}
return false;
return hasClipboardMimeType("text/plain");
}
private static String getClipboardText()
@ -1106,19 +1098,27 @@ public class QtNative
}
}
public static boolean hasClipboardHtml()
private static boolean hasClipboardMimeType(String mimeType)
{
try {
if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) {
ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription();
return primaryClipDescription.hasMimeType("text/html");
}
} catch (Exception e) {
Log.e(QtTAG, "Failed to get clipboard data", e);
if (m_clipboardManager == null)
return false;
ClipData clip = m_clipboardManager.getPrimaryClip();
ClipDescription description = clip.getDescription();
for (int i = 0; i < description.getMimeTypeCount(); ++i) {
String itemMimeType = description.getMimeType(i);
if (itemMimeType.equals(mimeType))
return true;
}
return false;
}
public static boolean hasClipboardHtml()
{
return hasClipboardMimeType("text/html");
}
private static String getClipboardHtml()
{
try {
@ -1145,15 +1145,7 @@ public class QtNative
public static boolean hasClipboardUri()
{
try {
if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) {
ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription();
return primaryClipDescription.hasMimeType("text/uri-list");
}
} catch (Exception e) {
Log.e(QtTAG, "Failed to get clipboard data", e);
}
return false;
return hasClipboardMimeType("text/uri-list");
}
private static String[] getClipboardUris()