зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
5215ca7222
Коммит
4056ee6539
|
@ -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',
|
||||
|
|
Загрузка…
Ссылка в новой задаче