1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
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 #include "WorkletGlobalScope.h"
8 #include "mozilla/dom/WorkletGlobalScopeBinding.h"
9 #include "mozilla/dom/WorkletImpl.h"
10 #include "mozilla/dom/Console.h"
11 #include "nsJSUtils.h"
16 NS_IMPL_CYCLE_COLLECTION_CLASS(WorkletGlobalScope
)
18 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(WorkletGlobalScope
)
19 NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
20 NS_IMPL_CYCLE_COLLECTION_UNLINK(mConsole
)
21 tmp
->UnlinkObjectsInGlobal();
22 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
24 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(WorkletGlobalScope
)
25 NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mConsole
)
26 tmp
->TraverseObjectsInGlobal(cb
);
27 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
29 NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(WorkletGlobalScope
)
31 NS_IMPL_CYCLE_COLLECTING_ADDREF(WorkletGlobalScope
)
32 NS_IMPL_CYCLE_COLLECTING_RELEASE(WorkletGlobalScope
)
33 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(WorkletGlobalScope
)
34 NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
35 NS_INTERFACE_MAP_ENTRY(nsIGlobalObject
)
36 NS_INTERFACE_MAP_ENTRY(WorkletGlobalScope
)
39 WorkletGlobalScope::WorkletGlobalScope(const Maybe
<nsID
>& aAgentClusterId
,
40 bool aSharedMemoryAllowed
)
41 : mCreationTimeStamp(TimeStamp::Now()),
42 mAgentClusterId(aAgentClusterId
),
43 mSharedMemoryAllowed(aSharedMemoryAllowed
) {}
45 WorkletGlobalScope::~WorkletGlobalScope() = default;
47 JSObject
* WorkletGlobalScope::WrapObject(JSContext
* aCx
,
48 JS::Handle
<JSObject
*> aGivenProto
) {
49 MOZ_CRASH("We should never get here!");
53 already_AddRefed
<Console
> WorkletGlobalScope::GetConsole(JSContext
* aCx
,
57 const WorkletLoadInfo
& loadInfo
= Impl()->LoadInfo();
58 mConsole
= Console::CreateForWorklet(aCx
, this, loadInfo
.OuterWindowID(),
59 loadInfo
.InnerWindowID(), aRv
);
60 if (NS_WARN_IF(aRv
.Failed())) {
65 RefPtr
<Console
> console
= mConsole
;
66 return console
.forget();
69 void WorkletGlobalScope::Dump(const Optional
<nsAString
>& aString
) const {
70 WorkletThread::AssertIsOnWorkletThread();
72 if (!nsJSUtils::DumpEnabled()) {
76 if (!aString
.WasPassed()) {
80 NS_ConvertUTF16toUTF8
str(aString
.Value());
83 __android_log_print(ANDROID_LOG_INFO
, "Gecko", "%s", str
.get());
86 fputs(str
.get(), stdout
);
91 } // namespace mozilla