cui/source/dialogs/hltpbase.cxx | 4 ++-- sw/qa/uitest/writer_tests3/hyperlinkdialog.py | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-)
New commits: commit 9879cadfc55f28f9bb8b53a818117c64f46daf78 Author: Andreas Heinisch <andreas.heini...@yahoo.de> AuthorDate: Wed Nov 6 09:15:40 2024 +0100 Commit: Andreas Heinisch <andreas.heini...@yahoo.de> CommitDate: Wed Nov 6 12:02:51 2024 +0100 tdf#162753 - Hyperlink dialog: preset only syntactically valid hyperlinks Change-Id: I682acfa4e41a3cce5f4639d79004bea985cabce3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176112 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de> diff --git a/cui/source/dialogs/hltpbase.cxx b/cui/source/dialogs/hltpbase.cxx index 854c3aa6d3d7..12fd0b227a62 100644 --- a/cui/source/dialogs/hltpbase.cxx +++ b/cui/source/dialogs/hltpbase.cxx @@ -468,8 +468,8 @@ void SvxHyperlinkTabPageBase::Reset( const SfxItemSet& rItemSet) { if (xTransferable->getTransferData(aFlavor) >>= aClipBoardContent) { - INetURLObject aURL; - aURL.SetSmartURL(aClipBoardContent); + // 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