extensions/permissions/PermissionDelegateIPCUtils.h
author Botond Ballo <botond@mozilla.com>
Sun, 24 Jan 2021 04:08:00 +0000
changeset 564410 e65982f456435928e5ed52db9a96d12836663e7a
parent 535520 44e71580890195d163912b96f41ef09e32570ec8
permissions -rw-r--r--
Bug 1682919 - Avoid creating a new DisplayPortMargins object as a side effect of querying the displayport. r=tnikkel DisplayPortMargins objects are only meant to be created when setting display port margins, not when querying them, because the object's constructor records the visual and layout scroll offsets at the time of construction to use for adjusting the margins to be layout-relative. Differential Revision: https://phabricator.services.mozilla.com/D102075

/* -*- 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/. */

#ifndef mozilla_permissiondelegateipcutils_h
#define mozilla_permissiondelegateipcutils_h

#include "ipc/IPCMessageUtils.h"

#include "mozilla/PermissionDelegateHandler.h"

namespace IPC {

template <>
struct ParamTraits<
    mozilla::PermissionDelegateHandler::DelegatedPermissionList> {
  typedef mozilla::PermissionDelegateHandler::DelegatedPermissionList paramType;

  static void Write(Message* aMsg, const paramType& aParam) {
    for (auto& permission : aParam.mPermissions) {
      WriteParam(aMsg, permission);
    }
  }

  static bool Read(const Message* aMsg, PickleIterator* aIter,
                   paramType* aResult) {
    for (auto& permission : aResult->mPermissions) {
      if (!ReadParam(aMsg, aIter, &permission)) {
        return false;
      }
    }

    return true;
  }
};

}  // namespace IPC

#endif  // mozilla_permissiondelegateipcutils_h