1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef NullExecutionContext_h 6#define NullExecutionContext_h 7 8#include "core/dom/ExecutionContext.h" 9#include "core/dom/SecurityContext.h" 10#include "core/events/EventQueue.h" 11#include "platform/heap/Handle.h" 12#include "platform/weborigin/KURL.h" 13#include "wtf/RefCounted.h" 14 15namespace blink { 16 17class NullExecutionContext FINAL : public RefCountedWillBeGarbageCollectedFinalized<NullExecutionContext>, public SecurityContext, public ExecutionContext { 18 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(NullExecutionContext); 19public: 20 NullExecutionContext(); 21 22 virtual void disableEval(const String&) OVERRIDE { } 23 virtual String userAgent(const KURL&) const OVERRIDE { return String(); } 24 25 virtual void postTask(PassOwnPtr<ExecutionContextTask>) OVERRIDE; 26 27 virtual EventTarget* errorEventTarget() OVERRIDE { return 0; } 28 virtual EventQueue* eventQueue() const OVERRIDE { return m_queue.get(); } 29 30 virtual bool tasksNeedSuspension() OVERRIDE { return m_tasksNeedSuspension; } 31 void setTasksNeedSuspension(bool flag) { m_tasksNeedSuspension = flag; } 32 33 virtual void reportBlockedScriptExecutionToInspector(const String& directiveText) OVERRIDE { } 34 virtual void didUpdateSecurityOrigin() OVERRIDE { } 35 virtual SecurityContext& securityContext() OVERRIDE { return *this; } 36 37 double timerAlignmentInterval() const; 38 39 virtual void addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>) OVERRIDE { } 40 virtual void logExceptionToConsole(const String& errorMessage, int scriptId, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtrWillBeRawPtr<ScriptCallStack>) OVERRIDE { } 41 42 void trace(Visitor* visitor) 43 { 44 visitor->trace(m_queue); 45 ExecutionContext::trace(visitor); 46 } 47 48#if !ENABLE(OILPAN) 49 using RefCounted<NullExecutionContext>::ref; 50 using RefCounted<NullExecutionContext>::deref; 51 52 virtual void refExecutionContext() OVERRIDE { ref(); } 53 virtual void derefExecutionContext() OVERRIDE { deref(); } 54#endif 55 56protected: 57 virtual const KURL& virtualURL() const OVERRIDE { return m_dummyURL; } 58 virtual KURL virtualCompleteURL(const String&) const OVERRIDE { return m_dummyURL; } 59 60private: 61 bool m_tasksNeedSuspension; 62 OwnPtrWillBeMember<EventQueue> m_queue; 63 64 KURL m_dummyURL; 65}; 66 67} // namespace blink 68 69#endif // NullExecutionContext_h 70