image/ImageLogging.h
author Morten Stenshorne <mstensho@chromium.org>
Tue, 09 Oct 2018 04:14:13 +0000
changeset 495959 13844f50ee32e17f513b7c1013c2348200e21b8c
parent 475738 ff2162607d61d0edd7db85c2e117b3d620c9d9ac
child 505383 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1496274 [wpt PR 13345] - [LayoutNG] Correct clip-path reference box calculation., a=testonly Automatic update from web-platform-tests[LayoutNG] Correct clip-path reference box calculation. We used coordinates relatively to the line box, while we were expected by the caller to be relative to the containing block. Flipping for writing mode was bogus for NG (but needed by legacy), since NG uses truly physical coordinates. Hardened tests to contain a leading line and padding, and leading content on the first line of the clipped child. Bug: 641907 Change-Id: I2b1b9ff4ea92a6405fcdffcf139842458b46442f Cq-Include-Trybots: luci.chromium.try​:linux_layout_tests_layout_ng Reviewed-on: https://chromium-review.googlesource.com/c/1257913 Reviewed-by: Koji Ishii <kojii@chromium.org> Reviewed-by: Fredrik Söderquist <fs@opera.com> Commit-Queue: Morten Stenshorne <mstensho@chromium.org> Cr-Commit-Position: refs/heads/master@{#596554} -- wpt-commits: e9a0828c85819340f721f121aac19ab8eefa3439 wpt-pr: 13345

/* -*- 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 mozilla_image_ImageLogging_h
#define mozilla_image_ImageLogging_h

#include "mozilla/Logging.h"
#include "Image.h"
#include "nsIURI.h"
#include "prinrval.h"

static mozilla::LazyLogModule gImgLog("imgRequest");

#define GIVE_ME_MS_NOW() PR_IntervalToMilliseconds(PR_IntervalNow())

using mozilla::LogLevel;

class LogScope {
public:

  LogScope(mozilla::LogModule* aLog, void* aFrom, const char* aFunc)
    : mLog(aLog)
    , mFrom(aFrom)
    , mFunc(aFunc)
  {
    MOZ_LOG(mLog, LogLevel::Debug, ("%d [this=%p] %s {ENTER}\n",
                                GIVE_ME_MS_NOW(), mFrom, mFunc));
  }

  /* const char * constructor */
  LogScope(mozilla::LogModule* aLog, void* from, const char* fn,
           const char* paramName, const char* paramValue)
    : mLog(aLog)
    , mFrom(from)
    , mFunc(fn)
  {
    MOZ_LOG(mLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%s\") {ENTER}\n",
                                 GIVE_ME_MS_NOW(), mFrom, mFunc,
                                 paramName, paramValue));
  }

  /* void ptr constructor */
  LogScope(mozilla::LogModule* aLog, void* from, const char* fn,
           const char* paramName, const void* paramValue)
    : mLog(aLog)
    , mFrom(from)
    , mFunc(fn)
  {
    MOZ_LOG(mLog, LogLevel::Debug, ("%d [this=%p] %s (%s=%p) {ENTER}\n",
                                GIVE_ME_MS_NOW(), mFrom, mFunc,
                                paramName, paramValue));
  }

  /* int32_t constructor */
  LogScope(mozilla::LogModule* aLog, void* from, const char* fn,
           const char* paramName, int32_t paramValue)
    : mLog(aLog)
    , mFrom(from)
    , mFunc(fn)
  {
    MOZ_LOG(mLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%d\") {ENTER}\n",
                                GIVE_ME_MS_NOW(), mFrom, mFunc,
                                paramName, paramValue));
  }

  /* uint32_t constructor */
  LogScope(mozilla::LogModule* aLog, void* from, const char* fn,
           const char* paramName, uint32_t paramValue)
    : mLog(aLog)
    , mFrom(from)
    , mFunc(fn)
  {
    MOZ_LOG(mLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%d\") {ENTER}\n",
                                GIVE_ME_MS_NOW(), mFrom, mFunc,
                                paramName, paramValue));
  }

  /* nsIURI constructor */
  LogScope(mozilla::LogModule* aLog, void* from, const char* fn,
           const char* paramName, nsIURI* aURI)
    : mLog(aLog)
    , mFrom(from)
    , mFunc(fn)
  {
    if (MOZ_LOG_TEST(gImgLog, LogLevel::Debug)) {
      static const size_t sMaxTruncatedLength = 1024;
      nsAutoCString spec("<unknown>");
      if (aURI) {
        aURI->GetSpec(spec);
        if (spec.Length() >= sMaxTruncatedLength) {
          spec.Truncate(sMaxTruncatedLength);
        }
      }
      MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%s\") {ENTER}\n",
                                  GIVE_ME_MS_NOW(), from, fn,
                                  paramName, spec.get()));
    }
  }

  /* Image constructor */
  LogScope(mozilla::LogModule* aLog, void* from, const char* fn,
           const char* paramName, mozilla::image::Image* aImage)
    : LogScope(aLog, from, fn, paramName, aImage ? aImage->GetURI() : nullptr)
  {
  }

  ~LogScope()
  {
    MOZ_LOG(mLog, LogLevel::Debug, ("%d [this=%p] %s {EXIT}\n",
                                GIVE_ME_MS_NOW(), mFrom, mFunc));
  }

