| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 { | 68 { |
| 69 WTF_LOG(Media, "MediaSource::~MediaSource %p", this); | 69 WTF_LOG(Media, "MediaSource::~MediaSource %p", this); |
| 70 ASSERT(isClosed()); | 70 ASSERT(isClosed()); |
| 71 } | 71 } |
| 72 | 72 |
| 73 SourceBuffer* MediaSource::addSourceBuffer(const String& type, ExceptionState& e
xceptionState) | 73 SourceBuffer* MediaSource::addSourceBuffer(const String& type, ExceptionState& e
xceptionState) |
| 74 { | 74 { |
| 75 WTF_LOG(Media, "MediaSource::addSourceBuffer(%s) %p", type.ascii().data(), t
his); | 75 WTF_LOG(Media, "MediaSource::addSourceBuffer(%s) %p", type.ascii().data(), t
his); |
| 76 | 76 |
| 77 // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media
-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type | 77 // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media
-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type |
| 78 // 1. If type is null or an empty then throw an InvalidAccessError exception
and | 78 // 1. If type is an empty string then throw an InvalidAccessError exception |
| 79 // abort these steps. | 79 // and abort these steps. |
| 80 if (type.isNull() || type.isEmpty()) { | 80 if (type.isEmpty()) { |
| 81 exceptionState.throwDOMException(InvalidAccessError, "The type provided
is empty."); | 81 exceptionState.throwDOMException(InvalidAccessError, "The type provided
is empty."); |
| 82 return 0; | 82 return 0; |
| 83 } | 83 } |
| 84 | 84 |
| 85 // 2. If type contains a MIME type that is not supported ..., then throw a | 85 // 2. If type contains a MIME type that is not supported ..., then throw a |
| 86 // NotSupportedError exception and abort these steps. | 86 // NotSupportedError exception and abort these steps. |
| 87 if (!isTypeSupported(type)) { | 87 if (!isTypeSupported(type)) { |
| 88 exceptionState.throwDOMException(NotSupportedError, "The type provided (
'" + type + "') is unsupported."); | 88 exceptionState.throwDOMException(NotSupportedError, "The type provided (
'" + type + "') is unsupported."); |
| 89 return 0; | 89 return 0; |
| 90 } | 90 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 115 // 7. Return the new object to the caller. | 115 // 7. Return the new object to the caller. |
| 116 return buffer.get(); | 116 return buffer.get(); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void MediaSource::removeSourceBuffer(SourceBuffer* buffer, ExceptionState& excep
tionState) | 119 void MediaSource::removeSourceBuffer(SourceBuffer* buffer, ExceptionState& excep
tionState) |
| 120 { | 120 { |
| 121 WTF_LOG(Media, "MediaSource::removeSourceBuffer() %p", this); | 121 WTF_LOG(Media, "MediaSource::removeSourceBuffer() %p", this); |
| 122 RefPtr<SourceBuffer> protect(buffer); | 122 RefPtr<SourceBuffer> protect(buffer); |
| 123 | 123 |
| 124 // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media
-source.html#widl-MediaSource-removeSourceBuffer-void-SourceBuffer-sourceBuffer | 124 // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media
-source.html#widl-MediaSource-removeSourceBuffer-void-SourceBuffer-sourceBuffer |
| 125 // 1. If sourceBuffer is null then throw an InvalidAccessError exception and | |
| 126 // abort these steps. | |
| 127 if (!buffer) { | |
| 128 exceptionState.throwDOMException(InvalidAccessError, "The SourceBuffer p
rovided is invalid."); | |
| 129 return; | |
| 130 } | |
| 131 | 125 |
| 132 // 2. If sourceBuffer specifies an object that is not in sourceBuffers then | 126 // 1. If sourceBuffer specifies an object that is not in sourceBuffers then |
| 133 // throw a NotFoundError exception and abort these steps. | 127 // throw a NotFoundError exception and abort these steps. |
| 134 if (!m_sourceBuffers->length() || !m_sourceBuffers->contains(buffer)) { | 128 if (!m_sourceBuffers->length() || !m_sourceBuffers->contains(buffer)) { |
| 135 exceptionState.throwDOMException(NotFoundError, "The SourceBuffer provid
ed is not contained in this MediaSource."); | 129 exceptionState.throwDOMException(NotFoundError, "The SourceBuffer provid
ed is not contained in this MediaSource."); |
| 136 return; | 130 return; |
| 137 } | 131 } |
| 138 | 132 |
| 139 // 3. If the sourceBuffer.updating attribute equals true, then run the follo
wing steps: ... | 133 // 2. If the sourceBuffer.updating attribute equals true, then run the follo
wing steps: ... |
| 140 buffer->abortIfUpdating(); | 134 buffer->abortIfUpdating(); |
| 141 | 135 |
| 142 // Steps 4-9 are related to updating audioTracks, videoTracks, and textTrack
s which aren't implmented yet. | 136 // Steps 3-8 are related to updating audioTracks, videoTracks, and textTrack
s which aren't implmented yet. |
| 143 // FIXME(91649): support track selection | 137 // FIXME(91649): support track selection |
| 144 | 138 |
| 145 // 10. If sourceBuffer is in activeSourceBuffers, then remove sourceBuffer f
rom activeSourceBuffers ... | 139 // 9. If sourceBuffer is in activeSourceBuffers, then remove sourceBuffer fr
om activeSourceBuffers ... |
| 146 m_activeSourceBuffers->remove(buffer); | 140 m_activeSourceBuffers->remove(buffer); |
| 147 | 141 |
| 148 // 11. Remove sourceBuffer from sourceBuffers and fire a removesourcebuffer
event | 142 // 10. Remove sourceBuffer from sourceBuffers and fire a removesourcebuffer
event |
| 149 // on that object. | 143 // on that object. |
| 150 m_sourceBuffers->remove(buffer); | 144 m_sourceBuffers->remove(buffer); |
| 151 | 145 |
| 152 // 12. Destroy all resources for sourceBuffer. | 146 // 11. Destroy all resources for sourceBuffer. |
| 153 buffer->removedFromMediaSource(); | 147 buffer->removedFromMediaSource(); |
| 154 } | 148 } |
| 155 | 149 |
| 156 void MediaSource::onReadyStateChange(const AtomicString& oldState, const AtomicS
tring& newState) | 150 void MediaSource::onReadyStateChange(const AtomicString& oldState, const AtomicS
tring& newState) |
| 157 { | 151 { |
| 158 if (isOpen()) { | 152 if (isOpen()) { |
| 159 scheduleEvent(EventTypeNames::sourceopen); | 153 scheduleEvent(EventTypeNames::sourceopen); |
| 160 return; | 154 return; |
| 161 } | 155 } |
| 162 | 156 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 } | 221 } |
| 228 | 222 |
| 229 void MediaSource::trace(Visitor* visitor) | 223 void MediaSource::trace(Visitor* visitor) |
| 230 { | 224 { |
| 231 visitor->trace(m_sourceBuffers); | 225 visitor->trace(m_sourceBuffers); |
| 232 visitor->trace(m_activeSourceBuffers); | 226 visitor->trace(m_activeSourceBuffers); |
| 233 MediaSourceBase::trace(visitor); | 227 MediaSourceBase::trace(visitor); |
| 234 } | 228 } |
| 235 | 229 |
| 236 } // namespace WebCore | 230 } // namespace WebCore |
| OLD | NEW |