Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: third_party/WebKit/Source/modules/media_controls/MediaControlsMediaEventListener.cpp

Issue 2782373002: Remove MediaControls methods needed for the Cast button (Closed)
Patch Set: Fixed more tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/media_controls/MediaControlsMediaEventListener.h" 5 #include "modules/media_controls/MediaControlsMediaEventListener.h"
6 6
7 #include "core/events/Event.h" 7 #include "core/events/Event.h"
8 #include "core/html/HTMLMediaElement.h" 8 #include "core/html/HTMLMediaElement.h"
9 #include "core/html/track/TextTrackList.h" 9 #include "core/html/track/TextTrackList.h"
10 #include "modules/media_controls/MediaControlsImpl.h" 10 #include "modules/media_controls/MediaControlsImpl.h"
11 #include "modules/remoteplayback/HTMLMediaElementRemotePlayback.h"
12 #include "modules/remoteplayback/RemotePlayback.h"
11 13
12 namespace blink { 14 namespace blink {
13 15
14 MediaControlsMediaEventListener::MediaControlsMediaEventListener( 16 MediaControlsMediaEventListener::MediaControlsMediaEventListener(
15 MediaControlsImpl* media_controls) 17 MediaControlsImpl* media_controls)
16 : EventListener(kCPPEventListenerType), media_controls_(media_controls) { 18 : EventListener(kCPPEventListenerType), media_controls_(media_controls) {
17 if (GetMediaElement().isConnected()) 19 if (GetMediaElement().isConnected())
18 Attach(); 20 Attach();
19 } 21 }
20 22
(...skipping 23 matching lines...) Expand all
44 TextTrackList* text_tracks = GetMediaElement().textTracks(); 46 TextTrackList* text_tracks = GetMediaElement().textTracks();
45 text_tracks->addEventListener(EventTypeNames::addtrack, this, false); 47 text_tracks->addEventListener(EventTypeNames::addtrack, this, false);
46 text_tracks->addEventListener(EventTypeNames::change, this, false); 48 text_tracks->addEventListener(EventTypeNames::change, this, false);
47 text_tracks->addEventListener(EventTypeNames::removetrack, this, false); 49 text_tracks->addEventListener(EventTypeNames::removetrack, this, false);
48 50
49 // Keypress events. 51 // Keypress events.
50 if (media_controls_->PanelElement()) { 52 if (media_controls_->PanelElement()) {
51 media_controls_->PanelElement()->addEventListener(EventTypeNames::keypress, 53 media_controls_->PanelElement()->addEventListener(EventTypeNames::keypress,
52 this, false); 54 this, false);
53 } 55 }
56
57 RemotePlayback* remote = GetRemotePlayback();
58 if (remote) {
59 remote->addEventListener(EventTypeNames::connect, this);
60 remote->addEventListener(EventTypeNames::connecting, this);
61 remote->addEventListener(EventTypeNames::disconnect, this);
62
63 if (remote_playback_availability_callback_id_ == -1) {
64 remote_playback_availability_callback_id_ =
65 remote->WatchAvailabilityInternal(
66 new RemotePlayback::AvailabilityCallback(
67 WTF::Bind(&MediaControlsMediaEventListener::
68 OnRemotePlaybackAvailabilityChanged,
69 WrapPersistent(this))));
70 }
71 }
54 } 72 }
55 73
56 void MediaControlsMediaEventListener::Detach() { 74 void MediaControlsMediaEventListener::Detach() {
57 DCHECK(!GetMediaElement().isConnected()); 75 DCHECK(!GetMediaElement().isConnected());
58 76
59 media_controls_->GetDocument().removeEventListener( 77 media_controls_->GetDocument().removeEventListener(
60 EventTypeNames::fullscreenchange, this, false); 78 EventTypeNames::fullscreenchange, this, false);
61 79
62 TextTrackList* text_tracks = GetMediaElement().textTracks(); 80 TextTrackList* text_tracks = GetMediaElement().textTracks();
63 text_tracks->removeEventListener(EventTypeNames::addtrack, this, false); 81 text_tracks->removeEventListener(EventTypeNames::addtrack, this, false);
64 text_tracks->removeEventListener(EventTypeNames::change, this, false); 82 text_tracks->removeEventListener(EventTypeNames::change, this, false);
65 text_tracks->removeEventListener(EventTypeNames::removetrack, this, false); 83 text_tracks->removeEventListener(EventTypeNames::removetrack, this, false);
66 84
67 if (media_controls_->PanelElement()) { 85 if (media_controls_->PanelElement()) {
68 media_controls_->PanelElement()->removeEventListener( 86 media_controls_->PanelElement()->removeEventListener(
69 EventTypeNames::keypress, this, false); 87 EventTypeNames::keypress, this, false);
70 } 88 }
89
90 RemotePlayback* remote = GetRemotePlayback();
91 if (remote) {
92 remote->removeEventListener(EventTypeNames::connect, this);
93 remote->removeEventListener(EventTypeNames::connecting, this);
94 remote->removeEventListener(EventTypeNames::disconnect, this);
95
96 DCHECK_NE(-1, remote_playback_availability_callback_id_);
97 remote->CancelWatchAvailabilityInternal(
98 remote_playback_availability_callback_id_);
99 remote_playback_availability_callback_id_ = -1;
100 }
71 } 101 }
72 102
73 bool MediaControlsMediaEventListener::operator==( 103 bool MediaControlsMediaEventListener::operator==(
74 const EventListener& other) const { 104 const EventListener& other) const {
75 return this == &other; 105 return this == &other;
76 } 106 }
77 107
78 HTMLMediaElement& MediaControlsMediaEventListener::GetMediaElement() { 108 HTMLMediaElement& MediaControlsMediaEventListener::GetMediaElement() {
79 return media_controls_->MediaElement(); 109 return media_controls_->MediaElement();
80 } 110 }
81 111
112 RemotePlayback* MediaControlsMediaEventListener::GetRemotePlayback() {
113 return HTMLMediaElementRemotePlayback::remote(GetMediaElement());
114 }
115
82 void MediaControlsMediaEventListener::handleEvent( 116 void MediaControlsMediaEventListener::handleEvent(
83 ExecutionContext* execution_context, 117 ExecutionContext* execution_context,
84 Event* event) { 118 Event* event) {
85 if (event->type() == EventTypeNames::volumechange) { 119 if (event->type() == EventTypeNames::volumechange) {
86 media_controls_->OnVolumeChange(); 120 media_controls_->OnVolumeChange();
87 return; 121 return;
88 } 122 }
89 if (event->type() == EventTypeNames::focusin) { 123 if (event->type() == EventTypeNames::focusin) {
90 media_controls_->OnFocusIn(); 124 media_controls_->OnFocusIn();
91 return; 125 return;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 return; 174 return;
141 } 175 }
142 176
143 // Keypress events. 177 // Keypress events.
144 if (event->type() == EventTypeNames::keypress) { 178 if (event->type() == EventTypeNames::keypress) {
145 if (event->currentTarget() == media_controls_->PanelElement()) 179 if (event->currentTarget() == media_controls_->PanelElement())
146 media_controls_->OnPanelKeypress(); 180 media_controls_->OnPanelKeypress();
147 return; 181 return;
148 } 182 }
149 183
184 // RemotePlayback state change events.
185 if (event->type() == EventTypeNames::connect ||
186 event->type() == EventTypeNames::connecting ||
187 event->type() == EventTypeNames::disconnect) {
188 media_controls_->RefreshCastButtonVisibility();
189 return;
190 }
191
150 NOTREACHED(); 192 NOTREACHED();
151 } 193 }
152 194
195 void MediaControlsMediaEventListener::OnRemotePlaybackAvailabilityChanged() {
196 media_controls_->RefreshCastButtonVisibility();
197 }
198
153 DEFINE_TRACE(MediaControlsMediaEventListener) { 199 DEFINE_TRACE(MediaControlsMediaEventListener) {
154 EventListener::Trace(visitor); 200 EventListener::Trace(visitor);
155 visitor->Trace(media_controls_); 201 visitor->Trace(media_controls_);
156 } 202 }
157 203
158 } // namespace blink 204 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698