Line data Source code
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 : #include "nsIXPConnect.h"
12 :
13 : class AsyncStatement;
14 :
15 : namespace mozilla {
16 : namespace storage {
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 1 : class AsyncStatementJSHelper : public nsIXPCScriptable
24 : {
25 : public:
26 : NS_DECL_ISUPPORTS
27 : NS_DECL_NSIXPCSCRIPTABLE
28 :
29 : private:
30 : nsresult getParams(AsyncStatement *, JSContext *, JSObject *, JS::Value *);
31 : };
32 :
33 : /**
34 : * Wrapper used to clean up the references JS helpers hold to the statement.
35 : * For cycle-avoidance reasons they do not hold reference-counted references,
36 : * so it is important we do this.
37 : */
38 : class AsyncStatementParamsHolder final : public nsIXPConnectJSObjectHolder
39 : {
40 : public:
41 : NS_DECL_ISUPPORTS
42 : NS_DECL_NSIXPCONNECTJSOBJECTHOLDER
43 :
44 : explicit AsyncStatementParamsHolder(nsIXPConnectJSObjectHolder* aHolder);
45 :
46 : private:
47 : virtual ~AsyncStatementParamsHolder();
48 : nsCOMPtr<nsIXPConnectJSObjectHolder> mHolder;
49 : };
50 :
51 : } // namespace storage
52 : } // namespace mozilla
53 :
54 : #endif // mozilla_storage_mozStorageAsyncStatementJSHelper_h_
|