diff options
Diffstat (limited to 'WebCore/dom/MessagePort.cpp')
-rw-r--r-- | WebCore/dom/MessagePort.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/WebCore/dom/MessagePort.cpp b/WebCore/dom/MessagePort.cpp index 1051920..1b7aea7 100644 --- a/WebCore/dom/MessagePort.cpp +++ b/WebCore/dom/MessagePort.cpp @@ -20,14 +20,13 @@ * 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. + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "config.h" #include "MessagePort.h" -#include "AtomicString.h" #include "DOMWindow.h" #include "Document.h" #include "EventException.h" @@ -35,6 +34,7 @@ #include "MessageEvent.h" #include "SecurityOrigin.h" #include "Timer.h" +#include <wtf/text/AtomicString.h> namespace WebCore { @@ -72,7 +72,7 @@ void MessagePort::postMessage(PassRefPtr<SerializedScriptValue> message, Excepti void MessagePort::postMessage(PassRefPtr<SerializedScriptValue> message, const MessagePortArray* ports, ExceptionCode& ec) { - if (!m_entangledChannel) + if (!isEntangled()) return; ASSERT(m_scriptExecutionContext); @@ -118,8 +118,8 @@ void MessagePort::messageAvailable() void MessagePort::start() { - // Do nothing if we've been cloned - if (!m_entangledChannel) + // Do nothing if we've been cloned or closed. + if (!isEntangled()) return; ASSERT(m_scriptExecutionContext); @@ -133,7 +133,7 @@ void MessagePort::start() void MessagePort::close() { m_closed = true; - if (!m_entangledChannel) + if (!isEntangled()) return; m_entangledChannel->close(); } @@ -152,8 +152,9 @@ void MessagePort::entangle(PassOwnPtr<MessagePortChannel> remote) void MessagePort::contextDestroyed() { ASSERT(m_scriptExecutionContext); - // Must close port before blowing away the cached context, to ensure that we get no more calls to messageAvailable(). - close(); + // Must be closed before blowing away the cached context, to ensure that we get no more calls to messageAvailable(). + // ScriptExecutionContext::closeMessagePorts() takes care of that. + ASSERT(m_closed); m_scriptExecutionContext = 0; } |