summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorGiuseppe Castagno <giuseppe.castagno@acca-esse.eu>2015-08-30 20:24:39 +0200
committerJan Holesovsky <kendy@collabora.com>2015-10-05 11:11:24 +0000
commit8ea85c264f22c76d393c0f78e9db7df51e2c868d (patch)
tree6eba89b06e917c175ae182ae33ca8506b7f2c138 /tools
parent8d65149d252b9daf6f4ee40aa94d0d150dab4948 (diff)
Add isSchemeEqualTo(), isAnyKnownWebDAVScheme() to INetURLObject
...which will be used when rebasing <https://gerrit.libreoffice.org/#/c/17189> "tdf#82744: fix WebDAV lock/unlock behaviour - part 3" on top of d3de490437df4c9093f32e97fc185066d64c0f46 "Add vnd.sun.star.webdavs URL scheme." Change-Id: I19bd715d755a6f070b95ce897d8a1bbb4910d537 Reviewed-on: https://gerrit.libreoffice.org/18151 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/qa/cppunit/test_urlobj.cxx40
-rw-r--r--tools/source/fsys/urlobj.cxx16
2 files changed, 56 insertions, 0 deletions
diff --git a/tools/qa/cppunit/test_urlobj.cxx b/tools/qa/cppunit/test_urlobj.cxx
index b591156b52c7..6115bc896481 100644
--- a/tools/qa/cppunit/test_urlobj.cxx
+++ b/tools/qa/cppunit/test_urlobj.cxx
@@ -329,6 +329,44 @@ namespace tools_urlobj
CPPUNIT_ASSERT(strm == 0);
}
+ void urlobjTest_isSchemeEqualTo() {
+ CPPUNIT_ASSERT(INetURLObject().isSchemeEqualTo(INetProtocol::NotValid));
+ CPPUNIT_ASSERT(!INetURLObject().isSchemeEqualTo(""));
+ CPPUNIT_ASSERT(
+ INetURLObject("http://example.org").isSchemeEqualTo(
+ INetProtocol::Http));
+ CPPUNIT_ASSERT(
+ !INetURLObject("http://example.org").isSchemeEqualTo(
+ INetProtocol::Https));
+ CPPUNIT_ASSERT(
+ INetURLObject("http://example.org").isSchemeEqualTo("Http"));
+ CPPUNIT_ASSERT(
+ !INetURLObject("http://example.org").isSchemeEqualTo("dav"));
+ CPPUNIT_ASSERT(
+ INetURLObject("dav://example.org").isSchemeEqualTo("dav"));
+ }
+
+ void urlobjTest_isAnyKnownWebDAVScheme() {
+ CPPUNIT_ASSERT(
+ INetURLObject("http://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ INetURLObject("https://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ INetURLObject("vnd.sun.star.webdav://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ INetURLObject("vnd.sun.star.webdavs://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ !INetURLObject("ftp://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ !INetURLObject("file://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ !INetURLObject("dav://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ !INetURLObject("davs://example.org").isAnyKnownWebDAVScheme());
+ CPPUNIT_ASSERT(
+ !INetURLObject("vnd.sun.star.pkg://example.org").isAnyKnownWebDAVScheme());
+ }
+
// Change the following lines only, if you add, remove or rename
// member functions of the current class,
// because these macros are need by auto register mechanism.
@@ -343,6 +381,8 @@ namespace tools_urlobj
CPPUNIT_TEST( urlobjCmisTest );
CPPUNIT_TEST( urlobjTest_emptyPath );
CPPUNIT_TEST( urlobjTest_data );
+ CPPUNIT_TEST( urlobjTest_isSchemeEqualTo );
+ CPPUNIT_TEST( urlobjTest_isAnyKnownWebDAVScheme );
CPPUNIT_TEST_SUITE_END( );
}; // class createPool
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 51887b7b722e..115d6760fb71 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -3911,6 +3911,22 @@ OUString INetURLObject::getExternalURL(DecodeMechanism eMechanism,
return aTheExtURIRef;
}
+bool INetURLObject::isSchemeEqualTo(OUString const & scheme) const {
+ return m_aScheme.isPresent()
+ && (rtl_ustr_compareIgnoreAsciiCase_WithLength(
+ scheme.getStr(), scheme.getLength(),
+ m_aAbsURIRef.getStr() + m_aScheme.getBegin(),
+ m_aScheme.getLength())
+ == 0);
+}
+
+bool INetURLObject::isAnyKnownWebDAVScheme() const {
+ return ( isSchemeEqualTo( INetProtocol::Http ) ||
+ isSchemeEqualTo( INetProtocol::Https ) ||
+ isSchemeEqualTo( INetProtocol::VndSunStarWebdav ) ||
+ isSchemeEqualTo( "vnd.sun.star.webdavs" ) );
+}
+
// static
OUString INetURLObject::GetScheme(INetProtocol eTheScheme)
{