Backed out changeset 36e95068e103 (bug 1848160) for bc failures on browser_preference...
[gecko.git] / storage / mozStorageAsyncStatementJSHelper.h
blobee787fca0bb431abfcc63267e077c55e6fbd6b41
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/. */
7 #ifndef mozilla_storage_mozStorageAsyncStatementJSHelper_h_
8 #define mozilla_storage_mozStorageAsyncStatementJSHelper_h_
10 #include "nsIXPCScriptable.h"
12 namespace mozilla {
13 namespace storage {
15 class AsyncStatement;
16 class AsyncStatementParams;
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.
23 class AsyncStatementJSHelper : public nsIXPCScriptable {
24 public:
25 NS_DECL_ISUPPORTS
26 NS_DECL_NSIXPCSCRIPTABLE
28 private:
29 nsresult getParams(AsyncStatement*, JSContext*, JSObject*, JS::Value*);
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.
37 class AsyncStatementParamsHolder final : public nsISupports {
38 public:
39 NS_DECL_ISUPPORTS
41 explicit AsyncStatementParamsHolder(AsyncStatementParams* aParams)
42 : mParams(aParams) {}
44 AsyncStatementParams* Get() const {
45 MOZ_ASSERT(mParams);
46 return mParams;
49 private:
50 virtual ~AsyncStatementParamsHolder();
52 RefPtr<AsyncStatementParams> mParams;
55 } // namespace storage
56 } // namespace mozilla
58 #endif // mozilla_storage_mozStorageAsyncStatementJSHelper_h_