Kaydet (Commit) d3de4904 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Add vnd.sun.star.webdavs URL scheme

...as https-equivalent to complement vnd.sun.star.webdav scheme.  See the mail
thread starting at
<http://lists.freedesktop.org/archives/libreoffice/2015-August/069929.html>
"What autogen.sh for an alternative ContentProvider for dav:// scheme?" for why
it is considered beneficial to have the WebDAV UCP support---in addition to the
standard pair of http[s] schemes---a non-standard pair of
vnd.sun.star.webdav[s] schemes different from the "accidentally supported"
non-standard pair of dav[s].

Change-Id: I7032aa1ed599f735969cf0163cd9dc121a1fdcb3
üst 9c3f5324
...@@ -156,6 +156,17 @@ ...@@ -156,6 +156,17 @@
<value/> <value/>
</prop> </prop>
</node> </node>
<node oor:name="Provider12a" oor:op="replace" install:module="neon">
<prop oor:name="ServiceName">
<value>com.sun.star.ucb.WebDAVContentProvider</value>
</prop>
<prop oor:name="URLTemplate">
<value>vnd.sun.star.webdavs</value>
</prop>
<prop oor:name="Arguments">
<value/>
</prop>
</node>
<node oor:name="Provider13" oor:op="replace" <node oor:name="Provider13" oor:op="replace"
install:module="neon_gnomevfs"> install:module="neon_gnomevfs">
<prop oor:name="ServiceName"> <prop oor:name="ServiceName">
......
...@@ -2516,6 +2516,11 @@ void Content::transfer( ...@@ -2516,6 +2516,11 @@ void Content::transfer(
sourceURI.SetScheme( sourceURI.SetScheme(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
} }
else if ( aScheme == WEBDAVS_URL_SCHEME )
{
sourceURI.SetScheme(
OUString( HTTPS_URL_SCHEME ) );
}
else if ( aScheme == DAV_URL_SCHEME ) else if ( aScheme == DAV_URL_SCHEME )
{ {
sourceURI.SetScheme( sourceURI.SetScheme(
...@@ -2544,6 +2549,9 @@ void Content::transfer( ...@@ -2544,6 +2549,9 @@ void Content::transfer(
if ( aScheme == WEBDAV_URL_SCHEME ) if ( aScheme == WEBDAV_URL_SCHEME )
targetURI.SetScheme( targetURI.SetScheme(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
else if ( aScheme == WEBDAVS_URL_SCHEME )
targetURI.SetScheme(
OUString( HTTPS_URL_SCHEME ) );
else if ( aScheme == DAV_URL_SCHEME ) else if ( aScheme == DAV_URL_SCHEME )
targetURI.SetScheme( targetURI.SetScheme(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
......
...@@ -137,7 +137,8 @@ ContentProvider::queryContent( ...@@ -137,7 +137,8 @@ ContentProvider::queryContent(
const OUString aScheme const OUString aScheme
= Identifier->getContentProviderScheme().toAsciiLowerCase(); = Identifier->getContentProviderScheme().toAsciiLowerCase();
if ( aScheme != HTTP_URL_SCHEME && aScheme != HTTPS_URL_SCHEME && aScheme != WEBDAV_URL_SCHEME if ( aScheme != HTTP_URL_SCHEME && aScheme != HTTPS_URL_SCHEME
&& aScheme != WEBDAV_URL_SCHEME && aScheme != WEBDAVS_URL_SCHEME
&& aScheme != DAV_URL_SCHEME && aScheme != DAVS_URL_SCHEME && aScheme != FTP_URL_SCHEME ) && aScheme != DAV_URL_SCHEME && aScheme != DAVS_URL_SCHEME && aScheme != FTP_URL_SCHEME )
throw ucb::IllegalIdentifierException(); throw ucb::IllegalIdentifierException();
...@@ -161,6 +162,13 @@ ContentProvider::queryContent( ...@@ -161,6 +162,13 @@ ContentProvider::queryContent(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
bNewId = true; bNewId = true;
} }
else if ( aScheme == WEBDAVS_URL_SCHEME )
{
aURL = aURL.replaceAt( 0,
WEBDAVS_URL_SCHEME_LENGTH,
OUString( HTTPS_URL_SCHEME ) );
bNewId = true;
}
else if ( aScheme == DAV_URL_SCHEME ) else if ( aScheme == DAV_URL_SCHEME )
{ {
aURL = aURL.replaceAt( 0, aURL = aURL.replaceAt( 0,
......
...@@ -50,6 +50,9 @@ namespace webdav_ucp { ...@@ -50,6 +50,9 @@ namespace webdav_ucp {
#define WEBDAV_URL_SCHEME "vnd.sun.star.webdav" #define WEBDAV_URL_SCHEME "vnd.sun.star.webdav"
#define WEBDAV_URL_SCHEME_LENGTH 19 #define WEBDAV_URL_SCHEME_LENGTH 19
#define WEBDAVS_URL_SCHEME "vnd.sun.star.webdavs"
#define WEBDAVS_URL_SCHEME_LENGTH 20
#define HTTP_URL_SCHEME "http" #define HTTP_URL_SCHEME "http"
#define HTTPS_URL_SCHEME "https" #define HTTPS_URL_SCHEME "https"
......
...@@ -2667,6 +2667,11 @@ void Content::transfer( ...@@ -2667,6 +2667,11 @@ void Content::transfer(
sourceURI.SetScheme( sourceURI.SetScheme(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
} }
else if ( aScheme == WEBDAVS_URL_SCHEME )
{
sourceURI.SetScheme(
OUString( HTTPS_URL_SCHEME ) );
}
else if ( aScheme == DAV_URL_SCHEME ) else if ( aScheme == DAV_URL_SCHEME )
{ {
sourceURI.SetScheme( sourceURI.SetScheme(
...@@ -2695,6 +2700,9 @@ void Content::transfer( ...@@ -2695,6 +2700,9 @@ void Content::transfer(
if ( aScheme == WEBDAV_URL_SCHEME ) if ( aScheme == WEBDAV_URL_SCHEME )
targetURI.SetScheme( targetURI.SetScheme(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
else if ( aScheme == WEBDAVS_URL_SCHEME )
targetURI.SetScheme(
OUString( HTTPS_URL_SCHEME ) );
else if ( aScheme == DAV_URL_SCHEME ) else if ( aScheme == DAV_URL_SCHEME )
targetURI.SetScheme( targetURI.SetScheme(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
......
...@@ -123,8 +123,8 @@ ContentProvider::queryContent( ...@@ -123,8 +123,8 @@ ContentProvider::queryContent(
const OUString aScheme const OUString aScheme
= Identifier->getContentProviderScheme().toAsciiLowerCase(); = Identifier->getContentProviderScheme().toAsciiLowerCase();
if ( aScheme != HTTP_URL_SCHEME && aScheme != HTTPS_URL_SCHEME && if ( aScheme != HTTP_URL_SCHEME && aScheme != HTTPS_URL_SCHEME &&
aScheme != WEBDAV_URL_SCHEME && aScheme != DAV_URL_SCHEME && aScheme != WEBDAV_URL_SCHEME && aScheme != WEBDAVS_URL_SCHEME &&
aScheme != DAVS_URL_SCHEME ) aScheme != DAV_URL_SCHEME && aScheme != DAVS_URL_SCHEME )
throw ucb::IllegalIdentifierException(); throw ucb::IllegalIdentifierException();
// Normalize URL and create new Id, if nessacary. // Normalize URL and create new Id, if nessacary.
...@@ -147,6 +147,13 @@ ContentProvider::queryContent( ...@@ -147,6 +147,13 @@ ContentProvider::queryContent(
OUString( HTTP_URL_SCHEME ) ); OUString( HTTP_URL_SCHEME ) );
bNewId = true; bNewId = true;
} }
else if ( aScheme == WEBDAVS_URL_SCHEME )
{
aURL = aURL.replaceAt( 0,
WEBDAVS_URL_SCHEME_LENGTH,
OUString( HTTPS_URL_SCHEME ) );
bNewId = true;
}
else if ( aScheme == DAV_URL_SCHEME ) else if ( aScheme == DAV_URL_SCHEME )
{ {
aURL = aURL.replaceAt( 0, aURL = aURL.replaceAt( 0,
......
...@@ -42,6 +42,9 @@ namespace http_dav_ucp { ...@@ -42,6 +42,9 @@ namespace http_dav_ucp {
#define WEBDAV_URL_SCHEME "vnd.sun.star.webdav" #define WEBDAV_URL_SCHEME "vnd.sun.star.webdav"
#define WEBDAV_URL_SCHEME_LENGTH 19 #define WEBDAV_URL_SCHEME_LENGTH 19
#define WEBDAVS_URL_SCHEME "vnd.sun.star.webdavs"
#define WEBDAVS_URL_SCHEME_LENGTH 20
#define HTTP_URL_SCHEME "http" #define HTTP_URL_SCHEME "http"
#define HTTPS_URL_SCHEME "https" #define HTTPS_URL_SCHEME "https"
......
...@@ -744,6 +744,7 @@ static bool UCBOpenContentSync( ...@@ -744,6 +744,7 @@ static bool UCBOpenContentSync(
if( ! aScheme.equalsIgnoreAsciiCase("http") && if( ! aScheme.equalsIgnoreAsciiCase("http") &&
! aScheme.equalsIgnoreAsciiCase("https") && ! aScheme.equalsIgnoreAsciiCase("https") &&
! aScheme.equalsIgnoreAsciiCase("vnd.sun.star.webdav") && ! aScheme.equalsIgnoreAsciiCase("vnd.sun.star.webdav") &&
! aScheme.equalsIgnoreAsciiCase("vnd.sun.star.webdavs") &&
! aScheme.equalsIgnoreAsciiCase("ftp")) ! aScheme.equalsIgnoreAsciiCase("ftp"))
return _UCBOpenContentSync( return _UCBOpenContentSync(
xLockBytes,xContent,rArg,xSink,xInteract); xLockBytes,xContent,rArg,xSink,xInteract);
......
...@@ -95,7 +95,7 @@ bool isSupportedProtocol( const QString &rProtocol ) ...@@ -95,7 +95,7 @@ bool isSupportedProtocol( const QString &rProtocol )
{ {
// TODO Get this information directly from OOo // TODO Get this information directly from OOo
const char * pOOoProtocols[] = { "", "smb", "ftp", "http", "file", "mailto", const char * pOOoProtocols[] = { "", "smb", "ftp", "http", "file", "mailto",
"vnd.sun.star.webdav", "news", "private", "vnd.sun.star.help", "vnd.sun.star.webdav", "vnd.sun.star.webdavs", "news", "private", "vnd.sun.star.help",
"https", "slot", "macro", "javascript", "imap", "pop3", "data", "https", "slot", "macro", "javascript", "imap", "pop3", "data",
"cid", "out", "vnd.sun.star.hier", "vim", "cid", "out", "vnd.sun.star.hier", "vim",
".uno", ".component", "vnd.sun.star.pkg", "ldap", "db", ".uno", ".component", "vnd.sun.star.pkg", "ldap", "db",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment