| Index: third_party/WebKit/Source/core/html/HTMLMediaElement.cpp | 
| diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp | 
| index a3ef751b91ac82f20e7da58e4994b27fe026dc21..9de678c44d666a17d05ab9cc33fe6bca4c32f222 100644 | 
| --- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp | 
| +++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp | 
| @@ -166,7 +166,7 @@ void removeElementFromDocumentMap(HTMLMediaElement* element, Document* document) | 
| { | 
| DocumentElementSetMap& map = documentToElementSetMap(); | 
| auto it = map.find(document); | 
| -    ASSERT(it != map.end()); | 
| +    DCHECK(it != map.end()); | 
| WeakMediaElementSet* set = it->value; | 
| set->remove(element); | 
| if (set->isEmpty()) | 
| @@ -211,7 +211,7 @@ const AtomicString& AudioKindToString(WebMediaPlayerClient::AudioTrackKind kind) | 
| return AudioTrack::commentaryKeyword(); | 
| } | 
|  | 
| -    ASSERT_NOT_REACHED(); | 
| +    NOTREACHED(); | 
| return emptyAtom; | 
| } | 
|  | 
| @@ -234,7 +234,7 @@ const AtomicString& VideoKindToString(WebMediaPlayerClient::VideoTrackKind kind) | 
| return VideoTrack::commentaryKeyword(); | 
| } | 
|  | 
| -    ASSERT_NOT_REACHED(); | 
| +    NOTREACHED(); | 
| return emptyAtom; | 
| } | 
|  | 
| @@ -277,7 +277,7 @@ String preloadTypeToString(WebMediaPlayer::Preload preloadType) | 
| return "auto"; | 
| } | 
|  | 
| -    ASSERT_NOT_REACHED(); | 
| +    NOTREACHED(); | 
| return String(); | 
| } | 
|  | 
| @@ -375,7 +375,7 @@ URLRegistry* HTMLMediaElement::s_mediaStreamRegistry = 0; | 
|  | 
| void HTMLMediaElement::setMediaStreamRegistry(URLRegistry* registry) | 
| { | 
| -    ASSERT(!s_mediaStreamRegistry); | 
| +    DCHECK(!s_mediaStreamRegistry); | 
| s_mediaStreamRegistry = registry; | 
| } | 
|  | 
| @@ -466,7 +466,7 @@ HTMLMediaElement::~HTMLMediaElement() | 
| // Since AudioNode::dispose() is guaranteed to be always called before | 
| // the AudioNode is destructed, m_audioSourceNode is explicitly cleared | 
| // even if the AudioNode and the HTMLMediaElement die together. | 
| -    ASSERT(!m_audioSourceNode); | 
| +    DCHECK(!m_audioSourceNode); | 
| } | 
|  | 
| void HTMLMediaElement::dispose() | 
| @@ -911,13 +911,13 @@ void HTMLMediaElement::selectMediaResource() | 
| DVLOG(MEDIA_LOG_LEVEL) << "selectMediaResource(" << (void*)this << "), using source element"; | 
| break; | 
| default: | 
| -        ASSERT_NOT_REACHED(); | 
| +        NOTREACHED(); | 
| } | 
| } | 
|  | 
| void HTMLMediaElement::loadSourceFromObject() | 
| { | 
| -    ASSERT(m_srcObject); | 
| +    DCHECK(m_srcObject); | 
| m_loadState = LoadingFromSrcObject; | 
|  | 
| // No type is available when the resource comes from the 'srcObject' | 
| @@ -968,11 +968,11 @@ void HTMLMediaElement::loadNextSourceChild() | 
|  | 
| void HTMLMediaElement::loadResource(const WebMediaPlayerSource& source, ContentType& contentType) | 
| { | 
| -    ASSERT(isMainThread()); | 
| +    DCHECK(isMainThread()); | 
| KURL url; | 
| if (source.isURL()) { | 
| url = source.getAsURL(); | 
| -        ASSERT(isSafeToLoadURL(url, Complain)); | 
| +        DCHECK(isSafeToLoadURL(url, Complain)); | 
| DVLOG(MEDIA_LOG_LEVEL) << "loadResource(" << (void*)this << ", " << urlForLoggingMedia(url) << ", " << contentType.raw() << ")"; | 
| } | 
|  | 
| @@ -1007,7 +1007,7 @@ void HTMLMediaElement::loadResource(const WebMediaPlayerSource& source, ContentT | 
| m_muted = true; | 
| updateVolume(); | 
|  | 
| -    ASSERT(!m_mediaSource); | 
| +    DCHECK(!m_mediaSource); | 
|  | 
| bool attemptLoad = true; | 
|  | 
| @@ -1032,7 +1032,7 @@ void HTMLMediaElement::loadResource(const WebMediaPlayerSource& source, ContentT | 
|  | 
| bool canLoadResource = source.isMediaStream() || canLoadURL(url, contentType); | 
| if (attemptLoad && canLoadResource) { | 
| -        ASSERT(!webMediaPlayer()); | 
| +        DCHECK(!webMediaPlayer()); | 
|  | 
| // Conditionally defer the load if effective preload is 'none'. | 
| // Skip this optional deferral for MediaStream sources or any blob URL, | 
| @@ -1057,7 +1057,7 @@ void HTMLMediaElement::loadResource(const WebMediaPlayerSource& source, ContentT | 
|  | 
| void HTMLMediaElement::startPlayerLoad() | 
| { | 
| -    ASSERT(!m_webMediaPlayer); | 
| +    DCHECK(!m_webMediaPlayer); | 
|  | 
| WebMediaPlayerSource source; | 
| if (m_srcObject) { | 
| @@ -1135,8 +1135,8 @@ bool HTMLMediaElement::loadIsDeferred() const | 
| void HTMLMediaElement::deferLoad() | 
| { | 
| // This implements the "optional" step 3 from the resource fetch algorithm. | 
| -    ASSERT(!m_deferredLoadTimer.isActive()); | 
| -    ASSERT(m_deferredLoadState == NotDeferred); | 
| +    DCHECK(!m_deferredLoadTimer.isActive()); | 
| +    DCHECK_EQ(m_deferredLoadState, NotDeferred); | 
| // 1. Set the networkState to NETWORK_IDLE. | 
| // 2. Queue a task to fire a simple event named suspend at the element. | 
| changeNetworkStateFromLoadingToIdle(); | 
| @@ -1156,7 +1156,7 @@ void HTMLMediaElement::cancelDeferredLoad() | 
|  | 
| void HTMLMediaElement::executeDeferredLoad() | 
| { | 
| -    ASSERT(m_deferredLoadState >= WaitingForTrigger); | 
| +    DCHECK_GE(m_deferredLoadState, WaitingForTrigger); | 
|  | 
| // resource fetch algorithm step 3 - continued from deferLoad(). | 
|  | 
| @@ -1182,7 +1182,7 @@ void HTMLMediaElement::startDeferredLoad() | 
| } | 
| if (m_deferredLoadState == ExecuteOnStopDelayingLoadEventTask) | 
| return; | 
| -    ASSERT(m_deferredLoadState == WaitingForStopDelayingLoadEventTask); | 
| +    DCHECK_EQ(m_deferredLoadState, WaitingForStopDelayingLoadEventTask); | 
| m_deferredLoadState = ExecuteOnStopDelayingLoadEventTask; | 
| } | 
|  | 
| @@ -1194,7 +1194,7 @@ void HTMLMediaElement::deferredLoadTimerFired(Timer<HTMLMediaElement>*) | 
| executeDeferredLoad(); | 
| return; | 
| } | 
| -    ASSERT(m_deferredLoadState == WaitingForStopDelayingLoadEventTask); | 
| +    DCHECK_EQ(m_deferredLoadState, WaitingForStopDelayingLoadEventTask); | 
| m_deferredLoadState = WaitingForTrigger; | 
| } | 
|  | 
| @@ -1247,7 +1247,7 @@ void HTMLMediaElement::textTrackModeChanged(TextTrack* track) | 
|  | 
| configureTextTrackDisplay(); | 
|  | 
| -    ASSERT(textTracks()->contains(track)); | 
| +    DCHECK(textTracks()->contains(track)); | 
| textTracks()->scheduleChangeEvent(); | 
| } | 
|  | 
| @@ -1361,7 +1361,7 @@ void HTMLMediaElement::noneSupported() | 
|  | 
| void HTMLMediaElement::mediaEngineError(MediaError* err) | 
| { | 
| -    ASSERT(m_readyState >= HAVE_METADATA); | 
| +    DCHECK_GE(m_readyState, HAVE_METADATA); | 
| DVLOG(MEDIA_LOG_LEVEL) << "mediaEngineError(" << (void*)this << ", " << static_cast<int>(err->code()) << ")"; | 
|  | 
| // 1 - The user agent should cancel the fetching process. | 
| @@ -2029,7 +2029,7 @@ ScriptPromise HTMLMediaElement::playForBindings(ScriptState* scriptState) | 
| message = "The element has no supported sources."; | 
| break; | 
| default: | 
| -            ASSERT_NOT_REACHED(); | 
| +            NOTREACHED(); | 
| } | 
| return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(code.get(), message)); | 
| } | 
| @@ -2156,14 +2156,14 @@ void HTMLMediaElement::pauseInternal() | 
|  | 
| void HTMLMediaElement::requestRemotePlayback() | 
| { | 
| -    ASSERT(m_remoteRoutesAvailable); | 
| +    DCHECK(m_remoteRoutesAvailable); | 
| webMediaPlayer()->requestRemotePlayback(); | 
| Platform::current()->recordAction(UserMetricsAction("Media_RequestRemotePlayback")); | 
| } | 
|  | 
| void HTMLMediaElement::requestRemotePlaybackControl() | 
| { | 
| -    ASSERT(m_remoteRoutesAvailable); | 
| +    DCHECK(m_remoteRoutesAvailable); | 
| webMediaPlayer()->requestRemotePlaybackControl(); | 
| Platform::current()->recordAction(UserMetricsAction("Media_RequestRemotePlayback_Control")); | 
| } | 
| @@ -2346,14 +2346,14 @@ void HTMLMediaElement::togglePlayState() | 
|  | 
| AudioTrackList& HTMLMediaElement::audioTracks() | 
| { | 
| -    ASSERT(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
| +    DCHECK(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
| return *m_audioTracks; | 
| } | 
|  | 
| void HTMLMediaElement::audioTrackChanged(WebMediaPlayer::TrackId trackId, bool enabled) | 
| { | 
| DVLOG(MEDIA_LOG_LEVEL) << "audioTrackChanged(" << (void*)this << ") trackId= " << trackId << " enabled=" << boolString(enabled); | 
| -    ASSERT(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
| +    DCHECK(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
|  | 
| audioTracks().scheduleChangeEvent(); | 
|  | 
| @@ -2402,14 +2402,14 @@ void HTMLMediaElement::removeAudioTrack(WebMediaPlayer::TrackId trackId) | 
|  | 
| VideoTrackList& HTMLMediaElement::videoTracks() | 
| { | 
| -    ASSERT(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
| +    DCHECK(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
| return *m_videoTracks; | 
| } | 
|  | 
| void HTMLMediaElement::selectedVideoTrackChanged(WebMediaPlayer::TrackId* selectedTrackId) | 
| { | 
| DVLOG(MEDIA_LOG_LEVEL) << "selectedVideoTrackChanged(" << (void*)this << ") selectedTrackId=" << (selectedTrackId ? String::format("%u", *selectedTrackId) : "none"); | 
| -    ASSERT(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
| +    DCHECK(RuntimeEnabledFeatures::audioVideoTracksEnabled()); | 
|  | 
| if (selectedTrackId) | 
| videoTracks().trackSelected(*selectedTrackId); | 
| @@ -2964,7 +2964,7 @@ void HTMLMediaElement::sizeChanged() | 
| { | 
| DVLOG(MEDIA_LOG_LEVEL) << "sizeChanged(" << (void*)this << ")"; | 
|  | 
| -    ASSERT(hasVideo()); // "resize" makes no sense absent video. | 
| +    DCHECK(hasVideo()); // "resize" makes no sense in absence of video. | 
| if (m_readyState > HAVE_NOTHING && isHTMLVideoElement()) | 
| scheduleEvent(EventTypeNames::resize); | 
|  | 
| @@ -3043,7 +3043,7 @@ bool HTMLMediaElement::endedPlayback(LoopCondition loopCondition) const | 
|  | 
| // or the current playback position is the earliest possible position and the direction | 
| // of playback is backwards | 
| -    ASSERT(getDirectionOfPlayback() == Backward); | 
| +    DCHECK_EQ(getDirectionOfPlayback(), Backward); | 
| return now <= 0; | 
| } | 
|  | 
| @@ -3181,7 +3181,7 @@ void HTMLMediaElement::stop() | 
|  | 
| // Ensure that hasPendingActivity() is not preventing garbage collection, since otherwise this | 
| // media element will simply leak. | 
| -    ASSERT(!hasPendingActivity()); | 
| +    DCHECK(!hasPendingActivity()); | 
| } | 
|  | 
| bool HTMLMediaElement::hasPendingActivity() const | 
| @@ -3281,19 +3281,19 @@ bool HTMLMediaElement::textTracksVisible() const | 
|  | 
| static void assertShadowRootChildren(ShadowRoot& shadowRoot) | 
| { | 
| -#if ENABLE(ASSERT) | 
| +#if DCHECK_IS_ON() | 
| // There can be up to two children, either or both of the text | 
| // track container and media controls. If both are present, the | 
| // text track container must be the first child. | 
| unsigned numberOfChildren = shadowRoot.countChildren(); | 
| -    ASSERT(numberOfChildren <= 2); | 
| +    DCHECK_LE(numberOfChildren, 2u); | 
| Node* firstChild = shadowRoot.firstChild(); | 
| Node* lastChild = shadowRoot.lastChild(); | 
| if (numberOfChildren == 1) { | 
| -        ASSERT(firstChild->isTextTrackContainer() || firstChild->isMediaControls()); | 
| +        DCHECK(firstChild->isTextTrackContainer() || firstChild->isMediaControls()); | 
| } else if (numberOfChildren == 2) { | 
| -        ASSERT(firstChild->isTextTrackContainer()); | 
| -        ASSERT(lastChild->isMediaControls()); | 
| +        DCHECK(firstChild->isTextTrackContainer()); | 
| +        DCHECK(lastChild->isMediaControls()); | 
| } | 
| #endif | 
| } | 
| @@ -3341,7 +3341,7 @@ void HTMLMediaElement::setTextTrackKindUserPreferenceForAllMediaElements(Documen | 
| auto it = documentToElementSetMap().find(document); | 
| if (it == documentToElementSetMap().end()) | 
| return; | 
| -    ASSERT(it->value); | 
| +    DCHECK(it->value); | 
| WeakMediaElementSet& elements = *it->value; | 
| for (const auto& element : elements) | 
| element->automaticTrackSelectionForUpdatedUserPreference(); | 
| @@ -3476,7 +3476,7 @@ CueTimeline& HTMLMediaElement::cueTimeline() | 
|  | 
| void HTMLMediaElement::configureTextTrackDisplay() | 
| { | 
| -    ASSERT(m_textTracks); | 
| +    DCHECK(m_textTracks); | 
| DVLOG(MEDIA_LOG_LEVEL) << "configureTextTrackDisplay(" << (void*)this << ")"; | 
|  | 
| if (m_processingPreferenceChange) | 
| @@ -3530,7 +3530,7 @@ void HTMLMediaElement::resetMediaPlayerAndMediaSource() | 
|  | 
| void HTMLMediaElement::setAudioSourceNode(AudioSourceProviderClient* sourceNode) | 
| { | 
| -    ASSERT(isMainThread()); | 
| +    DCHECK(isMainThread()); | 
| m_audioSourceNode = sourceNode; | 
|  | 
| AudioSourceProviderClientLockScope scope(*this); | 
| @@ -3742,7 +3742,7 @@ void HTMLMediaElement::rejectPlayPromises() | 
| // TODO(mlamouri): the message is generated based on the code because | 
| // arguments can't be passed to a cancellable task. In order to save space | 
| // used by the object, the string isn't saved. | 
| -    ASSERT(m_playPromiseErrorCode == AbortError || m_playPromiseErrorCode == NotSupportedError); | 
| +    DCHECK(m_playPromiseErrorCode == AbortError || m_playPromiseErrorCode == NotSupportedError); | 
| if (m_playPromiseErrorCode == AbortError) | 
| rejectPlayPromises(AbortError, "The play() request was interrupted by a call to pause()."); | 
| else | 
| @@ -3751,7 +3751,7 @@ void HTMLMediaElement::rejectPlayPromises() | 
|  | 
| void HTMLMediaElement::rejectPlayPromises(ExceptionCode code, const String& message) | 
| { | 
| -    ASSERT(code == AbortError || code == NotSupportedError); | 
| +    DCHECK(code == AbortError || code == NotSupportedError); | 
|  | 
| for (auto& resolver: m_playResolvers) | 
| resolver->reject(DOMException::create(code, message)); | 
| @@ -3794,7 +3794,7 @@ void HTMLMediaElement::AudioSourceProviderImpl::setClient(AudioSourceProviderCli | 
|  | 
| void HTMLMediaElement::AudioSourceProviderImpl::provideInput(AudioBus* bus, size_t framesToProcess) | 
| { | 
| -    ASSERT(bus); | 
| +    DCHECK(bus); | 
|  | 
| MutexTryLocker tryLocker(provideInputLock); | 
| if (!tryLocker.locked() || !m_webAudioSourceProvider || !m_client.get()) { | 
|  |