From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- .../com/sun/star/ucb/XContentProviderManager.idl | 159 +++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 offapi/com/sun/star/ucb/XContentProviderManager.idl (limited to 'offapi/com/sun/star/ucb/XContentProviderManager.idl') diff --git a/offapi/com/sun/star/ucb/XContentProviderManager.idl b/offapi/com/sun/star/ucb/XContentProviderManager.idl new file mode 100644 index 000000000..f54e8ab6b --- /dev/null +++ b/offapi/com/sun/star/ucb/XContentProviderManager.idl @@ -0,0 +1,159 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef __com_sun_star_ucb_XContentProviderManager_idl__ +#define __com_sun_star_ucb_XContentProviderManager_idl__ + +#include +#include +#include +#include + + + +module com { module sun { module star { module ucb { + +/** makes it possible to query/register/deregister content providers. + + @version 1.0 + @see XContentProvider +*/ +published interface XContentProviderManager: com::sun::star::uno::XInterface +{ + /** registers a content provider for a specific URL template. + + @see XContentIdentifier + + @param Provider + the content provider to register. + +

This may be `NULL`, in which case a later + XContentProvider::queryContent() with an + XContentIdentifier that matches the Scheme + will simply return `NULL`. These "dummy" content providers are useful + in combination with other content providers that are registered on a + wildcard URL template: For example, imagine that you want to route all + http URLs to a HTTP content provider, but want to block all URLs for + the server www.dont.go. One solution would be to register + the HTTP content provider on the Scheme http, + and to register a "dummy" (i.e., `NULL`) content provider on the + Scheme "http://www.dont.go"([/?#].*)?. + + @param Scheme + the URL scheme for the provided contents. More generally, this may not + only be a URL scheme, but a URL template. + +

A URL template is a regular expression (represented as a string) that + specifies a subset of the set of all possible URLs (this subset + consists of exactly those URLs that match the regular expression). The + language to denote the regular expressions is initially quite limited, + but it may be extended in the future: + +

    +
  • regexp = scheme / simple / translation
  • +
  • scheme = ALPHA *(ALPHA / DIGIT / "+" / "-" / ".")
  • +
  • simple = simple-prefix / simple-authority / simple-domain
  • +
  • translation = trans-prefix / trans-authority / trans-domain
  • +
  • simple-prefix = [string] ".*"
  • +
  • trans-prefix = [string] "(.*)->" [string] "\1"
  • +
  • simple-authority = [string] "([/?#].*)?"
  • +
  • trans-authority = [string] "(([/?#].*)?)->" string "\1"
  • +
  • simple-domain = [string] "[^/?#]*" string "([/?#].*)?"
  • +
  • trans-domain = [string] "([^/?#]*" string "([/?#].*)?)->" string "\1"
  • +
  • string = DQUOTE 1*(schar / sescape) DQUOTE ; DQUOTE is "
  • +
  • schar = < any UTF-16 character except " or \>
  • +
  • sescape = "\" (DQUOTE / "\")
  • +
+ +

A <scheme>: matches any URL of exactly the given + scheme (ignoring case), keeping the extension from URL schemes to URL + templates backwards compatible. The <simple>: + regexps match any URL starting with a given string literal, followed + by arbitrary characters (<simple-prefix>:), or + by arbitrary characters that start with one of '/', '?', or '#', if any + (<simple-authority>:), or by arbitrary characters not + including any of '/', '?', or '#', followed by a given string literal, + followed by arbitrary characters that start with one of '/', '?', or + '#', if any. The comparison of string literals is done ignoring the + case of ASCII letters. The <translation>: regexps + match the same URLs as their <simple>: counterparts, + but they also describe how a (local) URL is mapped to another (remote) + URL. This mapping is only relevant for methods of the + RemoteAccessContentProvider's + XParameterizedContentProvider interface; in all other + cases, <translation>: regexps have the same semantics + as their <simple>: counterparts. + + @param ReplaceExisting + `TRUE`: replace the provider possibly registered for the given URL + template. The replaced provider will not be deregistered automatically! + If the superseding provider gets deregistered, the superseded one will + become active again. +

`FALSE`: do not register, if another provider is already registered + for the given URL template. + + @returns + the replaced content provider, if there was one. + */ + com::sun::star::ucb::XContentProvider registerContentProvider( + [in] com::sun::star::ucb::XContentProvider Provider, + [in] string Scheme, + [in] boolean ReplaceExisting ) + raises( com::sun::star::ucb::DuplicateProviderException ); + + /** deregisters a content provider. + + @param Provider + a content provider to deregister. + + @param Scheme + the URL scheme for the provided contents. More generally, this + may not only be a URL scheme, but a URL template (see + registerContentProvider() for a discussion of URL + templates). + */ + void deregisterContentProvider( + [in] com::sun::star::ucb::XContentProvider Provider, + [in] string Scheme ); + + /** returns a list of information on all registered content providers. + + @returns + a list information on content providers. + */ + sequence queryContentProviders(); + + /** returns the currently active content provider for a content + identifier. + + @param Identifier + a content identifier (i.e., a URL). + + @returns + a content provider, or null. + */ + com::sun::star::ucb::XContentProvider queryContentProvider( + [in] string Identifier ); +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3