1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 // MARKER(update_precomp.py): autogen include statement, do not remove 23 #include "precompiled_extensions.hxx" 24 25 #include "MMozillaBootstrap.hxx" 26 27 using namespace com::sun::star::uno; 28 using namespace com::sun::star::lang; 29 using namespace com::sun::star::mozilla; 30 using namespace connectivity::mozab; 31 #include <MNSFolders.hxx> 32 #include "MNSProfileDiscover.hxx" 33 34 static MozillaBootstrap *pMozillaBootstrap=NULL; 35 static Reference<XMozillaBootstrap> xMozillaBootstrap; 36 extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL OMozillaBootstrap_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) 37 { 38 if (!pMozillaBootstrap) 39 { 40 pMozillaBootstrap=new connectivity::mozab::MozillaBootstrap( _rxFactory ); 41 pMozillaBootstrap->Init(); 42 xMozillaBootstrap = pMozillaBootstrap; 43 } 44 return pMozillaBootstrap; 45 } 46 47 // -------------------------------------------------------------------------------- 48 49 50 // -------------------------------------------------------------------------------- 51 MozillaBootstrap::MozillaBootstrap( 52 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) 53 : OMozillaBootstrap_BASE(m_aMutex), m_xMSFactory( _rxFactory ) 54 { 55 } 56 // ----------------------------------------------------------------------------- 57 MozillaBootstrap::~MozillaBootstrap() 58 { 59 } 60 // ----------------------------------------------------------------------------- 61 void MozillaBootstrap::Init() 62 { 63 sal_Bool aProfileExists=sal_False; 64 65 (void)aProfileExists; /* avoid warning about unused parameter */ 66 67 m_ProfileAccess = new ProfileAccess(); 68 bootupProfile(::com::sun::star::mozilla::MozillaProductType_Mozilla,rtl::OUString()); 69 } 70 71 // -------------------------------------------------------------------------------- 72 void MozillaBootstrap::disposing() 73 { 74 ::osl::MutexGuard aGuard(m_aMutex); 75 OMozillaBootstrap_BASE::disposing(); 76 } 77 78 // static ServiceInfo 79 //------------------------------------------------------------------------------ 80 rtl::OUString MozillaBootstrap::getImplementationName_Static( ) throw(RuntimeException) 81 { 82 return rtl::OUString::createFromAscii(MOZAB_MozillaBootstrap_IMPL_NAME); 83 } 84 //------------------------------------------------------------------------------ 85 Sequence< ::rtl::OUString > MozillaBootstrap::getSupportedServiceNames_Static( ) throw (RuntimeException) 86 { 87 // which service is supported 88 // for more information @see com.sun.star.mozilla.MozillaBootstrap 89 Sequence< ::rtl::OUString > aSNS( 1 ); 90 aSNS[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.mozilla.MozillaBootstrap")); 91 return aSNS; 92 } 93 94 //------------------------------------------------------------------ 95 ::rtl::OUString SAL_CALL MozillaBootstrap::getImplementationName( ) throw(RuntimeException) 96 { 97 return getImplementationName_Static(); 98 } 99 100 //------------------------------------------------------------------ 101 sal_Bool SAL_CALL MozillaBootstrap::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) 102 { 103 Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); 104 const ::rtl::OUString* pSupported = aSupported.getConstArray(); 105 const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); 106 for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) 107 ; 108 109 return pSupported != pEnd; 110 } 111 112 //------------------------------------------------------------------ 113 Sequence< ::rtl::OUString > SAL_CALL MozillaBootstrap::getSupportedServiceNames( ) throw(RuntimeException) 114 { 115 return getSupportedServiceNames_Static(); 116 } 117 118 119 // XProfileDiscover 120 ::sal_Int32 SAL_CALL MozillaBootstrap::getProfileCount( ::com::sun::star::mozilla::MozillaProductType product) throw (::com::sun::star::uno::RuntimeException) 121 { 122 return m_ProfileAccess->getProfileCount(product); 123 } 124 ::sal_Int32 SAL_CALL MozillaBootstrap::getProfileList( ::com::sun::star::mozilla::MozillaProductType product, ::com::sun::star::uno::Sequence< ::rtl::OUString >& list ) throw (::com::sun::star::uno::RuntimeException) 125 { 126 return m_ProfileAccess->getProfileList(product,list); 127 } 128 ::rtl::OUString SAL_CALL MozillaBootstrap::getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException) 129 { 130 return m_ProfileAccess->getDefaultProfile(product); 131 } 132 ::rtl::OUString SAL_CALL MozillaBootstrap::getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) 133 { 134 return m_ProfileAccess->getProfilePath(product,profileName); 135 } 136 ::sal_Bool SAL_CALL MozillaBootstrap::isProfileLocked( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) 137 { 138 return m_ProfileAccess->isProfileLocked(product,profileName); 139 } 140 ::sal_Bool SAL_CALL MozillaBootstrap::getProfileExists( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) 141 { 142 return m_ProfileAccess->getProfileExists(product,profileName); 143 } 144 145 // XProfileManager 146 ::sal_Int32 SAL_CALL MozillaBootstrap::bootupProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) 147 { 148 (void)product; /* avoid warning about unused parameter */ 149 (void)profileName; /* avoid warning about unused parameter */ 150 return -1; 151 } 152 ::sal_Int32 SAL_CALL MozillaBootstrap::shutdownProfile( ) throw (::com::sun::star::uno::RuntimeException) 153 { 154 return -1; 155 } 156 ::com::sun::star::mozilla::MozillaProductType SAL_CALL MozillaBootstrap::getCurrentProduct( ) throw (::com::sun::star::uno::RuntimeException) 157 { 158 return ::com::sun::star::mozilla::MozillaProductType_Default; 159 } 160 ::rtl::OUString SAL_CALL MozillaBootstrap::getCurrentProfile( ) throw (::com::sun::star::uno::RuntimeException) 161 { 162 return ::rtl::OUString(); 163 } 164 ::sal_Bool SAL_CALL MozillaBootstrap::isCurrentProfileLocked( ) throw (::com::sun::star::uno::RuntimeException) 165 { 166 return true; 167 } 168 ::rtl::OUString SAL_CALL MozillaBootstrap::setCurrentProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) 169 { 170 (void)product; /* avoid warning about unused parameter */ 171 (void)profileName; /* avoid warning about unused parameter */ 172 return ::rtl::OUString(); 173 } 174 175 // XProxyRunner 176 ::sal_Int32 SAL_CALL MozillaBootstrap::Run( const ::com::sun::star::uno::Reference< ::com::sun::star::mozilla::XCodeProxy >& aCode ) throw (::com::sun::star::uno::RuntimeException) 177 { 178 (void)aCode; /* avoid warning about unused parameter */ 179 return -1; 180 } 181 182 183 #include <cppuhelper/factory.hxx> 184 using ::com::sun::star::uno::Reference; 185 using ::com::sun::star::uno::Sequence; 186 using ::com::sun::star::lang::XSingleServiceFactory; 187 using ::com::sun::star::lang::XMultiServiceFactory; 188 189 extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL 190 component_getImplementationEnvironment( 191 const sal_Char **ppEnvTypeName, 192 uno_Environment ** /*ppEnv*/ 193 ) 194 { 195 *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; 196 } 197 198 static Reference< XInterface > SAL_CALL createInstance( const Reference< XMultiServiceFactory >& rServiceManager ) 199 { 200 MozillaBootstrap * pBootstrap = reinterpret_cast<MozillaBootstrap*>(OMozillaBootstrap_CreateInstance(rServiceManager)); 201 return *pBootstrap; 202 } 203 204 extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( 205 const sal_Char* pImplementationName, 206 void* pServiceManager, 207 void* /*pRegistryKey*/) 208 { 209 void* pRet = 0; 210 211 if (pServiceManager) 212 { 213 ::rtl::OUString aImplName( ::rtl::OUString::createFromAscii( pImplementationName ) ); 214 Reference< XSingleServiceFactory > xFactory; 215 if (aImplName.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.mozilla.MozillaBootstrap")) )) 216 { 217 Sequence< ::rtl::OUString > aSNS( 1 ); 218 aSNS[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.mozilla.MozillaBootstrap")); 219 220 xFactory = ::cppu::createSingleFactory( 221 reinterpret_cast< XMultiServiceFactory* > ( pServiceManager), 222 aImplName, createInstance, aSNS ); 223 } 224 if ( xFactory.is() ) 225 { 226 xFactory->acquire(); 227 pRet = xFactory.get(); 228 } 229 } 230 231 return pRet; 232 }; 233 234