private:
  mozilla::LogModule* mLog;
  void* mFrom;
  const char* mFunc;
};

class LogFunc {
public:
  LogFunc(mozilla::LogModule* aLog, void* from, const char* fn)
  {
    MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s\n",
                                GIVE_ME_MS_NOW(), from, fn));
  }

  LogFunc(mozilla::LogModule* aLog, void* from, const char* fn,
          const char* paramName, const char* paramValue)
  {
    MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%s\")\n",
                                GIVE_ME_MS_NOW(), from, fn,
                                paramName, paramValue));
  }

  LogFunc(mozilla::LogModule* aLog, void* from, const char* fn,
          const char* paramName, const void* paramValue)
  {
    MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%p\")\n",
                                GIVE_ME_MS_NOW(), from, fn,
                                paramName, paramValue));
  }


  LogFunc(mozilla::LogModule* aLog, void* from, const char* fn,
          const char* paramName, uint32_t paramValue)
  {
    MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%d\")\n",
                                GIVE_ME_MS_NOW(), from, fn,
                                paramName, paramValue));
  }

  LogFunc(mozilla::LogModule* aLog, void* from, const char* fn,
          const char* paramName, nsIURI* aURI)
  {
    if (MOZ_LOG_TEST(gImgLog, LogLevel::Debug)) {
      static const size_t sMaxTruncatedLength = 1024;
      nsAutoCString spec("<unknown>");
      if (aURI) {
        aURI->GetSpec(spec);
        if (spec.Length() >= sMaxTruncatedLength) {
          spec.Truncate(sMaxTruncatedLength);
        }
      }
      MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s (%s=\"%s\")\n",
                                  GIVE_ME_MS_NOW(), from, fn,
                                  paramName, spec.get()));
    }
  }

  LogFunc(mozilla::LogModule* aLog, void* from, const char* fn,
          const char* paramName, mozilla::image::Image* aImage)
    : LogFunc(aLog, from, fn, paramName, aImage ? aImage->GetURI() : nullptr)
  {
  }

};


class LogMessage {
public:
  LogMessage(mozilla::LogModule* aLog, void* from, const char* fn,
             const char* msg)
  {
    MOZ_LOG(aLog, LogLevel::Debug, ("%d [this=%p] %s -- %s\n",
                                GIVE_ME_MS_NOW(), from, fn, msg));
  }
};

#define LOG_SCOPE_APPEND_LINE_NUMBER_PASTE(id, line) id ## line
#define LOG_SCOPE_APPEND_LINE_NUMBER_EXPAND(id, line) \
        LOG_SCOPE_APPEND_LINE_NUMBER_PASTE(id, line)
#define LOG_SCOPE_APPEND_LINE_NUMBER(id) \
        LOG_SCOPE_APPEND_LINE_NUMBER_EXPAND(id, __LINE__)

#define LOG_SCOPE(l, s) \
  LogScope LOG_SCOPE_APPEND_LINE_NUMBER(LOG_SCOPE_TMP_VAR) (l, this, s)

#define LOG_SCOPE_WITH_PARAM(l, s, pn, pv) \
  LogScope LOG_SCOPE_APPEND_LINE_NUMBER(LOG_SCOPE_TMP_VAR) (l, this, s, pn, pv)

#define LOG_FUNC(l, s) LogFunc(l, this, s)

#define LOG_FUNC_WITH_PARAM(l, s, pn, pv) LogFunc(l, this, s, pn, pv)

#define LOG_STATIC_FUNC(l, s) LogFunc(l, nullptr, s)

#define LOG_STATIC_FUNC_WITH_PARAM(l, s, pn, pv) LogFunc(l, nullptr, s, pn, pv)

#define LOG_MSG(l, s, m) LogMessage(l, this, s, m)

#define LOG_MSG_WITH_PARAM LOG_FUNC_WITH_PARAM

#endif // mozilla_image_ImageLogging_h