fdo#33605: Handle http etc. URLs with no path but fragment
Change-Id: I8c47cc55e7ad53e514c0bd46130cbbe6a1bb0357
This commit is contained in:
parent
2be3dcd9cc
commit
44ddacb232
@ -240,6 +240,27 @@ namespace tools_urlobj
|
||||
}
|
||||
}
|
||||
|
||||
void urlobjTest_emptyPath() {
|
||||
{
|
||||
INetURLObject url(OUString("http://example.com"));
|
||||
CPPUNIT_ASSERT_EQUAL(INET_PROT_HTTP, url.GetProtocol());
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("example.com"), url.GetHost());
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("/"), url.GetURLPath());
|
||||
}
|
||||
{
|
||||
// This is an invalid http URL per RFC 2616:
|
||||
INetURLObject url(OUString("http://example.com?query"));
|
||||
CPPUNIT_ASSERT(url.HasError());
|
||||
}
|
||||
{
|
||||
INetURLObject url(OUString("http://example.com#fragment"));
|
||||
CPPUNIT_ASSERT_EQUAL(INET_PROT_HTTP, url.GetProtocol());
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("example.com"), url.GetHost());
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("/"), url.GetURLPath());
|
||||
CPPUNIT_ASSERT_EQUAL(OUString("fragment"), url.GetMark());
|
||||
}
|
||||
}
|
||||
|
||||
// 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.
|
||||
@ -252,6 +273,7 @@ namespace tools_urlobj
|
||||
CPPUNIT_TEST( urlobjTest_005 );
|
||||
CPPUNIT_TEST( urlobjTest_006 );
|
||||
CPPUNIT_TEST( urlobjCmisTest );
|
||||
CPPUNIT_TEST( urlobjTest_emptyPath );
|
||||
CPPUNIT_TEST_SUITE_END( );
|
||||
}; // class createPool
|
||||
|
||||
|
@ -2933,7 +2933,7 @@ bool INetURLObject::parsePath(INetProtocol eScheme,
|
||||
|
||||
case INET_PROT_FTP:
|
||||
case INET_PROT_IMAP:
|
||||
if (pPos < pEnd && *pPos != '/')
|
||||
if (pPos < pEnd && *pPos != '/' && *pPos != nFragmentDelimiter)
|
||||
return false;
|
||||
while (pPos < pEnd && *pPos != nFragmentDelimiter)
|
||||
{
|
||||
@ -2953,7 +2953,7 @@ bool INetURLObject::parsePath(INetProtocol eScheme,
|
||||
case INET_PROT_HTTPS:
|
||||
case INET_PROT_SMB:
|
||||
case INET_PROT_CMIS:
|
||||
if (pPos < pEnd && *pPos != '/')
|
||||
if (pPos < pEnd && *pPos != '/' && *pPos != nFragmentDelimiter)
|
||||
return false;
|
||||
while (pPos < pEnd && *pPos != nQueryDelimiter
|
||||
&& *pPos != nFragmentDelimiter)
|
||||
|
Loading…
x
Reference in New Issue
Block a user