Skip to content

Commit 18a14de

Browse files
annejanclaude
andauthored
fix: rename internal drag-drop MIME type to RFC 6838 form (#1468)
* fix: rename internal drag-drop MIME type to RFC 6838 form The internal MIME identifier QtPass uses for drag-and-drop payloads was registered as "application/vnd+qtpass.dragAndDropInfoPasswordStore". The '+' in that form is reserved for structured-syntax suffixes (e.g. "application/atom+xml") in RFC 6838; the vendor-tree separator is '.'. Rename to "application/vnd.qtpass.dragAndDropInfoPasswordStore". Used in exactly 9 places, all inside QtPass: - src/storemodel.cpp: mimeTypes(), mimeData(), canDropMimeData() x2, parseDropData() - tests/auto/model/tst_storemodel.cpp: 4 assertions + makeMimeData() Internal-only identifier (drag/drop happens between QtPass widgets in the same process), so no compatibility break. Also rearrange the test include block — <memory> now sits with the C++ stdlib headers above the Qt headers, matching the stdlib-then-Qt-then-project convention used elsewhere. Build clean, 33/33 storemodel tests pass. Other CodeRabbit nits in tst_util.cpp (DF9 underscore, hoist ASSUMED_MAX_KEY_ID_LENGTH, ScopedUmask RAII) were re-evaluated and still skipped — same rationale as #1467. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * test: QVERIFY2 on the two MIME-type assertions CodeRabbit nit on #1468 follow-up: bare QVERIFY() on the mimeTypes()/mimeData() assertions doesn't say which MIME string was expected if the test fails. Switch to QVERIFY2 with descriptive messages. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f0361c2 commit 18a14de

2 files changed

Lines changed: 18 additions & 14 deletions

File tree

src/storemodel.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ auto StoreModel::flags(const QModelIndex &index) const -> Qt::ItemFlags {
193193
*/
194194
auto StoreModel::mimeTypes() const -> QStringList {
195195
QStringList types;
196-
types << "application/vnd+qtpass.dragAndDropInfoPasswordStore";
196+
types << "application/vnd.qtpass.dragAndDropInfoPasswordStore";
197197
return types;
198198
}
199199

@@ -223,7 +223,7 @@ auto StoreModel::mimeData(const QModelIndexList &indexes) const -> QMimeData * {
223223
}
224224

225225
auto *mimeData = new QMimeData();
226-
mimeData->setData("application/vnd+qtpass.dragAndDropInfoPasswordStore",
226+
mimeData->setData("application/vnd.qtpass.dragAndDropInfoPasswordStore",
227227
encodedData);
228228
return mimeData;
229229
}
@@ -248,12 +248,12 @@ auto StoreModel::canDropMimeData(const QMimeData *data, Qt::DropAction action,
248248
#endif
249249

250250
if (data == nullptr ||
251-
!data->hasFormat("application/vnd+qtpass.dragAndDropInfoPasswordStore")) {
251+
!data->hasFormat("application/vnd.qtpass.dragAndDropInfoPasswordStore")) {
252252
return false;
253253
}
254254

255255
QByteArray encodedData =
256-
data->data("application/vnd+qtpass.dragAndDropInfoPasswordStore");
256+
data->data("application/vnd.qtpass.dragAndDropInfoPasswordStore");
257257
if (encodedData.isEmpty()) {
258258
return false;
259259
}
@@ -324,7 +324,7 @@ auto StoreModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
324324
auto StoreModel::parseDropData(const QMimeData *data,
325325
dragAndDropInfoPasswordStore *outInfo) -> bool {
326326
QByteArray encodedData =
327-
data->data("application/vnd+qtpass.dragAndDropInfoPasswordStore");
327+
data->data("application/vnd.qtpass.dragAndDropInfoPasswordStore");
328328
if (encodedData.isEmpty()) {
329329
return false;
330330
}

tests/auto/model/tst_storemodel.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// SPDX-FileCopyrightText: 2026 Anne Jan Brouwer
22
// SPDX-License-Identifier: GPL-3.0-or-later
3+
#include <memory>
4+
35
#include <QDataStream>
46
#include <QDir>
57
#include <QFileSystemModel>
68
#include <QMimeData>
79
#include <QtTest>
810

9-
#include <memory>
10-
1111
#include "../../../src/storemodel.h"
1212

1313
class tst_storemodel : public QObject {
@@ -101,8 +101,10 @@ void tst_storemodel::flagsWithInvalidIndex() {
101101
void tst_storemodel::mimeTypes() {
102102
StoreModel sm;
103103
QStringList types = sm.mimeTypes();
104-
QVERIFY(
105-
types.contains("application/vnd+qtpass.dragAndDropInfoPasswordStore"));
104+
QVERIFY2(
105+
types.contains("application/vnd.qtpass.dragAndDropInfoPasswordStore"),
106+
"mimeTypes() should advertise "
107+
"application/vnd.qtpass.dragAndDropInfoPasswordStore");
106108
}
107109

108110
void tst_storemodel::lessThan() {
@@ -218,9 +220,11 @@ void tst_storemodel::mimeData() {
218220
QModelIndex sourceIndex = fsm.index(tempDir.path() + "/testfile.gpg");
219221
QModelIndex proxyIndex = sm.mapFromSource(sourceIndex);
220222
QMimeData *data = sm.mimeData(QModelIndexList() << proxyIndex);
221-
QVERIFY(data != nullptr);
222-
QVERIFY(
223-
data->hasFormat("application/vnd+qtpass.dragAndDropInfoPasswordStore"));
223+
QVERIFY2(data != nullptr, "mimeData() should return a non-null QMimeData");
224+
QVERIFY2(
225+
data->hasFormat("application/vnd.qtpass.dragAndDropInfoPasswordStore"),
226+
"mimeData() should carry "
227+
"application/vnd.qtpass.dragAndDropInfoPasswordStore");
224228
delete data;
225229
}
226230

@@ -298,7 +302,7 @@ auto makeMimeData(dragAndDropInfoPasswordStore::ItemKind kind,
298302
stream << info;
299303

300304
auto mime = std::make_unique<QMimeData>();
301-
mime->setData("application/vnd+qtpass.dragAndDropInfoPasswordStore", encoded);
305+
mime->setData("application/vnd.qtpass.dragAndDropInfoPasswordStore", encoded);
302306
return mime;
303307
}
304308

@@ -404,7 +408,7 @@ void tst_storemodel::canDropWrongMimeType() {
404408
void tst_storemodel::canDropEmptyEncodedData() {
405409
DropFixture fx;
406410
QMimeData mime;
407-
mime.setData("application/vnd+qtpass.dragAndDropInfoPasswordStore",
411+
mime.setData("application/vnd.qtpass.dragAndDropInfoPasswordStore",
408412
QByteArray());
409413
QVERIFY(
410414
!fx.sm.canDropMimeData(&mime, Qt::MoveAction, 0, 0, fx.folderProxy()));

0 commit comments

Comments
 (0)