mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 05:37:11 +00:00
1367963d3d
- Bug 1198124 - Enable -Wshadow in directories that have no -Wshadow warnings. r=glandium (d03cfc1bb6) - Bug 1204403 - Fix -Wshadow warnings in xpcom. r=mccr8 (3247b5b146) - Bug 1140120 - Remove a couple of unused test functions on ServiceWorkerContainer; r=baku (efe1119749) - Bug 1180148 - Clear service workers registered for a site when clearing the cookies and stored data is not working in b2g. r=baku (7fb1d522ff) - Bug 1162333 - Add stronger assertions to PromiseWorkerProxy in debug builds. r=catalinb (0005a76252) - Bug 1190672 - Fix use of AutoReleasePromiseWorkerProxy in PushManager. r=catalinb (18f7358163) - Bug 1191495 - Relax PushManager callback assertions. r=kitcambridge (8a3822969f) - Bug 1189543 - pushManager.getSubscription() should return null for nonexistent push subscriptions in workers. r=nsm (b990083262) - spacing (44b87017a7) - Bug 1180295 - Rip out the Fennec code to set the screen render offset. r=rbarker (67183ae8bf) - Bug 1187804 - Un-adjust fixed layers by the async transform of the scroll frame that they're fixed with respect to, not of the nearest ancestor scroll frame. r=kats (7c5e7ac29c) - Bug 1131359 - Fix an include-what-you-use error in AsyncCompositionManager.cpp. r=kats (fe04815939) - Bug 1187804 - When a layer is scrolled by multiple scroll frames, do an AlignFixedAndStickyLayers pass on its subtree for each of the scroll frames. r=kats (031a5686f1) - Bug 1180295 - Stop clipping the content while the toolbar is in the process of sliding off. r=rbarker (9d806870e4) - Bug 1186968 - Fix Compositor::SetScreenRotation() call r=nical (e554c4b4a2) - Bug 1180295 - Implement seamless snapping to the stable state. r=rbarker (d1e7978eb7) - Bug 1131470 - Part 1: Rename existing use of ScreenOrientation to ScreenOrientationInternal. r=baku (63f0cb994b) - Bug 1131470 - Part 2: Update screen configuration HAL to report orientation angle. r=snorp,mwu (39b537f008) - Bug 1167597 - Mark PromiseReportRejectFeature::mPromise as MOZ_NON_OWNING_REF. r=ehsan (3ad520790a) - Bug 1086627 - Rename Promise constructs to more closely match the specification. r=nsm,jst (cea1d71cb1) - Bug 1086627 - Rename ThenableResolverTask to PromiseResolveThenableJob to more closely match Promise spec. r=nsm (e7102fe506) - Bug 1164725 - Convert flags in nsIDocument into bit fields. r=smaug (9f5d5f352d) - Bug 1192467 - Formalize precondition that SetDisplayDocument must not be called with null. - r=peterv (1aa8e91d14) - Bug 1153841 - Remove the 'it must be 2D' restriction for transforms on fixed-pos layers. r=BenWa,mattwoodrow (5bab86ec6a) - Bug 1173521 - Properly handle unapplying 3D projective transforms to rectangles in APZ code. r=botond (45c9850d5c) - Bug 1166301 - When applying an async adjustment to a fixed layer, only adjust its mask layer under the same circumstances as its clip rect. r=mattwoodrow (2801c48fe9) - Bug 1166301 - Update an old comment in AsyncCompositionManager::AlignFixedAndStickyLayers. r=kats (7e1d5c97d0) - Bug 1166301 - Allow async scrolling to move the clip rects of fixed background layers. r=mattwoodrow (edd889ec2b) - Bug 1200399 - Only send the RCD's metrics to Java-land for fennec-apz. r=rbarker (3b36a52f3a) - Bug 1201625 - Special-case B2GDroid since it doesn't have a root content document. r=rbarker (4fcdda1b0a) - Bug 1201529 - Fall back to rootmost metrics if there is no root content document metrics. r=botond (615c2ee727) - Bug 1201581 - Extract a helper method. r=rbarker (f2cccb8666) - Bug 1201581 - Hook up the syncFrameMetrics call to sync metrics info from the compositor to Java-land on each composite. r=rbarker (48e15bbde8) - Bug 1203760 P1 Allow pipe to wake up multiple streams at the same time. r=froydnj (5baed00637) - Bug 1203760 P2 Add gtests for nsPipeInputStream AsyncRead(). r=froydnj (52e5129dc8) - Bug 1201889 - When adjusting fixed and sticky layers in AsyncCompsitionManager, unapply all async transforms on the path from the fixed layer to the layer it's fixed with respect to. r=kats (dbb203178e) - Bug 1165536. Don't include resolution compensation when adjusting the cliprect of ancestors of scrollbars. r=botond (3bef5f2c18) - Fix async transforms on scrollbars not including any existing shadow transform. (bug 1128740 part 2, r=botond) (af12d76775) - missing of Bug 943728 - Replace double quotes with single quotes in Makefiles (e11470540f) - Bug 1188766 - Avoid exporting UPLOAD_EXTRA_FILES from mozconfig. r=mshal (4241b9e80b) - Fixup for bug 1188766 for valgrind bustage on a CLOSED TREE. r=me (4401dedf06) - Bug 1077622 - Fixes cp missing operand message if no .mozconfig found r=glandium (6eca1e5214) - Bug 1200523 - Remove leftover debugging code from js/src/Makefile.in; r=ted (414b72c74e) - spacing (99cda3f8a7)
323 lines
7.5 KiB
C++
323 lines
7.5 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=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/. */
|
|
|
|
#include "nsStatusReporterManager.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsDirectoryServiceDefs.h"
|
|
#include "nsArrayEnumerator.h"
|
|
#include "nsISimpleEnumerator.h"
|
|
#include "nsIFile.h"
|
|
#include "nsDumpUtils.h"
|
|
#include "nsIFileStreams.h"
|
|
#include "nsPrintfCString.h"
|
|
|
|
#ifdef XP_WIN
|
|
#include <process.h>
|
|
#define getpid _getpid
|
|
#else
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#ifdef XP_UNIX
|
|
#define DO_STATUS_REPORT 1
|
|
#endif
|
|
|
|
#ifdef DO_STATUS_REPORT // {
|
|
namespace {
|
|
|
|
class DumpStatusInfoToTempDirRunnable : public nsRunnable
|
|
{
|
|
public:
|
|
DumpStatusInfoToTempDirRunnable()
|
|
{
|
|
}
|
|
|
|
NS_IMETHOD Run()
|
|
{
|
|
nsCOMPtr<nsIStatusReporterManager> mgr =
|
|
do_GetService("@mozilla.org/status-reporter-manager;1");
|
|
mgr->DumpReports();
|
|
return NS_OK;
|
|
}
|
|
};
|
|
|
|
void
|
|
doStatusReport(const nsCString& aInputStr)
|
|
{
|
|
LOG("FifoWatcher(%s) dispatching status report runnable.", aInputStr.get());
|
|
nsRefPtr<DumpStatusInfoToTempDirRunnable> runnable =
|
|
new DumpStatusInfoToTempDirRunnable();
|
|
NS_DispatchToMainThread(runnable);
|
|
}
|
|
|
|
} //anonymous namespace
|
|
#endif // DO_STATUS_REPORT }
|
|
|
|
static bool gStatusReportProgress = 0;
|
|
static int gNumReporters = 0;
|
|
|
|
nsresult
|
|
getStatus(nsACString& aDesc)
|
|
{
|
|
if (!gStatusReportProgress) {
|
|
aDesc.AssignLiteral("Init");
|
|
} else {
|
|
aDesc.AssignLiteral("Running: There are ");
|
|
aDesc.AppendInt(gNumReporters);
|
|
aDesc.AppendLiteral(" reporters");
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_STATUS_REPORTER_IMPLEMENT(StatusReporter, "StatusReporter State", getStatus)
|
|
|
|
#define DUMP(o, s) \
|
|
do { \
|
|
const char* s2 = (s); \
|
|
uint32_t dummy; \
|
|
nsresult rvDump = (o)->Write((s2), strlen(s2), &dummy); \
|
|
if (NS_WARN_IF(NS_FAILED(rvDump))) \
|
|
return rvDump; \
|
|
} while (0)
|
|
|
|
static nsresult
|
|
DumpReport(nsIFileOutputStream* aOStream, const nsCString& aProcess,
|
|
const nsCString& aName, const nsCString& aDescription)
|
|
{
|
|
int pid;
|
|
if (aProcess.IsEmpty()) {
|
|
pid = getpid();
|
|
nsPrintfCString pidStr("PID %u", pid);
|
|
DUMP(aOStream, "\n {\n \"Process\": \"");
|
|
DUMP(aOStream, pidStr.get());
|
|
} else {
|
|
pid = 0;
|
|
DUMP(aOStream, "\n { \"Unknown Process\": \"");
|
|
}
|
|
|
|
DUMP(aOStream, "\",\n \"Reporter name\": \"");
|
|
DUMP(aOStream, aName.get());
|
|
|
|
DUMP(aOStream, "\",\n \"Status Description\": [\"");
|
|
nsCString desc = aDescription;
|
|
desc.ReplaceSubstring("|", "\",\"");
|
|
DUMP(aOStream, desc.get());
|
|
|
|
DUMP(aOStream, "\"]\n }");
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
/**
|
|
** nsStatusReporterManager implementation
|
|
**/
|
|
|
|
NS_IMPL_ISUPPORTS(nsStatusReporterManager, nsIStatusReporterManager)
|
|
|
|
nsStatusReporterManager::nsStatusReporterManager()
|
|
{
|
|
}
|
|
|
|
nsStatusReporterManager::~nsStatusReporterManager()
|
|
{
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsStatusReporterManager::Init()
|
|
{
|
|
RegisterReporter(new NS_STATUS_REPORTER_NAME(StatusReporter));
|
|
gStatusReportProgress = 1;
|
|
|
|
#ifdef DO_STATUS_REPORT
|
|
if (FifoWatcher::MaybeCreate()) {
|
|
FifoWatcher* fw = FifoWatcher::GetSingleton();
|
|
fw->RegisterCallback(NS_LITERAL_CSTRING("status report"), doStatusReport);
|
|
}
|
|
#endif
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsStatusReporterManager::DumpReports()
|
|
{
|
|
static unsigned number = 1;
|
|
nsresult rv;
|
|
|
|
nsCString filename("status-reports-");
|
|
filename.AppendInt(getpid());
|
|
filename.Append('-');
|
|
filename.AppendInt(number++);
|
|
filename.AppendLiteral(".json");
|
|
|
|
// Open a file in NS_OS_TEMP_DIR for writing.
|
|
// The file is initialized as "incomplete-status-reports-pid-number.json" in the
|
|
// begining, it will be rename as "status-reports-pid-number.json" in the end.
|
|
nsCOMPtr<nsIFile> tmpFile;
|
|
rv = nsDumpUtils::OpenTempFile(NS_LITERAL_CSTRING("incomplete-") +
|
|
filename,
|
|
getter_AddRefs(tmpFile),
|
|
NS_LITERAL_CSTRING("status-reports"));
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
nsCOMPtr<nsIFileOutputStream> ostream =
|
|
do_CreateInstance("@mozilla.org/network/file-output-stream;1");
|
|
rv = ostream->Init(tmpFile, -1, -1, 0);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
//Write the reports to the file
|
|
|
|
DUMP(ostream, "{\n\"subject\":\"about:service reports\",\n");
|
|
DUMP(ostream, "\"reporters\": [ ");
|
|
|
|
nsCOMPtr<nsISimpleEnumerator> e;
|
|
bool more, first = true;
|
|
EnumerateReporters(getter_AddRefs(e));
|
|
while (NS_SUCCEEDED(e->HasMoreElements(&more)) && more) {
|
|
nsCOMPtr<nsISupports> supports;
|
|
e->GetNext(getter_AddRefs(supports));
|
|
nsCOMPtr<nsIStatusReporter> r = do_QueryInterface(supports);
|
|
|
|
nsCString process;
|
|
rv = r->GetProcess(process);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
nsCString name;
|
|
rv = r->GetName(name);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
nsCString description;
|
|
rv = r->GetDescription(description);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
if (first) {
|
|
first = false;
|
|
} else {
|
|
DUMP(ostream, ",");
|
|
}
|
|
|
|
rv = DumpReport(ostream, process, name, description);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
}
|
|
DUMP(ostream, "\n]\n}\n");
|
|
|
|
rv = ostream->Close();
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
// Rename the status reports file
|
|
nsCOMPtr<nsIFile> srFinalFile;
|
|
rv = NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(srFinalFile));
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
#ifdef ANDROID
|
|
rv = srFinalFile->AppendNative(NS_LITERAL_CSTRING("status-reports"));
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
#endif
|
|
|
|
rv = srFinalFile->AppendNative(filename);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
rv = srFinalFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
nsAutoString srActualFinalFilename;
|
|
rv = srFinalFile->GetLeafName(srActualFinalFilename);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
rv = tmpFile->MoveTo(/* directory */ nullptr, srActualFinalFilename);
|
|
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsStatusReporterManager::EnumerateReporters(nsISimpleEnumerator** aResult)
|
|
{
|
|
return NS_NewArrayEnumerator(aResult, mReporters);
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsStatusReporterManager::RegisterReporter(nsIStatusReporter* aReporter)
|
|
{
|
|
if (mReporters.IndexOf(aReporter) != -1) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
mReporters.AppendObject(aReporter);
|
|
gNumReporters++;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsStatusReporterManager::UnregisterReporter(nsIStatusReporter* aReporter)
|
|
{
|
|
if (!mReporters.RemoveObject(aReporter)) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
gNumReporters--;
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
NS_RegisterStatusReporter(nsIStatusReporter* aReporter)
|
|
{
|
|
nsCOMPtr<nsIStatusReporterManager> mgr =
|
|
do_GetService("@mozilla.org/status-reporter-manager;1");
|
|
if (!mgr) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
return mgr->RegisterReporter(aReporter);
|
|
}
|
|
|
|
nsresult
|
|
NS_UnregisterStatusReporter(nsIStatusReporter* aReporter)
|
|
{
|
|
nsCOMPtr<nsIStatusReporterManager> mgr =
|
|
do_GetService("@mozilla.org/status-reporter-manager;1");
|
|
if (!mgr) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
return mgr->UnregisterReporter(aReporter);
|
|
}
|
|
|
|
nsresult
|
|
NS_DumpStatusReporter()
|
|
{
|
|
nsCOMPtr<nsIStatusReporterManager> mgr =
|
|
do_GetService("@mozilla.org/status-reporter-manager;1");
|
|
if (!mgr) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
return mgr->DumpReports();
|
|
}
|