Bug 1173858 - Part 1: Add log module for layout. r=dholbert

Add a log module for use by layout. An analog to NS_WARN_IF_FALSE is provided
that has the same behavior as NS_WARN_IF_FALSE: it's debug only and emits a
message prefixed with '[pid] WARNING', includes the condition being checked,
file name and line number.
This commit is contained in:
Eric Rahm 2015-06-15 16:36:09 -07:00
Родитель 5215ca7222
Коммит 4056ee6539
3 изменённых файлов: 82 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,35 @@
/* -*- 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/. */
// Chromium headers must come before Mozilla headers.
#include "base/process_util.h"
#include "LayoutLogging.h"
PRLogModuleInfo* GetLayoutLog()
{
static PRLogModuleInfo* log = nullptr;
if (!log) {
log = PR_NewLogModule("layout");
}
return log;
}
namespace mozilla {
namespace detail {
void LayoutLogWarning(const char* aStr, const char* aExpr,
const char* aFile, int32_t aLine)
{
MOZ_LOG(GetLayoutLog(),
mozilla::LogLevel::Warning,
("[%d] WARNING: %s: '%s', file %s, line %d",
base::GetCurrentProcId(),
aStr, aExpr, aFile, aLine));
}
} // namespace detail
} // namespace mozilla

Просмотреть файл

@ -0,0 +1,45 @@
/* -*- 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/. */
#ifndef LayoutLogging_h
#define LayoutLogging_h
#include "mozilla/Logging.h"
/**
* Retrieves the log module to use for layout logging.
*/
PRLogModuleInfo* GetLayoutLog();
/**
* Use the layout log to warn if a given condition is false.
*
* This is only enabled in debug builds and the logging is only displayed if
* the environmental variable NSPR_LOG_MODULES includes "layout:2" (or higher).
*/
#ifdef DEBUG
#define LAYOUT_WARN_IF_FALSE(_cond, _msg) \
PR_BEGIN_MACRO \
if (MOZ_LOG_TEST(GetLayoutLog(), mozilla::LogLevel::Warning) && \
!(_cond)) { \
mozilla::detail::LayoutLogWarning(_msg, #_cond, __FILE__, __LINE__); \
} \
PR_END_MACRO
#else
#define LAYOUT_WARN_IF_FALSE(_cond, _msg) \
PR_BEGIN_MACRO \
PR_END_MACRO
#endif
namespace mozilla {
namespace detail {
void LayoutLogWarning(const char* aStr, const char* aExpr,
const char* aFile, int32_t aLine);
} // namespace detail
} // namespace mozilla
#endif // LayoutLogging_h

Просмотреть файл

@ -59,6 +59,7 @@ EXPORTS += [
'FrameLayerBuilder.h',
'FramePropertyTable.h',
'LayerState.h',
'LayoutLogging.h',
'nsArenaMemoryStats.h',
'nsBidi.h',
'nsBidiPresUtils.h',
@ -109,6 +110,7 @@ UNIFIED_SOURCES += [
'FrameLayerBuilder.cpp',
'FramePropertyTable.cpp',
'GeometryUtils.cpp',
'LayoutLogging.cpp',
'MaskLayerImageCache.cpp',
'nsBidi.cpp',
'nsBidiPresUtils.cpp',