diff options
author | Rüdiger Timm <rt@openoffice.org> | 2004-09-17 12:04:13 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2004-09-17 12:04:13 +0000 |
commit | 238df42ace4aacb89dccced388ffd6cab7d63fe8 (patch) | |
tree | 33d7f1523623c8894c140423735d39ce930d3e94 /shell/source | |
parent | 065dd2d27989f1397122fc8782672ddb3d1cdc75 (diff) |
INTEGRATION: CWS syssettings02 (1.1.2); FILE ADDED
2004/09/03 06:03:19 obr 1.1.2.1: #i20369# new internet proxy service
Diffstat (limited to 'shell/source')
-rw-r--r-- | shell/source/backends/wininetbe/wininetbackend.cxx | 198 | ||||
-rw-r--r-- | shell/source/backends/wininetbe/wininetbackend.hxx | 174 |
2 files changed, 372 insertions, 0 deletions
diff --git a/shell/source/backends/wininetbe/wininetbackend.cxx b/shell/source/backends/wininetbe/wininetbackend.cxx new file mode 100644 index 000000000000..f024953f89ac --- /dev/null +++ b/shell/source/backends/wininetbe/wininetbackend.cxx @@ -0,0 +1,198 @@ +/************************************************************************* + * + * $RCSfile: wininetbackend.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2004-09-17 13:03:46 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (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.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE OOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include "wininetbackend.hxx" +#include "wininetlayer.hxx" + +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_COMPONENTCHANGEEVENT_HPP_ +#include <com/sun/star/configuration/backend/ComponentChangeEvent.hpp> +#endif + +#ifndef _UNO_CURRENT_CONTEXT_HXX_ +#include <uno/current_context.hxx> +#endif + +#define WININET_DLL_NAME "wininet.dll" + +WinInetBackend::WinInetBackend(const uno::Reference<uno::XComponentContext>& xContext) + throw (backend::BackendAccessException) : + ::cppu::WeakImplHelper2 < backend::XSingleLayerStratum, lang::XServiceInfo > (), + m_xContext(xContext) +{ + m_hWinInetDll = LoadLibrary( WININET_DLL_NAME ); +} + +//------------------------------------------------------------------------------ + +WinInetBackend::~WinInetBackend(void) +{ + if ( m_hWinInetDll ) + FreeLibrary( m_hWinInetDll ); +} + +//------------------------------------------------------------------------------ + +WinInetBackend* WinInetBackend::createInstance( + const uno::Reference<uno::XComponentContext>& xContext +) +{ + return new WinInetBackend(xContext); +} + +// --------------------------------------------------------------------------------------- + +uno::Reference<backend::XLayer> SAL_CALL WinInetBackend::getLayer( + const rtl::OUString& aComponent, const rtl::OUString& aTimestamp) + throw (backend::BackendAccessException, lang::IllegalArgumentException) +{ + + if( aComponent.equals( getSupportedComponents()[0]) ) + { + if( ! m_xSystemLayer.is() && m_hWinInetDll ) + { + WinInetLayer::InternetQueryOption_Proc_T lpfnInternetQueryOption = + reinterpret_cast< WinInetLayer::InternetQueryOption_Proc_T >( + GetProcAddress( m_hWinInetDll, "InternetQueryOptionA" ) ); + + if( lpfnInternetQueryOption ) + m_xSystemLayer = new WinInetLayer(lpfnInternetQueryOption, m_xContext); + } + + return m_xSystemLayer; + } + + return uno::Reference<backend::XLayer>(); +} + +//------------------------------------------------------------------------------ + +uno::Reference<backend::XUpdatableLayer> SAL_CALL +WinInetBackend::getUpdatableLayer(const rtl::OUString& aComponent) + throw (backend::BackendAccessException,lang::NoSupportException, + lang::IllegalArgumentException) +{ + throw lang::NoSupportException( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( + "WinInetBackend: No Update Operation allowed, Read Only access") ), + *this) ; + + return NULL; +} + +//------------------------------------------------------------------------------ + +rtl::OUString SAL_CALL WinInetBackend::getBackendName(void) { + return rtl::OUString::createFromAscii("com.sun.star.comp.configuration.backend.WinInetBackend") ; +} + +//------------------------------------------------------------------------------ + +rtl::OUString SAL_CALL WinInetBackend::getImplementationName(void) + throw (uno::RuntimeException) +{ + return getBackendName() ; +} + +//------------------------------------------------------------------------------ + +uno::Sequence<rtl::OUString> SAL_CALL WinInetBackend::getBackendServiceNames(void) +{ + uno::Sequence<rtl::OUString> aServiceNameList(2); + aServiceNameList[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.backend.WinInetBackend")) ; + aServiceNameList[1] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.backend.PlatformBackend")) ; + + return aServiceNameList ; +} + +//------------------------------------------------------------------------------ + +sal_Bool SAL_CALL WinInetBackend::supportsService(const rtl::OUString& aServiceName) + throw (uno::RuntimeException) +{ + uno::Sequence< rtl::OUString > const svc = getBackendServiceNames(); + + for(sal_Int32 i = 0; i < svc.getLength(); ++i ) + if(svc[i] == aServiceName) + return true; + + return false; +} + +//------------------------------------------------------------------------------ + +uno::Sequence<rtl::OUString> SAL_CALL WinInetBackend::getSupportedServiceNames(void) + throw (uno::RuntimeException) +{ + return getBackendServiceNames() ; +} + +// --------------------------------------------------------------------------------------- + +uno::Sequence<rtl::OUString> SAL_CALL WinInetBackend::getSupportedComponents(void) +{ + uno::Sequence<rtl::OUString> aSupportedComponentList(1); + aSupportedComponentList[0] = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet" ) + ); + + return aSupportedComponentList; +} + diff --git a/shell/source/backends/wininetbe/wininetbackend.hxx b/shell/source/backends/wininetbe/wininetbackend.hxx new file mode 100644 index 000000000000..33590b596276 --- /dev/null +++ b/shell/source/backends/wininetbe/wininetbackend.hxx @@ -0,0 +1,174 @@ +/************************************************************************* + * + * $RCSfile: wininetbackend.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2004-09-17 13:04:13 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards OOurce License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free OOftware; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free OOftware Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free OOftware + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards OOurce License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * OOurce License Version 1.1 (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.openoffice.org/license.html. + * + * OOftware provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE OOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the OOftware. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _FIXEDVALUEBACKEND_HXX_ +#define _FIXEDVALUEBACKEND_HXX_ + +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XSINGLELAYERSTRATUM_HPP_ +#include <com/sun/star/configuration/backend/XSingleLayerStratum.hpp> +#endif + +#ifndef _COM_SUN_STAR_UNO_XCOMPONENTCONTEXT_HPP_ +#include <com/sun/star/uno/XComponentContext.hpp> +#endif + +#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_ +#include <com/sun/star/lang/XServiceInfo.hpp> +#endif + +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XBACKENDCHANGESNOTIFIER_HPP_ +#include <com/sun/star/configuration/backend/XBackendChangesNotifier.hpp> +#endif + +#ifndef _CPPUHELPER_IMPLBASE2_HXX_ +#include <cppuhelper/implbase2.hxx> +#endif + +#ifndef _RTL_STRING_HXX_ +#include <rtl/string.hxx> +#endif + +#include <windows.h> +#include <wininet.h> + +namespace css = com::sun::star ; +namespace uno = css::uno ; +namespace lang = css::lang ; +namespace backend = css::configuration::backend ; + + +/** + Implements the SingleLayerStratum service. + */ +class WinInetBackend : public ::cppu::WeakImplHelper2 < + backend::XSingleLayerStratum, + lang::XServiceInfo > { + + public : + + static WinInetBackend* createInstance(const uno::Reference<uno::XComponentContext>& xContext); + + // XServiceInfo + virtual rtl::OUString SAL_CALL + getImplementationName( ) + throw (uno::RuntimeException) ; + + virtual sal_Bool SAL_CALL + supportsService( const rtl::OUString& aServiceName ) + throw (uno::RuntimeException) ; + + virtual uno::Sequence<rtl::OUString> SAL_CALL + getSupportedServiceNames( ) + throw (uno::RuntimeException) ; + + /** + Provides the implementation name. + + @return implementation name + */ + static rtl::OUString SAL_CALL getBackendName(void) ; + /** + Provides the supported services names + + @return service names + */ + static uno::Sequence<rtl::OUString> SAL_CALL getBackendServiceNames(void) ; + /** + Provides the supported component nodes + + @return supported component nodes + */ + static uno::Sequence<rtl::OUString> SAL_CALL getSupportedComponents(void) ; + + //XSingleLayerStratum + virtual uno::Reference<backend::XLayer> SAL_CALL + getLayer( const rtl::OUString& aLayerId, const rtl::OUString& aTimestamp ) + throw (backend::BackendAccessException, + lang::IllegalArgumentException) ; + + virtual uno::Reference<backend::XUpdatableLayer> SAL_CALL + getUpdatableLayer( const rtl::OUString& aLayerId ) + throw (backend::BackendAccessException, + lang::NoSupportException, + lang::IllegalArgumentException) ; + protected: + /** + Service constructor from a service factory. + + @param xContext component context + */ + WinInetBackend(const uno::Reference<uno::XComponentContext>& xContext) + throw (backend::BackendAccessException); + + /** Destructor */ + ~WinInetBackend(void) ; + + private: + + uno::Reference<uno::XComponentContext> m_xContext ; + uno::Reference<backend::XLayer> m_xSystemLayer ; + + // The wininet.dll module handle + HMODULE m_hWinInetDll; +} ; + + +#endif // _FIXEDVALUEBACKEND_HXX_ |