Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: third_party/WebKit/Source/bindings/core/v8/WorkerScriptController.h

Issue 1535943005: Initial implementation of bindings and basic classes for worklets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove AbstractGlobalScope. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/bindings/core/v8/WorkerScriptController.h
diff --git a/third_party/WebKit/Source/bindings/core/v8/WorkerScriptController.h b/third_party/WebKit/Source/bindings/core/v8/WorkerScriptController.h
index 8213766fb9fa0e007989d39bd31dfdccdc60292d..4df0df406db86a6f7ef457ebdfca74dab06319d6 100644
--- a/third_party/WebKit/Source/bindings/core/v8/WorkerScriptController.h
+++ b/third_party/WebKit/Source/bindings/core/v8/WorkerScriptController.h
@@ -1,126 +1,41 @@
-/*
- * Copyright (C) 2009, 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
#ifndef WorkerScriptController_h
#define WorkerScriptController_h
-#include "bindings/core/v8/RejectedPromises.h"
-#include "bindings/core/v8/ScriptValue.h"
-#include "bindings/core/v8/V8Binding.h"
-#include "bindings/core/v8/V8CacheOptions.h"
-#include "core/CoreExport.h"
-#include "wtf/Allocator.h"
-#include "wtf/OwnPtr.h"
-#include "wtf/ThreadingPrimitives.h"
-#include "wtf/text/TextPosition.h"
-#include <v8.h>
+#include "bindings/core/v8/GlobalScopeScriptController.h"
namespace blink {
-class CachedMetadataHandler;
class ErrorEvent;
-class ExceptionState;
-class ScriptSourceCode;
+class ScriptCallStack;
class WorkerGlobalScope;
-class CORE_EXPORT WorkerScriptController : public NoBaseWillBeGarbageCollectedFinalized<WorkerScriptController> {
+class CORE_EXPORT WorkerScriptController final : public GlobalScopeScriptController {
USING_FAST_MALLOC_WILL_BE_REMOVED(WorkerScriptController);
WTF_MAKE_NONCOPYABLE(WorkerScriptController);
public:
static PassOwnPtrWillBeRawPtr<WorkerScriptController> create(WorkerGlobalScope*, v8::Isolate*);
virtual ~WorkerScriptController();
- void dispose();
-
- bool isExecutionForbidden() const;
- bool isExecutionTerminating() const;
-
- // Returns true if the evaluation completed with no uncaught exception.
- bool evaluate(const ScriptSourceCode&, RefPtrWillBeRawPtr<ErrorEvent>* = nullptr, CachedMetadataHandler* = nullptr, V8CacheOptions = V8CacheOptionsDefault);
-
- // Prevents future JavaScript execution. See
- // willScheduleExecutionTermination, isExecutionForbidden.
- void forbidExecution();
-
- // Used by WorkerThread:
- bool initializeContextIfNeeded();
- // Async request to terminate future JavaScript execution on the
- // worker thread. JavaScript evaluation exits with a
- // non-continuable exception and WorkerScriptController calls
- // forbidExecution to prevent further JavaScript execution. Use
- // forbidExecution()/isExecutionForbidden() to guard against
- // reentry into JavaScript.
- void willScheduleExecutionTermination();
-
- // Used by WorkerGlobalScope:
- void rethrowExceptionFromImportedScript(PassRefPtrWillBeRawPtr<ErrorEvent>, ExceptionState&);
- void disableEval(const String&);
-
- // Used by Inspector agents:
- ScriptState* scriptState() { return m_scriptState.get(); }
-
- // Used by V8 bindings:
- v8::Local<v8::Context> context() { return m_scriptState ? m_scriptState->context() : v8::Local<v8::Context>(); }
-
- RejectedPromises* rejectedPromises() const { return m_rejectedPromises.get(); }
DECLARE_TRACE();
-
- bool isContextInitialized() const { return m_scriptState && !!m_scriptState->perContextData(); }
-
private:
WorkerScriptController(WorkerGlobalScope*, v8::Isolate*);
- class WorkerGlobalScopeExecutionState;
- v8::Isolate* isolate() const;
+ void didStopRunLoop() final;
+ v8::Isolate* isolate() const final;
+ bool isContextThread() const final;
- // Evaluate a script file in the current execution environment.
- ScriptValue evaluate(const String& script, const String& fileName, const TextPosition& scriptStartPosition, CachedMetadataHandler*, V8CacheOptions);
+ const WrapperTypeInfo* wrapperTypeInfoForGlobalScope() const final;
+ v8::Local<v8::Object> associateGlobalScopeWithWrapper(const WrapperTypeInfo*, v8::Local<v8::Object> wrapper) final;
+ v8::MaybeLocal<v8::Value> runCompiledScript(v8::Local<v8::Script>) final;
- RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope;
- RefPtr<ScriptState> m_scriptState;
- RefPtr<DOMWrapperWorld> m_world;
- String m_disableEvalPending;
- bool m_executionForbidden;
- bool m_executionScheduledToTerminate;
- mutable Mutex m_scheduledTerminationMutex;
-
- RefPtrWillBeMember<RejectedPromises> m_rejectedPromises;
+ bool shouldSanitizeScriptError(const String& sourceURL, AccessControlStatus) final;
+ void reportException(PassRefPtrWillBeRawPtr<ErrorEvent>, int scriptId, PassRefPtrWillBeRawPtr<ScriptCallStack>, AccessControlStatus) final;
- // |m_globalScopeExecutionState| refers to a stack object
- // that evaluate() allocates; evaluate() ensuring that the
- // pointer reference to it is removed upon returning. Hence
- // kept as a bare pointer here, and not a Persistent with
- // Oilpan enabled; stack scanning will visit the object and
- // trace its on-heap fields.
- GC_PLUGIN_IGNORE("394615")
- WorkerGlobalScopeExecutionState* m_globalScopeExecutionState;
+ RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope;
};
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698