cef/chromium-142-Add-ExtractData-support-for-text-uri-list.patch
2025-12-01 21:53:02 +09:00

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");