mozStorageAsyncStatementJSHelper.h (1629B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ : 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 #ifndef mozilla_storage_mozStorageAsyncStatementJSHelper_h_ 8 #define mozilla_storage_mozStorageAsyncStatementJSHelper_h_ 9 10 #include "nsIXPCScriptable.h" 11 12 namespace mozilla { 13 namespace storage { 14 15 class AsyncStatement; 16 class AsyncStatementParams; 17 18 /** 19 * A modified version of StatementJSHelper that only exposes the async-specific 20 * 'params' helper. We do not expose 'row' or 'step' as they do not apply to 21 * us. 22 */ 23 class AsyncStatementJSHelper : public nsIXPCScriptable { 24 public: 25 NS_DECL_ISUPPORTS 26 NS_DECL_NSIXPCSCRIPTABLE 27 28 private: 29 nsresult getParams(AsyncStatement*, JSContext*, JSObject*, JS::Value*); 30 }; 31 32 /** 33 * Wrapper used to clean up the references JS helpers hold to the statement. 34 * For cycle-avoidance reasons they do not hold reference-counted references, 35 * so it is important we do this. 36 */ 37 class AsyncStatementParamsHolder final : public nsISupports { 38 public: 39 NS_DECL_ISUPPORTS 40 41 explicit AsyncStatementParamsHolder(AsyncStatementParams* aParams) 42 : mParams(aParams) {} 43 44 AsyncStatementParams* Get() const { 45 MOZ_ASSERT(mParams); 46 return mParams; 47 } 48 49 private: 50 virtual ~AsyncStatementParamsHolder(); 51 52 RefPtr<AsyncStatementParams> mParams; 53 }; 54 55 } // namespace storage 56 } // namespace mozilla 57 58 #endif // mozilla_storage_mozStorageAsyncStatementJSHelper_h_