72 lines
3.1 KiB
Diff
72 lines
3.1 KiB
Diff
From 3e6fd579fa63e68c9d0092ea56f7a457c03bdb7d Mon Sep 17 00:00:00 2001
|
|
From: LuK1337 <priv.luk@gmail.com>
|
|
Date: Thu, 20 Nov 2025 14:27:50 -0800
|
|
Subject: [PATCH] [ozone/wayland] Add ExtractData() support for text/uri-list
|
|
|
|
When dragging a file from chrome://downloads to KDE Konsole, the
|
|
following message shows up in the debug output: "Cannot deliver data of
|
|
type text/uri-list and no text representation is available.".
|
|
|
|
After making it so text/uri-list is handled the same way as
|
|
text/x-moz-url, the log message is gone and path to file is pasted into
|
|
terminal as one would expect.
|
|
|
|
Bug: 460074619
|
|
Test: ozone_unittests
|
|
Change-Id: Iab0144ca7d3d3983d0e61d74f42a53b366f9e830
|
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7145698
|
|
Auto-Submit: Łukasz Patron <priv.luk@gmail.com>
|
|
Reviewed-by: Kramer Ge <fangzhoug@chromium.org>
|
|
Reviewed-by: Peter McNeeley <petermcneeley@google.com>
|
|
Commit-Queue: Peter McNeeley <petermcneeley@google.com>
|
|
Cr-Commit-Position: refs/heads/main@{#1548075}
|
|
---
|
|
|
|
diff --git a/AUTHORS b/AUTHORS
|
|
index abceab66..98ced4a 100644
|
|
--- a/AUTHORS
|
|
+++ b/AUTHORS
|
|
@@ -943,6 +943,7 @@
|
|
Luka Dojcilovic <l.dojcilovic@gmail.com>
|
|
Lukas Lihotzki <lukas@lihotzki.de>
|
|
Lukasz Krakowiak <lukasz.krakowiak@mobica.com>
|
|
+Lukasz Patron <priv.luk@gmail.com>
|
|
Luke Inman-Semerau <luke.semerau@gmail.com>
|
|
Luke Gu <gulukesh@gmail.com>
|
|
Luke Warlow <lukewarlow156@gmail.com>
|
|
diff --git a/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc b/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc
|
|
index 2d32cc9..da6da7ae 100644
|
|
--- a/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc
|
|
+++ b/ui/ozone/platform/wayland/host/wayland_exchange_data_provider.cc
|
|
@@ -277,7 +277,8 @@
|
|
DCHECK(out_content);
|
|
DCHECK(IsMimeTypeSupported(mime_type));
|
|
if (std::optional<ui::OSExchangeData::UrlInfo> url_info;
|
|
- mime_type == ui::kMimeTypeMozillaUrl &&
|
|
+ (mime_type == ui::kMimeTypeMozillaUrl ||
|
|
+ mime_type == ui::kMimeTypeUriList) &&
|
|
(url_info = GetURLAndTitle(kFilenameToURLPolicy)).has_value()) {
|
|
out_content->append(url_info->url.spec());
|
|
return true;
|
|
diff --git a/ui/ozone/platform/wayland/host/wayland_exchange_data_provider_unittest.cc b/ui/ozone/platform/wayland/host/wayland_exchange_data_provider_unittest.cc
|
|
index 70b6d9d..29a8ad0 100644
|
|
--- a/ui/ozone/platform/wayland/host/wayland_exchange_data_provider_unittest.cc
|
|
+++ b/ui/ozone/platform/wayland/host/wayland_exchange_data_provider_unittest.cc
|
|
@@ -61,6 +61,17 @@
|
|
EXPECT_EQ("pickled-str", read_pickled_str);
|
|
}
|
|
|
|
+TEST(WaylandExchangeDataProviderTest, FileNameAsUriList) {
|
|
+ WaylandExchangeDataProvider provider;
|
|
+ std::string extracted;
|
|
+ EXPECT_FALSE(provider.ExtractData(kMimeTypeUriList, &extracted));
|
|
+
|
|
+ extracted.clear();
|
|
+ provider.AddData(ToClipboardData("file:///dev/null"), kMimeTypeUriList);
|
|
+ EXPECT_TRUE(provider.ExtractData(kMimeTypeUriList, &extracted));
|
|
+ EXPECT_EQ("file:///dev/null", extracted);
|
|
+}
|
|
+
|
|
TEST(WaylandExchangeDataProviderTest, FileContents) {
|
|
constexpr std::string kName("filename");
|
|
constexpr std::string kContents("contents");
|