Bug 1328964 - part 2b - WorkletThread - second part r?baku
Initial version r=smaug.
Rebased to c616a6fd5e4b by Jan-Ivar Bruaroey <jib@mozilla.com> r=karlt.
Rebased from c616a6fd5e4b by Karl Tomlinson <karlt+@karlt.net>.
MozReview-Commit-ID: HumXGy2mmH6
--- a/dom/worklet/Worklet.cpp
+++ b/dom/worklet/Worklet.cpp
@@ -389,19 +389,16 @@ ExecutionRunnable::RunOnWorkletThread()
JS::Rooted<JSObject*> globalObj(cx, globalScope->GetGlobalJSObject());
NS_ConvertUTF16toUTF8 url(mHandler->URL());
JS::CompileOptions compileOptions(cx);
compileOptions.setIntroductionType("Worklet");
compileOptions.setFileAndLine(url.get(), 0);
compileOptions.setIsRunOnce(true);
-
- // We only need the setNoScriptRval bit when compiling off-thread here,
- // since otherwise nsJSUtils::EvaluateString will set it up for us.
compileOptions.setNoScriptRval(true);
JSAutoCompartment comp(cx, globalObj);
JS::Rooted<JS::Value> unused(cx);
if (!JS::Evaluate(cx, compileOptions, mBuffer, &unused)) {
ErrorResult error;
error.MightThrowJSException();
--- a/dom/worklet/WorkletPrincipal.cpp
+++ b/dom/worklet/WorkletPrincipal.cpp
@@ -9,17 +9,18 @@
#include "mozilla/Assertions.h"
namespace mozilla {
namespace dom {
namespace WorkletPrincipal {
struct WorkletPrincipal final : public JSPrincipals
{
- bool write(JSContext* aCx, JSStructuredCloneWriter* aWriter) override {
+ bool write(JSContext* aCx, JSStructuredCloneWriter* aWriter) override
+ {
MOZ_CRASH("WorkletPrincipal::write not implemented");
return false;
}
};
JSPrincipals*
GetWorkletPrincipal()
{
--- a/dom/worklet/WorkletThread.cpp
+++ b/dom/worklet/WorkletThread.cpp
@@ -202,27 +202,29 @@ public:
return NS_OK;
}
void
DispatchToMicroTask(already_AddRefed<MicroTaskRunnable> aRunnable) override
{
RefPtr<MicroTaskRunnable> runnable(aRunnable);
+#ifdef DEBUG
MOZ_ASSERT(!NS_IsMainThread());
MOZ_ASSERT(runnable);
WorkletThread* workletThread = WorkletThread::Get();
MOZ_ASSERT(workletThread);
JSContext* cx = workletThread->GetJSContext();
MOZ_ASSERT(cx);
JS::Rooted<JSObject*> global(cx, JS::CurrentGlobalOrNull(cx));
MOZ_ASSERT(global);
+#endif
GetMicroTaskQueue().push(runnable.forget());
}
private:
RefPtr<WorkletThread> mWorkletThread;
};