ipc/mscom/IHandlerPayload.h
author Ehsan Akhgari <ehsan@mozilla.com>
Fri, 03 Mar 2017 15:16:23 -0500
changeset 346288 69abc17ea32fd2b12a8bba5f7a34cb5de2b05133
parent 344356 604605ca738cab9e3b20cd2716e10c72ecd5b859
child 346627 33e8959a4ff88bd451ea3693ecc7e5cf9016b9e6
permissions -rw-r--r--
Bug 1340710 - Part 5: Make nsIPrincipal.origin throw for about:blank codebase URI principals; r=bholley Two about:blank codebase URI principals are only equal if their object identities are the same, but not if their string serializations happen to be equal (as they always will be.) In order to ensure that we always get this right in places where we compare the origin properties of two principals to check for their equality, we should ensure that the origin getter would throw so that we never incorrectly conclude that two such principals are equal. We will soon start returning a null principal instead of a codebase principal under this situation.

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

#include <objidl.h>

namespace mozilla {
namespace mscom {

struct HandlerPayload
{
  virtual STDMETHODIMP GetHandler(CLSID* aHandlerClsid) = 0;
  virtual STDMETHODIMP GetHandlerPayloadSize(REFIID aIid,
                                             IUnknown* aTarget,
                                             DWORD* aOutPayloadSize) = 0;
  virtual STDMETHODIMP WriteHandlerPayload(IStream* aStream, REFIID aIid,
                                           IUnknown* aTarget) = 0;
  virtual REFIID MarshalAs(REFIID aIid) = 0;
};

struct IHandlerPayload : public IUnknown
                       , public HandlerPayload
{
  virtual STDMETHODIMP Clone(IHandlerPayload** aOutNewPayload) = 0;
};

} // namespace mscom
} // namespace mozilla

#endif // mozilla_mscom_IHandlerPayload_h