diff -r 000000000000 -r 6474c204b198 dom/indexedDB/IDBWrapperCache.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/indexedDB/IDBWrapperCache.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=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_dom_indexeddb_idbwrappercache_h__ +#define mozilla_dom_indexeddb_idbwrappercache_h__ + +#include "mozilla/DOMEventTargetHelper.h" +#include "mozilla/dom/indexedDB/IndexedDatabase.h" + +BEGIN_INDEXEDDB_NAMESPACE + +class IDBWrapperCache : public DOMEventTargetHelper +{ +public: + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED( + IDBWrapperCache, + DOMEventTargetHelper) + + JSObject* GetScriptOwner() const + { + return mScriptOwner; + } + void SetScriptOwner(JSObject* aScriptOwner); + + JSObject* GetParentObject() + { + if (mScriptOwner) { + return mScriptOwner; + } + + // Do what nsEventTargetSH::PreCreate does. + nsCOMPtr parent; + DOMEventTargetHelper::GetParentObject(getter_AddRefs(parent)); + + return parent ? parent->GetGlobalJSObject() : nullptr; + } + +#ifdef DEBUG + void AssertIsRooted() const; +#else + inline void AssertIsRooted() const + { + } +#endif + +protected: + IDBWrapperCache(DOMEventTargetHelper* aOwner) + : DOMEventTargetHelper(aOwner), mScriptOwner(nullptr) + { } + IDBWrapperCache(nsPIDOMWindow* aOwner) + : DOMEventTargetHelper(aOwner), mScriptOwner(nullptr) + { } + + virtual ~IDBWrapperCache(); + +private: + JS::Heap mScriptOwner; +}; + +END_INDEXEDDB_NAMESPACE + +#endif // mozilla_dom_indexeddb_idbwrappercache_h__