cui/source/dialogs/hltpbase.cxx | 8 ++++---- sw/qa/uitest/writer_tests3/hyperlinkdialog.py | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-)
New commits: commit c0c0433d469021ca55d832fb9e85407f3f6705a5 Author: Andreas Heinisch <andreas.heini...@yahoo.de> AuthorDate: Fri Jan 12 13:07:10 2024 +0100 Commit: Aron Budea <aron.bu...@collabora.com> CommitDate: Thu Jan 2 15:05:49 2025 +0100 tdf#162753 - Hyperlink dialog: preset only syntactically valid hyperlinks This backport includes cui: fix typo 3635a2d6d5ba348dfbce05705917fe086e328ada make -srj1 UITest_writer_tests3 \ UITEST_TEST_NAME=hyperlinkdialog.HyperlinkDialog.test_tdf162753_propose_invalid_clipboard_content \ SAL_USE_VCLPLUGIN=gen Change-Id: I682acfa4e41a3cce5f4639d79004bea985cabce3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176112 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178955 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Aron Budea <aron.bu...@collabora.com> Reviewed-by: Justin Luth <jl...@mail.com> diff --git a/cui/source/dialogs/hltpbase.cxx b/cui/source/dialogs/hltpbase.cxx index f0aa7c368c04..8c065fa01f7b 100644 --- a/cui/source/dialogs/hltpbase.cxx +++ b/cui/source/dialogs/hltpbase.cxx @@ -465,13 +465,13 @@ void SvxHyperlinkTabPageBase::Reset( const SfxItemSet& rItemSet) SotExchange::GetFormatDataFlavor(SotClipboardFormatId::STRING, aFlavor); if (xTransferable->isDataFlavorSupported(aFlavor)) { - OUString aClipBoardConentent; + OUString aClipBoardContent; try { - if (xTransferable->getTransferData(aFlavor) >>= aClipBoardConentent) + if (xTransferable->getTransferData(aFlavor) >>= aClipBoardContent) { - INetURLObject aURL; - aURL.SetSmartURL(aClipBoardConentent); + // tdf#162753 - allow only syntactically valid hyperlink targets + INetURLObject aURL(aClipBoardContent); if (!aURL.HasError()) aStrURL = aURL.GetMainURL(INetURLObject::DecodeMechanism::Unambiguous); diff --git a/sw/qa/uitest/writer_tests3/hyperlinkdialog.py b/sw/qa/uitest/writer_tests3/hyperlinkdialog.py index 531b5f42a866..0ee8e52c6ffd 100644 --- a/sw/qa/uitest/writer_tests3/hyperlinkdialog.py +++ b/sw/qa/uitest/writer_tests3/hyperlinkdialog.py @@ -110,7 +110,7 @@ class HyperlinkDialog(UITestCase): # Insert a sample URL xWriterDoc = self.xUITest.getTopFocusWindow() xWriterEdit = xWriterDoc.getChild("writer_edit") - xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "www.libreoffice.org"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "http://www.libreoffice.org"})) # Copy URL and open the hyperlink dialog self.xUITest.executeCommand(".uno:SelectAll") @@ -122,6 +122,23 @@ class HyperlinkDialog(UITestCase): xTarget = xDialog.getChild("target") self.assertEqual(get_state_as_dict(xTarget)["Text"].lower(), "http://www.libreoffice.org/") + def test_tdf162753_propose_invalid_clipboard_content(self): + with self.ui_test.create_doc_in_start_center("writer"): + # Insert an invalid sample URL + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "libreoffice"})) + + # Copy URL and open the hyperlink dialog + self.xUITest.executeCommand(".uno:SelectAll") + self.xUITest.executeCommand(".uno:Copy") + with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog", close_button="cancel") as xDialog: + xTab = xDialog.getChild("tabcontrol") + select_pos(xTab, "0") + # Check if the content of the clipboard is not proposed as URL in the hyperlink dialog + xTarget = xDialog.getChild("target") + self.assertEqual(get_state_as_dict(xTarget)["Text"], "") + def test_tdf141166(self): # Skip this test for --with-help=html and --with-help=online, as that would fail with a # DialogNotExecutedException("did not execute a dialog for a blocking action") thrown from