tor-browser

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

TestInterfaceMaplikeJSObject.cpp (3198B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      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 file,
      5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "mozilla/dom/TestInterfaceMaplikeJSObject.h"
      8 
      9 #include "mozilla/dom/BindingUtils.h"
     10 #include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
     11 #include "mozilla/dom/TestInterfaceMaplike.h"
     12 #include "nsPIDOMWindow.h"
     13 
     14 namespace mozilla::dom {
     15 
     16 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceMaplikeJSObject, mParent)
     17 
     18 NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceMaplikeJSObject)
     19 NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceMaplikeJSObject)
     20 
     21 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceMaplikeJSObject)
     22  NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
     23  NS_INTERFACE_MAP_ENTRY(nsISupports)
     24 NS_INTERFACE_MAP_END
     25 
     26 TestInterfaceMaplikeJSObject::TestInterfaceMaplikeJSObject(
     27    nsPIDOMWindowInner* aParent)
     28    : mParent(aParent) {}
     29 
     30 // static
     31 already_AddRefed<TestInterfaceMaplikeJSObject>
     32 TestInterfaceMaplikeJSObject::Constructor(const GlobalObject& aGlobal,
     33                                          ErrorResult& aRv) {
     34  nsCOMPtr<nsPIDOMWindowInner> window =
     35      do_QueryInterface(aGlobal.GetAsSupports());
     36  if (!window) {
     37    aRv.Throw(NS_ERROR_FAILURE);
     38    return nullptr;
     39  }
     40 
     41  RefPtr<TestInterfaceMaplikeJSObject> r =
     42      new TestInterfaceMaplikeJSObject(window);
     43  return r.forget();
     44 }
     45 
     46 JSObject* TestInterfaceMaplikeJSObject::WrapObject(
     47    JSContext* aCx, JS::Handle<JSObject*> aGivenProto) {
     48  return TestInterfaceMaplikeJSObject_Binding::Wrap(aCx, this, aGivenProto);
     49 }
     50 
     51 nsPIDOMWindowInner* TestInterfaceMaplikeJSObject::GetParentObject() const {
     52  return mParent;
     53 }
     54 
     55 void TestInterfaceMaplikeJSObject::SetInternal(JSContext* aCx,
     56                                               const nsAString& aKey,
     57                                               JS::Handle<JSObject*> aObject) {
     58  ErrorResult rv;
     59  TestInterfaceMaplikeJSObject_Binding::MaplikeHelpers::Set(this, aKey, aObject,
     60                                                            rv);
     61 }
     62 
     63 void TestInterfaceMaplikeJSObject::ClearInternal() {
     64  ErrorResult rv;
     65  TestInterfaceMaplikeJSObject_Binding::MaplikeHelpers::Clear(this, rv);
     66 }
     67 
     68 bool TestInterfaceMaplikeJSObject::DeleteInternal(const nsAString& aKey) {
     69  ErrorResult rv;
     70  return TestInterfaceMaplikeJSObject_Binding::MaplikeHelpers::Delete(this,
     71                                                                      aKey, rv);
     72 }
     73 
     74 bool TestInterfaceMaplikeJSObject::HasInternal(const nsAString& aKey) {
     75  ErrorResult rv;
     76  return TestInterfaceMaplikeJSObject_Binding::MaplikeHelpers::Has(this, aKey,
     77                                                                   rv);
     78 }
     79 
     80 void TestInterfaceMaplikeJSObject::GetInternal(
     81    JSContext* aCx, const nsAString& aKey, JS::MutableHandle<JSObject*> aRetVal,
     82    ErrorResult& aRv) {
     83  TestInterfaceMaplikeJSObject_Binding::MaplikeHelpers::Get(this, aCx, aKey,
     84                                                            aRetVal, aRv);
     85 }
     86 }  // namespace mozilla::dom