gecko/media/mtransport/test/mtransport_test_utils.h

89 lines
2.6 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
// Original author: ekr@rtfm.com
#ifndef mtransport_test_utils_h__
#define mtransport_test_utils_h__
#include "nspr.h"
#include "nsCOMPtr.h"
#include "nsNetCID.h"
#include "nsXPCOMGlue.h"
#include "nsXPCOM.h"
#include "nsIComponentManager.h"
#include "nsIComponentRegistrar.h"
#include "nsIIOService.h"
#include "nsIServiceManager.h"
#include "nsISocketTransportService.h"
#include "nsDirectoryServiceUtils.h"
#include "nsDirectoryServiceDefs.h"
#ifdef MOZ_CRASHREPORTER
#include "nsICrashReporter.h"
#endif
#include "nsServiceManagerUtils.h"
class MtransportTestUtils {
public:
bool InitServices() {
nsresult rv;
NS_InitXPCOM2(getter_AddRefs(servMan_), nullptr, nullptr);
manager_ = do_QueryInterface(servMan_);
rv = manager_->CreateInstanceByContractID(NS_IOSERVICE_CONTRACTID,
nullptr, NS_GET_IID(nsIIOService),
getter_AddRefs(ioservice_));
if (!NS_SUCCEEDED(rv))
return false;
sts_target_ = do_GetService(NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &rv);
if (!NS_SUCCEEDED(rv))
return false;
#ifdef MOZ_CRASHREPORTER
char *crashreporter = PR_GetEnv("MOZ_CRASHREPORTER");
if (crashreporter && !strcmp(crashreporter, "1")) {
//TODO: move this to an even-more-common location to use in all
// C++ unittests
crashreporter_ = do_GetService("@mozilla.org/toolkit/crash-reporter;1");
if (crashreporter_) {
std::cerr << "Setting up crash reporting" << std::endl;
nsCOMPtr<nsIProperties> dirsvc =
do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID);
nsCOMPtr<nsIFile> cwd;
rv = dirsvc->Get(NS_XPCOM_CURRENT_PROCESS_DIR,
NS_GET_IID(nsIFile),
getter_AddRefs(cwd));
if (!NS_SUCCEEDED(rv))
return false;
crashreporter_->SetEnabled(true);
crashreporter_->SetMinidumpPath(cwd);
}
}
#endif
return true;
}
nsCOMPtr<nsIEventTarget> sts_target() { return sts_target_; }
private:
nsCOMPtr<nsIServiceManager> servMan_;
nsCOMPtr<nsIComponentManager> manager_;
nsCOMPtr<nsIIOService> ioservice_;
nsCOMPtr<nsIEventTarget> sts_target_;
#ifdef MOZ_CRASHREPORTER
nsCOMPtr<nsICrashReporter> crashreporter_;
#endif
};
#endif