| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2  * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 
| 3  * Copyright (C) 2012 Google Inc. All Rights Reserved. | 3  * Copyright (C) 2012 Google Inc. All Rights Reserved. | 
| 4  * | 4  * | 
| 5  * Redistribution and use in source and binary forms, with or without | 5  * Redistribution and use in source and binary forms, with or without | 
| 6  * modification, are permitted provided that the following conditions | 6  * modification, are permitted provided that the following conditions | 
| 7  * are met: | 7  * are met: | 
| 8  * 1. Redistributions of source code must retain the above copyright | 8  * 1. Redistributions of source code must retain the above copyright | 
| 9  *    notice, this list of conditions and the following disclaimer. | 9  *    notice, this list of conditions and the following disclaimer. | 
| 10  * 2. Redistributions in binary form must reproduce the above copyright | 10  * 2. Redistributions in binary form must reproduce the above copyright | 
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 130 { | 130 { | 
| 131     ASSERT(port); | 131     ASSERT(port); | 
| 132     ASSERT((isDocument() && isMainThread()) | 132     ASSERT((isDocument() && isMainThread()) | 
| 133         || (isWorkerGlobalScope() && toWorkerGlobalScope(this)->thread()->isCurr
     entThread())); | 133         || (isWorkerGlobalScope() && toWorkerGlobalScope(this)->thread()->isCurr
     entThread())); | 
| 134 | 134 | 
| 135     m_messagePorts.remove(port); | 135     m_messagePorts.remove(port); | 
| 136 } | 136 } | 
| 137 | 137 | 
| 138 bool ExecutionContext::hasPendingActivity() | 138 bool ExecutionContext::hasPendingActivity() | 
| 139 { | 139 { | 
| 140     if (lifecycleNotifier()->hasPendingActivity()) | 140     if (lifecycleNotifier().hasPendingActivity()) | 
| 141         return true; | 141         return true; | 
| 142 | 142 | 
| 143     HashSet<MessagePort*>::const_iterator messagePortsEnd = m_messagePorts.end()
     ; | 143     HashSet<MessagePort*>::const_iterator messagePortsEnd = m_messagePorts.end()
     ; | 
| 144     for (HashSet<MessagePort*>::const_iterator iter = m_messagePorts.begin(); it
     er != messagePortsEnd; ++iter) { | 144     for (HashSet<MessagePort*>::const_iterator iter = m_messagePorts.begin(); it
     er != messagePortsEnd; ++iter) { | 
| 145         if ((*iter)->hasPendingActivity()) | 145         if ((*iter)->hasPendingActivity()) | 
| 146             return true; | 146             return true; | 
| 147     } | 147     } | 
| 148 | 148 | 
| 149     return false; | 149     return false; | 
| 150 } | 150 } | 
| 151 | 151 | 
| 152 void ExecutionContext::suspendActiveDOMObjects() | 152 void ExecutionContext::suspendActiveDOMObjects() | 
| 153 { | 153 { | 
| 154     lifecycleNotifier()->notifySuspendingActiveDOMObjects(); | 154     lifecycleNotifier().notifySuspendingActiveDOMObjects(); | 
| 155     m_activeDOMObjectsAreSuspended = true; | 155     m_activeDOMObjectsAreSuspended = true; | 
| 156 } | 156 } | 
| 157 | 157 | 
| 158 void ExecutionContext::resumeActiveDOMObjects() | 158 void ExecutionContext::resumeActiveDOMObjects() | 
| 159 { | 159 { | 
| 160     m_activeDOMObjectsAreSuspended = false; | 160     m_activeDOMObjectsAreSuspended = false; | 
| 161     lifecycleNotifier()->notifyResumingActiveDOMObjects(); | 161     lifecycleNotifier().notifyResumingActiveDOMObjects(); | 
| 162 } | 162 } | 
| 163 | 163 | 
| 164 void ExecutionContext::stopActiveDOMObjects() | 164 void ExecutionContext::stopActiveDOMObjects() | 
| 165 { | 165 { | 
| 166     m_activeDOMObjectsAreStopped = true; | 166     m_activeDOMObjectsAreStopped = true; | 
| 167     lifecycleNotifier()->notifyStoppingActiveDOMObjects(); | 167     lifecycleNotifier().notifyStoppingActiveDOMObjects(); | 
| 168     // Also close MessagePorts. If they were ActiveDOMObjects (they could be) th
     en they could be stopped instead. | 168     // Also close MessagePorts. If they were ActiveDOMObjects (they could be) th
     en they could be stopped instead. | 
| 169     closeMessagePorts(); | 169     closeMessagePorts(); | 
| 170 } | 170 } | 
| 171 | 171 | 
| 172 void ExecutionContext::suspendActiveDOMObjectIfNeeded(ActiveDOMObject* object) | 172 void ExecutionContext::suspendActiveDOMObjectIfNeeded(ActiveDOMObject* object) | 
| 173 { | 173 { | 
| 174     ASSERT(lifecycleNotifier()->contains(object)); | 174     ASSERT(lifecycleNotifier().contains(object)); | 
| 175     // Ensure all ActiveDOMObjects are suspended also newly created ones. | 175     // Ensure all ActiveDOMObjects are suspended also newly created ones. | 
| 176     if (m_activeDOMObjectsAreSuspended) | 176     if (m_activeDOMObjectsAreSuspended) | 
| 177         object->suspend(); | 177         object->suspend(); | 
| 178 } | 178 } | 
| 179 | 179 | 
| 180 void ExecutionContext::closeMessagePorts() | 180 void ExecutionContext::closeMessagePorts() | 
| 181 { | 181 { | 
| 182     HashSet<MessagePort*>::iterator messagePortsEnd = m_messagePorts.end(); | 182     HashSet<MessagePort*>::iterator messagePortsEnd = m_messagePorts.end(); | 
| 183     for (HashSet<MessagePort*>::iterator iter = m_messagePorts.begin(); iter != 
     messagePortsEnd; ++iter) { | 183     for (HashSet<MessagePort*>::iterator iter = m_messagePorts.begin(); iter != 
     messagePortsEnd; ++iter) { | 
| 184         ASSERT((*iter)->executionContext() == this); | 184         ASSERT((*iter)->executionContext() == this); | 
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 373         return; | 373         return; | 
| 374     m_client->postTask(task); | 374     m_client->postTask(task); | 
| 375 } | 375 } | 
| 376 | 376 | 
| 377 PassOwnPtr<LifecycleNotifier<ExecutionContext> > ExecutionContext::createLifecyc
     leNotifier() | 377 PassOwnPtr<LifecycleNotifier<ExecutionContext> > ExecutionContext::createLifecyc
     leNotifier() | 
| 378 { | 378 { | 
| 379     RELEASE_ASSERT(m_client); | 379     RELEASE_ASSERT(m_client); | 
| 380     return m_client->createLifecycleNotifier(); | 380     return m_client->createLifecycleNotifier(); | 
| 381 } | 381 } | 
| 382 | 382 | 
| 383 ContextLifecycleNotifier* ExecutionContext::lifecycleNotifier() | 383 ContextLifecycleNotifier& ExecutionContext::lifecycleNotifier() | 
| 384 { | 384 { | 
| 385     return static_cast<ContextLifecycleNotifier*>(LifecycleContext<ExecutionCont
     ext>::lifecycleNotifier()); | 385     return static_cast<ContextLifecycleNotifier&>(LifecycleContext<ExecutionCont
     ext>::lifecycleNotifier()); | 
| 386 } | 386 } | 
| 387 | 387 | 
| 388 bool ExecutionContext::isIteratingOverObservers() const | 388 bool ExecutionContext::isIteratingOverObservers() const | 
| 389 { | 389 { | 
| 390     return m_lifecycleNotifier && m_lifecycleNotifier->isIteratingOverObservers(
     ); | 390     return m_lifecycleNotifier && m_lifecycleNotifier->isIteratingOverObservers(
     ); | 
| 391 } | 391 } | 
| 392 | 392 | 
| 393 void ExecutionContext::enforceSandboxFlags(SandboxFlags mask) | 393 void ExecutionContext::enforceSandboxFlags(SandboxFlags mask) | 
| 394 { | 394 { | 
| 395     m_sandboxFlags |= mask; | 395     m_sandboxFlags |= mask; | 
| 396 | 396 | 
| 397     RELEASE_ASSERT(m_client); | 397     RELEASE_ASSERT(m_client); | 
| 398     // The SandboxOrigin is stored redundantly in the security origin. | 398     // The SandboxOrigin is stored redundantly in the security origin. | 
| 399     if (isSandboxed(SandboxOrigin) && m_client->securityContext().securityOrigin
     () && !m_client->securityContext().securityOrigin()->isUnique()) { | 399     if (isSandboxed(SandboxOrigin) && m_client->securityContext().securityOrigin
     () && !m_client->securityContext().securityOrigin()->isUnique()) { | 
| 400         m_client->securityContext().setSecurityOrigin(SecurityOrigin::createUniq
     ue()); | 400         m_client->securityContext().setSecurityOrigin(SecurityOrigin::createUniq
     ue()); | 
| 401         m_client->didUpdateSecurityOrigin(); | 401         m_client->didUpdateSecurityOrigin(); | 
| 402     } | 402     } | 
| 403 } | 403 } | 
| 404 | 404 | 
| 405 } // namespace WebCore | 405 } // namespace WebCore | 
| OLD | NEW | 
|---|