Changeset 98770 in webkit
- Timestamp:
- Oct 28, 2011, 3:21:49 PM (15 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
dom/ScriptExecutionContext.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r98769 r98770 1 2011-10-28 Adam Barth <abarth@webkit.org> 2 3 Rubber-stamped by Eric Seidel. 4 5 Fix namespace indent in ScriptExecutionContext.h. 6 7 * dom/ScriptExecutionContext.h: 8 (WebCore::ScriptExecutionContext::isDocument): 9 (WebCore::ScriptExecutionContext::isWorkerContext): 10 (WebCore::ScriptExecutionContext::setHasOpenDatabases): 11 (WebCore::ScriptExecutionContext::hasOpenDatabases): 12 (WebCore::ScriptExecutionContext::url): 13 (WebCore::ScriptExecutionContext::completeURL): 14 (WebCore::ScriptExecutionContext::securityOrigin): 15 (WebCore::ScriptExecutionContext::contentSecurityPolicy): 16 (WebCore::ScriptExecutionContext::activeDOMObjects): 17 (WebCore::ScriptExecutionContext::suspendScriptedAnimationControllerCallbacks): 18 (WebCore::ScriptExecutionContext::resumeScriptedAnimationControllerCallbacks): 19 (WebCore::ScriptExecutionContext::messagePorts): 20 (WebCore::ScriptExecutionContext::domUrls): 21 (WebCore::ScriptExecutionContext::ref): 22 (WebCore::ScriptExecutionContext::deref): 23 (WebCore::ScriptExecutionContext::Task::Task): 24 (WebCore::ScriptExecutionContext::Task::isCleanupTask): 25 1 26 2011-10-28 John Sullivan <sullivan@apple.com> 2 27 -
trunk/Source/WebCore/dom/ScriptExecutionContext.h
r98656 r98770 48 48 namespace WebCore { 49 49 50 class Blob;51 class ContentSecurityPolicy;52 class DOMTimer;53 class DOMURL;54 class EventListener;55 class EventQueue;56 class EventTarget;57 class MessagePort;58 class ScriptCallStack;59 class SecurityOrigin;50 class Blob; 51 class ContentSecurityPolicy; 52 class DOMTimer; 53 class DOMURL; 54 class EventListener; 55 class EventQueue; 56 class EventTarget; 57 class MessagePort; 58 class ScriptCallStack; 59 class SecurityOrigin; 60 60 61 61 #if ENABLE(SQL_DATABASE) 62 class Database;63 class DatabaseTaskSynchronizer;64 class DatabaseThread;62 class Database; 63 class DatabaseTaskSynchronizer; 64 class DatabaseThread; 65 65 #endif 66 66 67 67 #if ENABLE(BLOB) || ENABLE(FILE_SYSTEM) 68 class FileThread;68 class FileThread; 69 69 #endif 70 70 71 71 #if ENABLE(MEDIA_STREAM) 72 class MediaStream; 73 #endif 74 75 class ScriptExecutionContext { 72 class MediaStream; 73 #endif 74 75 class ScriptExecutionContext { 76 public: 77 ScriptExecutionContext(); 78 virtual ~ScriptExecutionContext(); 79 80 virtual bool isDocument() const { return false; } 81 virtual bool isWorkerContext() const { return false; } 82 83 #if ENABLE(SQL_DATABASE) 84 virtual bool allowDatabaseAccess() const = 0; 85 virtual void databaseExceededQuota(const String& name) = 0; 86 DatabaseThread* databaseThread(); 87 void setHasOpenDatabases() { m_hasOpenDatabases = true; } 88 bool hasOpenDatabases() const { return m_hasOpenDatabases; } 89 // When the database cleanup is done, cleanupSync will be signalled. 90 void stopDatabases(DatabaseTaskSynchronizer*); 91 #endif 92 virtual bool isContextThread() const = 0; 93 virtual bool isJSExecutionForbidden() const = 0; 94 95 const KURL& url() const { return virtualURL(); } 96 KURL completeURL(const String& url) const { return virtualCompleteURL(url); } 97 98 virtual String userAgent(const KURL&) const = 0; 99 100 virtual void disableEval() = 0; 101 102 SecurityOrigin* securityOrigin() const { return m_securityOrigin.get(); } 103 ContentSecurityPolicy* contentSecurityPolicy() { return m_contentSecurityPolicy.get(); } 104 105 bool sanitizeScriptError(String& errorMessage, int& lineNumber, String& sourceURL); 106 void reportException(const String& errorMessage, int lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack>); 107 virtual void addMessage(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack>) = 0; 108 109 // Active objects are not garbage collected even if inaccessible, e.g. because their activity may result in callbacks being invoked. 110 bool canSuspendActiveDOMObjects(); 111 // Active objects can be asked to suspend even if canSuspendActiveDOMObjects() returns 'false' - 112 // step-by-step JS debugging is one example. 113 virtual void suspendActiveDOMObjects(ActiveDOMObject::ReasonForSuspension); 114 virtual void resumeActiveDOMObjects(); 115 virtual void stopActiveDOMObjects(); 116 117 void createdActiveDOMObject(ActiveDOMObject*, void* upcastPointer); 118 void destroyedActiveDOMObject(ActiveDOMObject*); 119 typedef const HashMap<ActiveDOMObject*, void*> ActiveDOMObjectsMap; 120 ActiveDOMObjectsMap& activeDOMObjects() const { return m_activeDOMObjects; } 121 122 virtual void suspendScriptedAnimationControllerCallbacks() { } 123 virtual void resumeScriptedAnimationControllerCallbacks() { } 124 125 // MessagePort is conceptually a kind of ActiveDOMObject, but it needs to be tracked separately for message dispatch. 126 void processMessagePortMessagesSoon(); 127 void dispatchMessagePortEvents(); 128 void createdMessagePort(MessagePort*); 129 void destroyedMessagePort(MessagePort*); 130 const HashSet<MessagePort*>& messagePorts() const { return m_messagePorts; } 131 132 #if ENABLE(BLOB) 133 void createdDomUrl(DOMURL*); 134 void destroyedDomUrl(DOMURL*); 135 const HashSet<DOMURL*>& domUrls() const { return m_domUrls; } 136 #endif 137 void ref() { refScriptExecutionContext(); } 138 void deref() { derefScriptExecutionContext(); } 139 140 class Task { 141 WTF_MAKE_NONCOPYABLE(Task); 142 WTF_MAKE_FAST_ALLOCATED; 76 143 public: 77 ScriptExecutionContext(); 78 virtual ~ScriptExecutionContext(); 79 80 virtual bool isDocument() const { return false; } 81 virtual bool isWorkerContext() const { return false; } 82 83 #if ENABLE(SQL_DATABASE) 84 virtual bool allowDatabaseAccess() const = 0; 85 virtual void databaseExceededQuota(const String& name) = 0; 86 DatabaseThread* databaseThread(); 87 void setHasOpenDatabases() { m_hasOpenDatabases = true; } 88 bool hasOpenDatabases() const { return m_hasOpenDatabases; } 89 // When the database cleanup is done, cleanupSync will be signalled. 90 void stopDatabases(DatabaseTaskSynchronizer*); 91 #endif 92 virtual bool isContextThread() const = 0; 93 virtual bool isJSExecutionForbidden() const = 0; 94 95 const KURL& url() const { return virtualURL(); } 96 KURL completeURL(const String& url) const { return virtualCompleteURL(url); } 97 98 virtual String userAgent(const KURL&) const = 0; 99 100 virtual void disableEval() = 0; 101 102 SecurityOrigin* securityOrigin() const { return m_securityOrigin.get(); } 103 ContentSecurityPolicy* contentSecurityPolicy() { return m_contentSecurityPolicy.get(); } 104 105 bool sanitizeScriptError(String& errorMessage, int& lineNumber, String& sourceURL); 106 void reportException(const String& errorMessage, int lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack>); 107 virtual void addMessage(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack>) = 0; 108 109 // Active objects are not garbage collected even if inaccessible, e.g. because their activity may result in callbacks being invoked. 110 bool canSuspendActiveDOMObjects(); 111 // Active objects can be asked to suspend even if canSuspendActiveDOMObjects() returns 'false' - 112 // step-by-step JS debugging is one example. 113 virtual void suspendActiveDOMObjects(ActiveDOMObject::ReasonForSuspension); 114 virtual void resumeActiveDOMObjects(); 115 virtual void stopActiveDOMObjects(); 116 117 void createdActiveDOMObject(ActiveDOMObject*, void* upcastPointer); 118 void destroyedActiveDOMObject(ActiveDOMObject*); 119 typedef const HashMap<ActiveDOMObject*, void*> ActiveDOMObjectsMap; 120 ActiveDOMObjectsMap& activeDOMObjects() const { return m_activeDOMObjects; } 121 122 virtual void suspendScriptedAnimationControllerCallbacks() { } 123 virtual void resumeScriptedAnimationControllerCallbacks() { } 124 125 // MessagePort is conceptually a kind of ActiveDOMObject, but it needs to be tracked separately for message dispatch. 126 void processMessagePortMessagesSoon(); 127 void dispatchMessagePortEvents(); 128 void createdMessagePort(MessagePort*); 129 void destroyedMessagePort(MessagePort*); 130 const HashSet<MessagePort*>& messagePorts() const { return m_messagePorts; } 131 132 #if ENABLE(BLOB) 133 void createdDomUrl(DOMURL*); 134 void destroyedDomUrl(DOMURL*); 135 const HashSet<DOMURL*>& domUrls() const { return m_domUrls; } 136 #endif 137 void ref() { refScriptExecutionContext(); } 138 void deref() { derefScriptExecutionContext(); } 139 140 class Task { 141 WTF_MAKE_NONCOPYABLE(Task); WTF_MAKE_FAST_ALLOCATED; 142 public: 143 Task() { } 144 virtual ~Task(); 145 virtual void performTask(ScriptExecutionContext*) = 0; 146 // Certain tasks get marked specially so that they aren't discarded, and are executed, when the context is shutting down its message queue. 147 virtual bool isCleanupTask() const { return false; } 148 }; 149 150 virtual void postTask(PassOwnPtr<Task>) = 0; // Executes the task on context's thread asynchronously. 151 152 void addTimeout(int timeoutId, DOMTimer*); 153 void removeTimeout(int timeoutId); 154 DOMTimer* findTimeout(int timeoutId); 144 Task() { } 145 virtual ~Task(); 146 virtual void performTask(ScriptExecutionContext*) = 0; 147 // Certain tasks get marked specially so that they aren't discarded, and are executed, when the context is shutting down its message queue. 148 virtual bool isCleanupTask() const { return false; } 149 }; 150 151 virtual void postTask(PassOwnPtr<Task>) = 0; // Executes the task on context's thread asynchronously. 152 153 void addTimeout(int timeoutId, DOMTimer*); 154 void removeTimeout(int timeoutId); 155 DOMTimer* findTimeout(int timeoutId); 155 156 156 157 #if ENABLE(BLOB) 157 158 #if ENABLE(MEDIA_STREAM) 158 KURL createPublicBlobURL(MediaStream*);159 KURL createPublicBlobURL(MediaStream*); 159 160 #endif // ENABLE(MEDIA_STREAM) 160 KURL createPublicBlobURL(Blob*);161 void revokePublicBlobURL(const KURL&);161 KURL createPublicBlobURL(Blob*); 162 void revokePublicBlobURL(const KURL&); 162 163 #endif // ENABLE(BLOB) 163 164 164 165 #if USE(JSC) 165 JSC::JSGlobalData* globalData();166 JSC::JSGlobalData* globalData(); 166 167 #endif 167 168 168 169 #if ENABLE(BLOB) || ENABLE(FILE_SYSTEM) 169 FileThread* fileThread();170 void stopFileThread();171 #endif 172 173 // Interval is in seconds.174 void adjustMinimumTimerInterval(double oldMinimumTimerInterval);175 virtual double minimumTimerInterval() const;176 177 virtual EventQueue* eventQueue() const = 0;178 179 protected:180 // Explicitly override the security origin for this script context.181 // Note: It is dangerous to change the security origin of a script context182 // that already contains content.183 void setSecurityOrigin(PassRefPtr<SecurityOrigin>);184 185 void setContentSecurityPolicy(PassRefPtr<ContentSecurityPolicy>);186 187 private:188 virtual const KURL& virtualURL() const = 0;189 virtual KURL virtualCompleteURL(const String&) const = 0;190 191 virtual EventTarget* errorEventTarget() = 0;192 virtual void logExceptionToConsole(const String& errorMessage, int lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack>) = 0;193 bool dispatchErrorEvent(const String& errorMessage, int lineNumber, const String& sourceURL);194 195 void closeMessagePorts();196 197 RefPtr<SecurityOrigin> m_securityOrigin;198 RefPtr<ContentSecurityPolicy> m_contentSecurityPolicy;199 200 HashSet<MessagePort*> m_messagePorts;201 202 HashMap<ActiveDOMObject*, void*> m_activeDOMObjects;203 bool m_iteratingActiveDOMObjects;204 bool m_inDestructor;205 206 typedef HashMap<int, DOMTimer*> TimeoutMap;207 TimeoutMap m_timeouts;170 FileThread* fileThread(); 171 void stopFileThread(); 172 #endif 173 174 // Interval is in seconds. 175 void adjustMinimumTimerInterval(double oldMinimumTimerInterval); 176 virtual double minimumTimerInterval() const; 177 178 virtual EventQueue* eventQueue() const = 0; 179 180 protected: 181 // Explicitly override the security origin for this script context. 182 // Note: It is dangerous to change the security origin of a script context 183 // that already contains content. 184 void setSecurityOrigin(PassRefPtr<SecurityOrigin>); 185 186 void setContentSecurityPolicy(PassRefPtr<ContentSecurityPolicy>); 187 188 private: 189 virtual const KURL& virtualURL() const = 0; 190 virtual KURL virtualCompleteURL(const String&) const = 0; 191 192 virtual EventTarget* errorEventTarget() = 0; 193 virtual void logExceptionToConsole(const String& errorMessage, int lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack>) = 0; 194 bool dispatchErrorEvent(const String& errorMessage, int lineNumber, const String& sourceURL); 195 196 void closeMessagePorts(); 197 198 RefPtr<SecurityOrigin> m_securityOrigin; 199 RefPtr<ContentSecurityPolicy> m_contentSecurityPolicy; 200 201 HashSet<MessagePort*> m_messagePorts; 202 203 HashMap<ActiveDOMObject*, void*> m_activeDOMObjects; 204 bool m_iteratingActiveDOMObjects; 205 bool m_inDestructor; 206 207 typedef HashMap<int, DOMTimer*> TimeoutMap; 208 TimeoutMap m_timeouts; 208 209 209 210 #if ENABLE(BLOB) 210 HashSet<String> m_publicBlobURLs;211 HashSet<String> m_publicStreamURLs;212 HashSet<DOMURL*> m_domUrls;213 #endif 214 215 virtual void refScriptExecutionContext() = 0;216 virtual void derefScriptExecutionContext() = 0;217 218 bool m_inDispatchErrorEvent;219 class PendingException;220 OwnPtr<Vector<OwnPtr<PendingException> > > m_pendingExceptions;211 HashSet<String> m_publicBlobURLs; 212 HashSet<String> m_publicStreamURLs; 213 HashSet<DOMURL*> m_domUrls; 214 #endif 215 216 virtual void refScriptExecutionContext() = 0; 217 virtual void derefScriptExecutionContext() = 0; 218 219 bool m_inDispatchErrorEvent; 220 class PendingException; 221 OwnPtr<Vector<OwnPtr<PendingException> > > m_pendingExceptions; 221 222 222 223 #if ENABLE(SQL_DATABASE) 223 RefPtr<DatabaseThread> m_databaseThread;224 bool m_hasOpenDatabases; // This never changes back to false, even after the database thread is closed.224 RefPtr<DatabaseThread> m_databaseThread; 225 bool m_hasOpenDatabases; // This never changes back to false, even after the database thread is closed. 225 226 #endif 226 227 227 228 #if ENABLE(BLOB) || ENABLE(FILE_SYSTEM) 228 RefPtr<FileThread> m_fileThread;229 #endif 230 };229 RefPtr<FileThread> m_fileThread; 230 #endif 231 }; 231 232 232 233 } // namespace WebCore 233 234 234 235 235 #endif // ScriptExecutionContext_h
Note:
See TracChangeset
for help on using the changeset viewer.