author Ehsan Akhgari <ehsan@mozilla.com>
Fri, 03 Mar 2017 15:16:23 -0500
changeset 346288 69abc17ea32fd2b12a8bba5f7a34cb5de2b05133
parent 345436 0ae0446f58c340060db184d6760755a3b289d731
child 412001 cedf0be06827c0388a198b5377d444a84af1ecbf
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_SpinEvent_h
#define mozilla_mscom_SpinEvent_h

#include "mozilla/Atomics.h"
#include "mozilla/Attributes.h"
#include "nsWindowsHelpers.h"

namespace mozilla {
namespace mscom {

class MOZ_NON_TEMPORARY_CLASS SpinEvent final
  ~SpinEvent() = default;

  bool Wait(HANDLE aTargetThread);
  void Signal();

  SpinEvent(const SpinEvent&) = delete;
  SpinEvent(SpinEvent&&) = delete;
  SpinEvent& operator=(SpinEvent&&) = delete;
  SpinEvent& operator=(const SpinEvent&) = delete;

  Atomic<bool, ReleaseAcquire>  mDone;
  nsAutoHandle                  mDoneEvent;

} // namespace mscom
} // namespace mozilla

#endif // mozilla_mscom_SpinEvent_h