141 // CAiPluginFactory::CreatePluginL() |
141 // CAiPluginFactory::CreatePluginL() |
142 // |
142 // |
143 // ---------------------------------------------------------------------------- |
143 // ---------------------------------------------------------------------------- |
144 // |
144 // |
145 TInt CAiPluginFactory::CreatePlugin( |
145 TInt CAiPluginFactory::CreatePlugin( |
146 const THsPublisherInfo& aPublisherInfo ) |
146 const THsPublisherInfo& aPublisherInfo ) |
147 { |
147 { |
148 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Start ***" ); |
148 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Start ***" ); |
149 |
149 |
150 if ( IsRecyclable( aPublisherInfo ) ) |
150 if ( IsRecyclable( aPublisherInfo ) ) |
151 { |
151 { |
152 CHsContentPublisher* plugin( PluginByUid( aPublisherInfo.Uid() ) ); |
152 CHsContentPublisher* plugin( PluginByUid( aPublisherInfo.Uid() ) ); |
153 |
153 |
154 if ( plugin ) |
154 if ( plugin ) |
155 { |
155 { |
|
156 if ( aPublisherInfo.Namespace() == KNullDesC8 ) |
|
157 { |
|
158 // No namespace available |
|
159 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\ |
|
160 Failed to Load Plug-in: KErrNotSupported ***" ); |
|
161 return KErrNotSupported; |
|
162 } |
|
163 |
156 // Plugin already exists, update its namespace |
164 // Plugin already exists, update its namespace |
157 THsPublisherInfo& info( |
165 THsPublisherInfo& info( |
158 const_cast< THsPublisherInfo& >( plugin->PublisherInfo() ) ); |
166 const_cast< THsPublisherInfo& >( plugin->PublisherInfo() ) ); |
159 |
167 |
160 info.iNamespace.Copy( aPublisherInfo.Namespace() ); |
168 info.iNamespace.Copy( aPublisherInfo.Namespace() ); |
161 |
169 |
162 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Plugin recycled ***" ); |
170 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\ |
163 |
171 Plugin recycled ***" ); |
|
172 |
164 return KErrNone; |
173 return KErrNone; |
165 } |
174 } |
166 } |
175 } |
167 |
176 |
168 TBool implFound( EFalse ); |
177 TBool implFound( EFalse ); |
169 |
178 |
170 for( TInt i = 0; i < iEComPlugins.Count(); i++ ) |
179 for( TInt i = 0; i < iEComPlugins.Count(); i++ ) |
171 { |
180 { |
172 CImplementationInformation* information( iEComPlugins[i] ); |
181 CImplementationInformation* information( iEComPlugins[i] ); |
173 |
182 |
174 if( information->ImplementationUid().iUid == aPublisherInfo.Uid().iUid ) |
183 if( information->ImplementationUid().iUid == aPublisherInfo.Uid().iUid ) |
175 { |
184 { |
176 implFound = ETrue; |
185 implFound = ETrue; |
177 break; |
186 break; |
178 } |
187 } |
179 } |
188 } |
180 |
189 |
181 if( aPublisherInfo.Namespace() == KNullDesC8 || !implFound ) |
190 if( aPublisherInfo.Namespace() == KNullDesC8 || !implFound ) |
182 { |
191 { |
183 // No namespace available or no ecom implementation available |
192 // No namespace available or no ecom implementation available |
184 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Failed to Load Plug-in: KErrNotSupported ***" ); |
193 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\ |
|
194 Failed to Load Plug-in: KErrNotSupported ***" ); |
185 |
195 |
186 return KErrNotSupported; |
196 return KErrNotSupported; |
187 } |
197 } |
188 |
198 |
189 CHsContentPublisher* plugin( PluginByInfo( aPublisherInfo ) ); |
199 CHsContentPublisher* plugin( PluginByInfo( aPublisherInfo ) ); |
190 |
200 |
191 if( plugin ) |
201 if( plugin ) |
192 { |
202 { |
193 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Failed to Load Plug-in: KErrAlreadyExists ***" ); |
203 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\ |
|
204 Failed to Load Plug-in: KErrAlreadyExists ***" ); |
194 |
205 |
195 return KErrAlreadyExists; |
206 return KErrAlreadyExists; |
196 } |
207 } |
197 |
208 |
198 TInt err( KErrNone ); |
209 TInt err( KErrNone ); |
199 |
210 |
200 TRAP( err, CreatePluginL( aPublisherInfo ) ); |
211 TRAP( err, CreatePluginL( aPublisherInfo ) ); |
201 |
212 |
202 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Load Plug-in ***" ); |
213 __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Load Plug-in ***" ); |
203 |
214 |
204 return err; |
215 return err; |
205 } |
216 } |
206 |
217 |
207 // ---------------------------------------------------------------------------- |
218 // ---------------------------------------------------------------------------- |
208 // CAiPluginFactory::DestroyPlugin() |
219 // CAiPluginFactory::DestroyPlugin() |
209 // |
220 // |
210 // ---------------------------------------------------------------------------- |
221 // ---------------------------------------------------------------------------- |
211 // |
222 // |