From 81f77f18a0b0719a0deaa66c9caf38e224d795e8 Mon Sep 17 00:00:00 2001 From: FranklinDM Date: Fri, 29 Mar 2024 16:09:57 +0800 Subject: [PATCH] Issue #2488 - Part 5: Remove HandleRefPtr (exclusively used by smart pointer classes) --- layout/style/HandleRefPtr.h | 132 ------------------------------------ layout/style/moz.build | 1 - 2 files changed, 133 deletions(-) delete mode 100644 layout/style/HandleRefPtr.h diff --git a/layout/style/HandleRefPtr.h b/layout/style/HandleRefPtr.h deleted file mode 100644 index 487634c47f..0000000000 --- a/layout/style/HandleRefPtr.h +++ /dev/null @@ -1,132 +0,0 @@ -/* -*- 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/. - */ - -/* smart pointer for strong references to objects through pointer-like - * "handle" objects */ - -#include -#include "mozilla/Assertions.h" - -#ifndef mozilla_HandleRefPtr_h -#define mozilla_HandleRefPtr_h - -namespace mozilla { - -/** - * A class for holding strong references to handle-managed objects. - * - * This is intended for use with objects like RestyleManagerHandle, - * where the handle type is not a pointer but which can still have - * ->AddRef() and ->Release() called on it. - */ -template -class HandleRefPtr -{ -public: - HandleRefPtr() {} - - HandleRefPtr(HandleRefPtr& aRhs) - { - assign(aRhs.mHandle); - } - - HandleRefPtr(HandleRefPtr&& aRhs) - { - std::swap(mHandle, aRhs.mHandle); - } - - MOZ_IMPLICIT HandleRefPtr(T aRhs) - { - assign(aRhs); - } - - HandleRefPtr& operator=(HandleRefPtr& aRhs) - { - assign(aRhs.mHandle); - return *this; - } - - HandleRefPtr& operator=(T aRhs) - { - assign(aRhs); - return *this; - } - - ~HandleRefPtr() { assign(nullptr); } - - explicit operator bool() const { return !!mHandle; } - bool operator!() const { return !mHandle; } - - operator T() const { return mHandle; } - T operator->() const { return mHandle; } - - void swap(HandleRefPtr& aOther) - { - std::swap(mHandle, aOther.mHandle); - } - -private: - void assign(T aPtr) - { - // AddRef early so |aPtr| can't disappear underneath us. - if (aPtr) { - aPtr->AddRef(); - } - - // Don't release |mHandle| yet: if |mHandle| indirectly owns |this|, - // releasing would invalidate |this|. Swap |aPtr| for |mHandle| so that - // |aPtr| lives as long as |this|, then release the new |aPtr| (really the - // original |mHandle|) so that if |this| is invalidated, we're not using it - // any more. - std::swap(mHandle, aPtr); - - if (aPtr) { - aPtr->Release(); - } - } - - T mHandle; -}; - -template -inline bool operator==(const HandleRefPtr& aLHS, const HandleRefPtr& aRHS) -{ - return static_cast(aLHS) == static_cast(aRHS); -} - -template -inline bool operator==(const HandleRefPtr& aLHS, T aRHS) -{ - return static_cast(aLHS) == aRHS; -} - -template -inline bool operator==(T aLHS, const HandleRefPtr& aRHS) -{ - return aLHS == static_cast(aRHS); -} - -template -inline bool operator!=(const HandleRefPtr& aLHS, const HandleRefPtr& aRHS) -{ - return !(aLHS == aRHS); -} - -template -inline bool operator!=(const HandleRefPtr& aLHS, T aRHS) -{ - return !(aLHS == aRHS); -} - -template -inline bool operator!=(T aLHS, const HandleRefPtr& aRHS) -{ - return !(aLHS == aRHS); -} - -} // namespace mozilla - -#endif // mozilla_HandleRefPtr_h diff --git a/layout/style/moz.build b/layout/style/moz.build index 2f78f7772e..680fcfc04f 100644 --- a/layout/style/moz.build +++ b/layout/style/moz.build @@ -80,7 +80,6 @@ EXPORTS.mozilla += [ 'CSSVariableResolver.h', 'CSSVariableValues.h', 'DeprecatedUtils.h', - 'HandleRefPtr.h', 'IncrementalClearCOMRuleArray.h', 'LayerAnimationInfo.h', 'RuleNodeCacheConditions.h',