Bug 1503314 [wpt PR 13786] - Check slot re-assignment for getComputedStyle., a=testonly
[gecko.git] / storage / mozStorageAsyncStatementJSHelper.h
blob6d0657b323c82315df39ac1ca68e012e83f17a9d
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"
11 #include "nsIXPConnect.h"
13 namespace mozilla {
14 namespace storage {
16 class AsyncStatement;
17 class AsyncStatementParams;
19 /**
20 * A modified version of StatementJSHelper that only exposes the async-specific
21 * 'params' helper. We do not expose 'row' or 'step' as they do not apply to
22 * us.
24 class AsyncStatementJSHelper : public nsIXPCScriptable
26 public:
27 NS_DECL_ISUPPORTS
28 NS_DECL_NSIXPCSCRIPTABLE
30 private:
31 nsresult getParams(AsyncStatement *, JSContext *, JSObject *, JS::Value *);
34 /**
35 * Wrapper used to clean up the references JS helpers hold to the statement.
36 * For cycle-avoidance reasons they do not hold reference-counted references,
37 * so it is important we do this.
39 class AsyncStatementParamsHolder final : public nsISupports {
40 public:
41 NS_DECL_ISUPPORTS
43 explicit AsyncStatementParamsHolder(AsyncStatementParams* aParams)
44 : mParams(aParams)
48 AsyncStatementParams* Get() const {
49 MOZ_ASSERT(mParams);
50 return mParams;
53 private:
54 virtual ~AsyncStatementParamsHolder();
56 RefPtr<AsyncStatementParams> mParams;
59 } // namespace storage
60 } // namespace mozilla
62 #endif // mozilla_storage_mozStorageAsyncStatementJSHelper_h_