diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2019-04-16 10:45:12 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2019-11-04 00:51:44 +0100 |
commit | 1bfcd216382750aeb5d88b0ad80b56501b7c6d99 (patch) | |
tree | 39eb3910405d3dcbf2f4cefbda24719358a6e514 | |
parent | 74952340349d5e817a415030a6cf76f48e70ab8b (diff) |
SharePoint connection: Handle encoded URL passed as command line argument
Change-Id: I3352bf9ade88bd86f7ca3d53238364216547d52b
Reviewed-on: https://gerrit.libreoffice.org/70830
Tested-by: Jenkins
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
(cherry picked from commit 2317ad572cc330c4c2de95065ef275f58a9c83a1)
-rw-r--r-- | desktop/qa/desktop_app/test_desktop_app.cxx | 23 | ||||
-rwxr-xr-x[-rw-r--r--] | desktop/source/app/cmdlineargs.cxx | 4 |
2 files changed, 27 insertions, 0 deletions
diff --git a/desktop/qa/desktop_app/test_desktop_app.cxx b/desktop/qa/desktop_app/test_desktop_app.cxx index ef588a580266..055c8cf5434e 100644 --- a/desktop/qa/desktop_app/test_desktop_app.cxx +++ b/desktop/qa/desktop_app/test_desktop_app.cxx @@ -110,6 +110,29 @@ void Test::testTdf100837() { CPPUNIT_ASSERT_EQUAL(OUString("bar"), vForceOpenList[0]); CPPUNIT_ASSERT_EQUAL(OUString("baz"), vForceOpenList[1]); } + + { + // 3. Test enocded URLs + TestSupplier supplier{ "foo", "ms-word:ofe%7Cu%7Cbar1", "ms-word:ofv%7Cu%7Cbar2", "ms-word:nft%7Cu%7Cbar3", "baz" }; + desktop::CommandLineArgs args(supplier); + auto vOpenList = args.GetOpenList(); + auto vForceOpenList = args.GetForceOpenList(); + auto vViewList = args.GetViewList(); + auto vForceNewList = args.GetForceNewList(); + // 2 documents go to Open list: foo; baz + CPPUNIT_ASSERT_EQUAL(decltype(vOpenList.size())(2), vOpenList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("foo"), vOpenList[0]); + CPPUNIT_ASSERT_EQUAL(OUString("baz"), vOpenList[1]); + // 1 document goes to ForceOpen list: bar1 + CPPUNIT_ASSERT_EQUAL(decltype(vForceOpenList.size())(1), vForceOpenList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar1"), vForceOpenList[0]); + // 1 document goes to View list: bar2 + CPPUNIT_ASSERT_EQUAL(decltype(vViewList.size())(1), vViewList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar2"), vViewList[0]); + // 1 document goes to ForceNew list: bar3 + CPPUNIT_ASSERT_EQUAL(decltype(vForceNewList.size())(1), vForceNewList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar3"), vForceNewList[0]); + } } CPPUNIT_TEST_SUITE_REGISTRATION(Test); diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx index 490bf183de33..00b5c88ee05e 100644..100755 --- a/desktop/source/app/cmdlineargs.cxx +++ b/desktop/source/app/cmdlineargs.cxx @@ -127,6 +127,10 @@ CommandLineEvent CheckOfficeURI(/* in,out */ OUString& arg, CommandLineEvent cur OUString rest2; long nURIlen = -1; + + // URL might be encoded + rest1 = rest1.replaceAll("%7C", "|"); + // 2. Discriminate by command name (incl. 1st command argument descriptor) // Extract URI: everything up to possible next argument if (rest1.startsWith("ofv|u|", &rest2)) |