| Index: services/media/factory_service/factory_service.cc
 | 
| diff --git a/services/media/factory_service/factory_service.cc b/services/media/factory_service/factory_service.cc
 | 
| index 6fe73f1681aa0e866776d6491f9d2cfb3150401b..94b4c9b0082f917173d52472d80f0fc2c30a20dc 100644
 | 
| --- a/services/media/factory_service/factory_service.cc
 | 
| +++ b/services/media/factory_service/factory_service.cc
 | 
| @@ -13,21 +13,10 @@
 | 
|  namespace mojo {
 | 
|  namespace media {
 | 
|  
 | 
| -MediaFactoryService::ProductBase::ProductBase(MediaFactoryService* owner)
 | 
| -    : owner_(owner) {
 | 
| -  DCHECK(owner_);
 | 
| -}
 | 
| -
 | 
| -MediaFactoryService::ProductBase::~ProductBase() {}
 | 
| -
 | 
|  MediaFactoryService::MediaFactoryService() {}
 | 
|  
 | 
|  MediaFactoryService::~MediaFactoryService() {}
 | 
|  
 | 
| -void MediaFactoryService::Initialize(ApplicationImpl* app) {
 | 
| -  app_ = app;
 | 
| -}
 | 
| -
 | 
|  bool MediaFactoryService::ConfigureIncomingConnection(
 | 
|      ServiceProviderImpl* service_provider_impl) {
 | 
|    service_provider_impl->AddService<MediaFactory>(
 | 
| @@ -40,43 +29,39 @@ bool MediaFactoryService::ConfigureIncomingConnection(
 | 
|  
 | 
|  void MediaFactoryService::CreatePlayer(InterfaceHandle<SeekingReader> reader,
 | 
|                                         InterfaceRequest<MediaPlayer> player) {
 | 
| -  products_.insert(std::static_pointer_cast<ProductBase>(
 | 
| -      MediaPlayerImpl::Create(reader.Pass(), player.Pass(), this)));
 | 
| +  AddProduct(MediaPlayerImpl::Create(reader.Pass(), player.Pass(), this));
 | 
|  }
 | 
|  
 | 
|  void MediaFactoryService::CreateSource(InterfaceHandle<SeekingReader> reader,
 | 
|                                         Array<MediaTypeSetPtr> media_types,
 | 
|                                         InterfaceRequest<MediaSource> source) {
 | 
| -  products_.insert(
 | 
| -      std::static_pointer_cast<ProductBase>(MediaSourceImpl::Create(
 | 
| -          reader.Pass(), media_types, source.Pass(), this)));
 | 
| +  AddProduct(
 | 
| +      MediaSourceImpl::Create(reader.Pass(), media_types, source.Pass(), this));
 | 
|  }
 | 
|  
 | 
|  void MediaFactoryService::CreateSink(const String& destination_url,
 | 
|                                       MediaTypePtr media_type,
 | 
|                                       InterfaceRequest<MediaSink> sink) {
 | 
| -  products_.insert(std::static_pointer_cast<ProductBase>(MediaSinkImpl::Create(
 | 
| -      destination_url, media_type.Pass(), sink.Pass(), this)));
 | 
| +  AddProduct(MediaSinkImpl::Create(destination_url, media_type.Pass(),
 | 
| +                                   sink.Pass(), this));
 | 
|  }
 | 
|  
 | 
|  void MediaFactoryService::CreateDemux(InterfaceHandle<SeekingReader> reader,
 | 
|                                        InterfaceRequest<MediaDemux> demux) {
 | 
| -  products_.insert(std::static_pointer_cast<ProductBase>(
 | 
| -      MediaDemuxImpl::Create(reader.Pass(), demux.Pass(), this)));
 | 
| +  AddProduct(MediaDemuxImpl::Create(reader.Pass(), demux.Pass(), this));
 | 
|  }
 | 
|  
 | 
|  void MediaFactoryService::CreateDecoder(
 | 
|      MediaTypePtr input_media_type,
 | 
|      InterfaceRequest<MediaTypeConverter> decoder) {
 | 
| -  products_.insert(std::static_pointer_cast<ProductBase>(
 | 
| -      MediaDecoderImpl::Create(input_media_type.Pass(), decoder.Pass(), this)));
 | 
| +  AddProduct(
 | 
| +      MediaDecoderImpl::Create(input_media_type.Pass(), decoder.Pass(), this));
 | 
|  }
 | 
|  
 | 
|  void MediaFactoryService::CreateNetworkReader(
 | 
|      const String& url,
 | 
|      InterfaceRequest<SeekingReader> reader) {
 | 
| -  products_.insert(std::static_pointer_cast<ProductBase>(
 | 
| -      NetworkReaderImpl::Create(url, reader.Pass(), this)));
 | 
| +  AddProduct(NetworkReaderImpl::Create(url, reader.Pass(), this));
 | 
|  }
 | 
|  
 | 
|  }  // namespace media
 | 
| 
 |