tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ViewTransitionTypeSet.cpp (2481B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "mozilla/dom/ViewTransitionTypeSet.h"
      8 
      9 #include "mozilla/ErrorResult.h"
     10 #include "mozilla/dom/ViewTransition.h"
     11 #include "mozilla/dom/ViewTransitionBinding.h"
     12 #include "nsISupportsImpl.h"
     13 
     14 namespace mozilla::dom {
     15 
     16 using namespace ViewTransitionTypeSet_Binding;
     17 
     18 // Only needed for refcounted objects.
     19 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(ViewTransitionTypeSet, mTransition)
     20 NS_IMPL_CYCLE_COLLECTING_ADDREF(ViewTransitionTypeSet)
     21 NS_IMPL_CYCLE_COLLECTING_RELEASE(ViewTransitionTypeSet)
     22 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(ViewTransitionTypeSet)
     23  NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
     24  NS_INTERFACE_MAP_ENTRY(nsISupports)
     25 NS_INTERFACE_MAP_END
     26 
     27 ViewTransitionTypeSet::ViewTransitionTypeSet(ViewTransition& aVt)
     28    : mTransition(&aVt) {}
     29 
     30 ViewTransitionTypeSet::~ViewTransitionTypeSet() = default;
     31 
     32 nsISupports* ViewTransitionTypeSet::GetParentObject() const {
     33  return mTransition.get();
     34 }
     35 
     36 ViewTransitionTypeSet* ViewTransitionTypeSet::Add(const nsAString& aValue,
     37                                                  ErrorResult& aRv) {
     38  if (SetlikeHelpers::Has(this, aValue, aRv) || aRv.Failed()) {
     39    return this;
     40  }
     41  SetlikeHelpers::Add(this, aValue, aRv);
     42  if (aRv.Failed()) {
     43    return this;
     44  }
     45  RefPtr atom = NS_AtomizeMainThread(aValue);
     46  MOZ_ASSERT(!mTransition->GetTypeList().Contains(atom));
     47  mTransition->GetTypeList().AppendElement(std::move(atom));
     48  return this;
     49 }
     50 void ViewTransitionTypeSet::Clear(ErrorResult& aRv) {
     51  SetlikeHelpers::Clear(this, aRv);
     52  if (aRv.Failed()) {
     53    return;
     54  }
     55  mTransition->GetTypeList().Clear();
     56 }
     57 bool ViewTransitionTypeSet::Delete(const nsAString& aValue, ErrorResult& aRv) {
     58  if (!SetlikeHelpers::Delete(this, aValue, aRv) || aRv.Failed()) {
     59    return false;
     60  }
     61  RefPtr atom = NS_AtomizeMainThread(aValue);
     62  MOZ_ASSERT(mTransition->GetTypeList().Contains(atom));
     63  mTransition->GetTypeList().RemoveElement(atom);
     64  return true;
     65 }
     66 
     67 JSObject* ViewTransitionTypeSet::WrapObject(JSContext* aCx,
     68                                            JS::Handle<JSObject*> aGivenProto) {
     69  return ViewTransitionTypeSet_Binding::Wrap(aCx, this, aGivenProto);
     70 }
     71 
     72 }  // namespace mozilla::dom