diff -r 000000000000 -r 6474c204b198 dom/mobilemessage/src/SmsServicesFactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/mobilemessage/src/SmsServicesFactory.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,77 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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/. */ + +#include "SmsServicesFactory.h" +#include "nsXULAppAPI.h" +#include "ipc/SmsIPCService.h" +#ifdef MOZ_WIDGET_ANDROID +#include "android/MobileMessageDatabaseService.h" +#include "android/SmsService.h" +#elif defined(MOZ_WIDGET_GONK) && defined(MOZ_B2G_RIL) +#include "gonk/SmsService.h" +#endif +#include "nsServiceManagerUtils.h" + +#define RIL_MMSSERVICE_CONTRACTID "@mozilla.org/mms/rilmmsservice;1" +#define RIL_MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID "@mozilla.org/mobilemessage/rilmobilemessagedatabaseservice;1" + +namespace mozilla { +namespace dom { +namespace mobilemessage { + +/* static */ already_AddRefed +SmsServicesFactory::CreateSmsService() +{ + nsCOMPtr smsService; + + if (XRE_GetProcessType() == GeckoProcessType_Content) { + smsService = new SmsIPCService(); + } else { +#ifdef MOZ_WIDGET_ANDROID + smsService = new SmsService(); +#elif defined(MOZ_WIDGET_GONK) && defined(MOZ_B2G_RIL) + smsService = new SmsService(); +#endif + } + + return smsService.forget(); +} + +/* static */ already_AddRefed +SmsServicesFactory::CreateMobileMessageDatabaseService() +{ + nsCOMPtr mobileMessageDBService; + if (XRE_GetProcessType() == GeckoProcessType_Content) { + mobileMessageDBService = new SmsIPCService(); + } else { +#ifdef MOZ_WIDGET_ANDROID + mobileMessageDBService = new MobileMessageDatabaseService(); +#elif defined(MOZ_WIDGET_GONK) && defined(MOZ_B2G_RIL) + mobileMessageDBService = do_GetService(RIL_MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID); +#endif + } + + return mobileMessageDBService.forget(); +} + +/* static */ already_AddRefed +SmsServicesFactory::CreateMmsService() +{ + nsCOMPtr mmsService; + + if (XRE_GetProcessType() == GeckoProcessType_Content) { + mmsService = new SmsIPCService(); + } else { +#if defined(MOZ_WIDGET_GONK) && defined(MOZ_B2G_RIL) + mmsService = do_CreateInstance(RIL_MMSSERVICE_CONTRACTID); +#endif + } + + return mmsService.forget(); +} + +} // namespace mobilemessage +} // namespace dom +} // namespace mozilla