Commit 06aeacf3 authored by philipj@opera.com's avatar philipj@opera.com

Merge/rename two MediaControlElements into their parent classes

MediaControlPanelMuteButtonElement/MediaControlPanelVolumeSliderElement
were the only classes that inherited
MediaControlMuteButtonElement/MediaControlVolumeSliderElement.

Remove the m_panelMuteButton->show() in MediaControls::reset(), because
there is nothing that ever hides the button in the first place.

BUG=341813

Review URL: https://codereview.chromium.org/185363011

git-svn-id: svn://svn.chromium.org/blink/trunk@168572 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 98471db9
...@@ -126,79 +126,4 @@ void MediaControlTimeDisplayElement::setCurrentValue(double time) ...@@ -126,79 +126,4 @@ void MediaControlTimeDisplayElement::setCurrentValue(double time)
m_currentValue = time; m_currentValue = time;
} }
// ----------------------------
MediaControlMuteButtonElement::MediaControlMuteButtonElement(Document& document, MediaControlElementType displayType)
: MediaControlInputElement(document, displayType)
{
}
void MediaControlMuteButtonElement::defaultEventHandler(Event* event)
{
if (event->type() == EventTypeNames::click) {
mediaController()->setMuted(!mediaController()->muted());
event->setDefaultHandled();
}
HTMLInputElement::defaultEventHandler(event);
}
void MediaControlMuteButtonElement::changedMute()
{
updateDisplayType();
}
void MediaControlMuteButtonElement::updateDisplayType()
{
setDisplayType(mediaController()->muted() ? MediaUnMuteButton : MediaMuteButton);
}
// ----------------------------
MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(Document& document)
: MediaControlInputElement(document, MediaVolumeSlider)
{
}
void MediaControlVolumeSliderElement::defaultEventHandler(Event* event)
{
// Left button is 0. Rejects mouse events not from left button.
if (event->isMouseEvent() && toMouseEvent(event)->button())
return;
if (!inDocument() || !document().isActive())
return;
MediaControlInputElement::defaultEventHandler(event);
if (event->type() == EventTypeNames::mouseover || event->type() == EventTypeNames::mouseout || event->type() == EventTypeNames::mousemove)
return;
double volume = value().toDouble();
mediaController()->setVolume(volume, ASSERT_NO_EXCEPTION);
mediaController()->setMuted(false);
}
bool MediaControlVolumeSliderElement::willRespondToMouseMoveEvents()
{
if (!inDocument() || !document().isActive())
return false;
return MediaControlInputElement::willRespondToMouseMoveEvents();
}
bool MediaControlVolumeSliderElement::willRespondToMouseClickEvents()
{
if (!inDocument() || !document().isActive())
return false;
return MediaControlInputElement::willRespondToMouseClickEvents();
}
void MediaControlVolumeSliderElement::setVolume(double volume)
{
if (value().toDouble() != volume)
setValue(String::number(volume));
}
} // namespace WebCore } // namespace WebCore
...@@ -127,37 +127,6 @@ private: ...@@ -127,37 +127,6 @@ private:
double m_currentValue; double m_currentValue;
}; };
// ----------------------------
class MediaControlMuteButtonElement : public MediaControlInputElement {
public:
void changedMute();
virtual bool willRespondToMouseClickEvents() OVERRIDE { return true; }
protected:
explicit MediaControlMuteButtonElement(Document&, MediaControlElementType);
virtual void defaultEventHandler(Event*) OVERRIDE;
private:
virtual void updateDisplayType() OVERRIDE;
};
// ----------------------------
class MediaControlVolumeSliderElement : public MediaControlInputElement {
public:
virtual bool willRespondToMouseMoveEvents() OVERRIDE;
virtual bool willRespondToMouseClickEvents() OVERRIDE;
void setVolume(double);
protected:
explicit MediaControlVolumeSliderElement(Document&);
virtual void defaultEventHandler(Event*) OVERRIDE;
};
} // namespace WebCore } // namespace WebCore
#endif // MediaControlElementTypes_h #endif // MediaControlElementTypes_h
...@@ -284,22 +284,35 @@ const AtomicString& MediaControlOverlayEnclosureElement::shadowPseudoId() const ...@@ -284,22 +284,35 @@ const AtomicString& MediaControlOverlayEnclosureElement::shadowPseudoId() const
// ---------------------------- // ----------------------------
MediaControlPanelMuteButtonElement::MediaControlPanelMuteButtonElement(Document& document, MediaControls* controls) MediaControlMuteButtonElement::MediaControlMuteButtonElement(Document& document)
: MediaControlMuteButtonElement(document, MediaMuteButton) : MediaControlInputElement(document, MediaMuteButton)
{ {
} }
PassRefPtr<MediaControlPanelMuteButtonElement> MediaControlPanelMuteButtonElement::create(Document& document, MediaControls* controls) PassRefPtr<MediaControlMuteButtonElement> MediaControlMuteButtonElement::create(Document& document)
{ {
ASSERT(controls); RefPtr<MediaControlMuteButtonElement> button = adoptRef(new MediaControlMuteButtonElement(document));
RefPtr<MediaControlPanelMuteButtonElement> button = adoptRef(new MediaControlPanelMuteButtonElement(document, controls));
button->ensureUserAgentShadowRoot(); button->ensureUserAgentShadowRoot();
button->setType("button"); button->setType("button");
return button.release(); return button.release();
} }
const AtomicString& MediaControlPanelMuteButtonElement::shadowPseudoId() const void MediaControlMuteButtonElement::defaultEventHandler(Event* event)
{
if (event->type() == EventTypeNames::click) {
mediaController()->setMuted(!mediaController()->muted());
event->setDefaultHandled();
}
HTMLInputElement::defaultEventHandler(event);
}
void MediaControlMuteButtonElement::updateDisplayType()
{
setDisplayType(mediaController()->muted() ? MediaUnMuteButton : MediaMuteButton);
}
const AtomicString& MediaControlMuteButtonElement::shadowPseudoId() const
{ {
DEFINE_STATIC_LOCAL(AtomicString, id, ("-webkit-media-controls-mute-button", AtomicString::ConstructFromLiteral)); DEFINE_STATIC_LOCAL(AtomicString, id, ("-webkit-media-controls-mute-button", AtomicString::ConstructFromLiteral));
return id; return id;
...@@ -499,14 +512,14 @@ const AtomicString& MediaControlTimelineElement::shadowPseudoId() const ...@@ -499,14 +512,14 @@ const AtomicString& MediaControlTimelineElement::shadowPseudoId() const
// ---------------------------- // ----------------------------
MediaControlPanelVolumeSliderElement::MediaControlPanelVolumeSliderElement(Document& document) MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(Document& document)
: MediaControlVolumeSliderElement(document) : MediaControlInputElement(document, MediaVolumeSlider)
{ {
} }
PassRefPtr<MediaControlPanelVolumeSliderElement> MediaControlPanelVolumeSliderElement::create(Document& document) PassRefPtr<MediaControlVolumeSliderElement> MediaControlVolumeSliderElement::create(Document& document)
{ {
RefPtr<MediaControlPanelVolumeSliderElement> slider = adoptRef(new MediaControlPanelVolumeSliderElement(document)); RefPtr<MediaControlVolumeSliderElement> slider = adoptRef(new MediaControlVolumeSliderElement(document));
slider->ensureUserAgentShadowRoot(); slider->ensureUserAgentShadowRoot();
slider->setType("range"); slider->setType("range");
slider->setAttribute(stepAttr, "any"); slider->setAttribute(stepAttr, "any");
...@@ -514,7 +527,47 @@ PassRefPtr<MediaControlPanelVolumeSliderElement> MediaControlPanelVolumeSliderEl ...@@ -514,7 +527,47 @@ PassRefPtr<MediaControlPanelVolumeSliderElement> MediaControlPanelVolumeSliderEl
return slider.release(); return slider.release();
} }
const AtomicString& MediaControlPanelVolumeSliderElement::shadowPseudoId() const void MediaControlVolumeSliderElement::defaultEventHandler(Event* event)
{
if (event->isMouseEvent() && toMouseEvent(event)->button() != LeftButton)
return;
if (!inDocument() || !document().isActive())
return;
MediaControlInputElement::defaultEventHandler(event);
if (event->type() == EventTypeNames::mouseover || event->type() == EventTypeNames::mouseout || event->type() == EventTypeNames::mousemove)
return;
double volume = value().toDouble();
mediaController()->setVolume(volume, ASSERT_NO_EXCEPTION);
mediaController()->setMuted(false);
}
bool MediaControlVolumeSliderElement::willRespondToMouseMoveEvents()
{
if (!inDocument() || !document().isActive())
return false;
return MediaControlInputElement::willRespondToMouseMoveEvents();
}
bool MediaControlVolumeSliderElement::willRespondToMouseClickEvents()
{
if (!inDocument() || !document().isActive())
return false;
return MediaControlInputElement::willRespondToMouseClickEvents();
}
void MediaControlVolumeSliderElement::setVolume(double volume)
{
if (value().toDouble() != volume)
setValue(String::number(volume));
}
const AtomicString& MediaControlVolumeSliderElement::shadowPseudoId() const
{ {
DEFINE_STATIC_LOCAL(AtomicString, id, ("-webkit-media-controls-volume-slider", AtomicString::ConstructFromLiteral)); DEFINE_STATIC_LOCAL(AtomicString, id, ("-webkit-media-controls-volume-slider", AtomicString::ConstructFromLiteral));
return id; return id;
......
...@@ -100,16 +100,18 @@ private: ...@@ -100,16 +100,18 @@ private:
// ---------------------------- // ----------------------------
class MediaControlPanelMuteButtonElement FINAL : public MediaControlMuteButtonElement { class MediaControlMuteButtonElement FINAL : public MediaControlInputElement {
public: public:
static PassRefPtr<MediaControlPanelMuteButtonElement> create(Document&, MediaControls*); static PassRefPtr<MediaControlMuteButtonElement> create(Document&);
virtual bool willRespondToMouseMoveEvents() OVERRIDE { return true; } virtual bool willRespondToMouseClickEvents() OVERRIDE { return true; }
virtual void updateDisplayType() OVERRIDE;
private: private:
explicit MediaControlPanelMuteButtonElement(Document&, MediaControls*); explicit MediaControlMuteButtonElement(Document&);
virtual const AtomicString& shadowPseudoId() const OVERRIDE; virtual const AtomicString& shadowPseudoId() const OVERRIDE;
virtual void defaultEventHandler(Event*) OVERRIDE;
}; };
// ---------------------------- // ----------------------------
...@@ -199,13 +201,19 @@ private: ...@@ -199,13 +201,19 @@ private:
// ---------------------------- // ----------------------------
class MediaControlPanelVolumeSliderElement FINAL : public MediaControlVolumeSliderElement { class MediaControlVolumeSliderElement FINAL : public MediaControlInputElement {
public: public:
static PassRefPtr<MediaControlPanelVolumeSliderElement> create(Document&); static PassRefPtr<MediaControlVolumeSliderElement> create(Document&);
virtual bool willRespondToMouseMoveEvents() OVERRIDE;
virtual bool willRespondToMouseClickEvents() OVERRIDE;
void setVolume(double);
private: private:
explicit MediaControlPanelVolumeSliderElement(Document&); explicit MediaControlVolumeSliderElement(Document&);
virtual const AtomicString& shadowPseudoId() const OVERRIDE; virtual const AtomicString& shadowPseudoId() const OVERRIDE;
virtual void defaultEventHandler(Event*) OVERRIDE;
}; };
// ---------------------------- // ----------------------------
......
...@@ -44,7 +44,7 @@ MediaControls::MediaControls(Document& document) ...@@ -44,7 +44,7 @@ MediaControls::MediaControls(Document& document)
, m_playButton(0) , m_playButton(0)
, m_currentTimeDisplay(0) , m_currentTimeDisplay(0)
, m_timeline(0) , m_timeline(0)
, m_panelMuteButton(0) , m_muteButton(0)
, m_volumeSlider(0) , m_volumeSlider(0)
, m_toggleClosedCaptionsButton(0) , m_toggleClosedCaptionsButton(0)
, m_fullScreenButton(0) , m_fullScreenButton(0)
...@@ -108,13 +108,13 @@ bool MediaControls::initializeControls(Document& document) ...@@ -108,13 +108,13 @@ bool MediaControls::initializeControls(Document& document)
if (exceptionState.hadException()) if (exceptionState.hadException())
return false; return false;
RefPtr<MediaControlPanelMuteButtonElement> panelMuteButton = MediaControlPanelMuteButtonElement::create(document, this); RefPtr<MediaControlMuteButtonElement> muteButton = MediaControlMuteButtonElement::create(document);
m_panelMuteButton = panelMuteButton.get(); m_muteButton = muteButton.get();
panel->appendChild(panelMuteButton.release(), exceptionState); panel->appendChild(muteButton.release(), exceptionState);
if (exceptionState.hadException()) if (exceptionState.hadException())
return false; return false;
RefPtr<MediaControlPanelVolumeSliderElement> slider = MediaControlPanelVolumeSliderElement::create(document); RefPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderElement::create(document);
m_volumeSlider = slider.get(); m_volumeSlider = slider.get();
panel->appendChild(slider.release(), exceptionState); panel->appendChild(slider.release(), exceptionState);
if (exceptionState.hadException()) if (exceptionState.hadException())
...@@ -157,7 +157,7 @@ void MediaControls::setMediaController(MediaControllerInterface* controller) ...@@ -157,7 +157,7 @@ void MediaControls::setMediaController(MediaControllerInterface* controller)
m_playButton->setMediaController(controller); m_playButton->setMediaController(controller);
m_currentTimeDisplay->setMediaController(controller); m_currentTimeDisplay->setMediaController(controller);
m_timeline->setMediaController(controller); m_timeline->setMediaController(controller);
m_panelMuteButton->setMediaController(controller); m_muteButton->setMediaController(controller);
m_volumeSlider->setMediaController(controller); m_volumeSlider->setMediaController(controller);
m_toggleClosedCaptionsButton->setMediaController(controller); m_toggleClosedCaptionsButton->setMediaController(controller);
m_fullScreenButton->setMediaController(controller); m_fullScreenButton->setMediaController(controller);
...@@ -182,8 +182,6 @@ void MediaControls::reset() ...@@ -182,8 +182,6 @@ void MediaControls::reset()
m_timeline->setDuration(m_mediaController->duration()); m_timeline->setDuration(m_mediaController->duration());
m_timeline->setPosition(m_mediaController->currentTime()); m_timeline->setPosition(m_mediaController->currentTime());
m_panelMuteButton->show();
if (!m_mediaController->hasAudio()) { if (!m_mediaController->hasAudio()) {
m_volumeSlider->hide(); m_volumeSlider->hide();
} else { } else {
...@@ -291,7 +289,7 @@ void MediaControls::updateCurrentTimeDisplay() ...@@ -291,7 +289,7 @@ void MediaControls::updateCurrentTimeDisplay()
void MediaControls::changedMute() void MediaControls::changedMute()
{ {
m_panelMuteButton->changedMute(); m_muteButton->updateDisplayType();
if (m_mediaController->muted()) if (m_mediaController->muted())
m_volumeSlider->setVolume(0); m_volumeSlider->setVolume(0);
...@@ -302,8 +300,8 @@ void MediaControls::changedMute() ...@@ -302,8 +300,8 @@ void MediaControls::changedMute()
void MediaControls::changedVolume() void MediaControls::changedVolume()
{ {
m_volumeSlider->setVolume(m_mediaController->volume()); m_volumeSlider->setVolume(m_mediaController->volume());
if (m_panelMuteButton->renderer()) if (m_muteButton->renderer())
m_panelMuteButton->renderer()->repaint(); m_muteButton->renderer()->repaint();
} }
void MediaControls::changedClosedCaptionsVisibility() void MediaControls::changedClosedCaptionsVisibility()
......
...@@ -115,8 +115,8 @@ private: ...@@ -115,8 +115,8 @@ private:
MediaControlPlayButtonElement* m_playButton; MediaControlPlayButtonElement* m_playButton;
MediaControlCurrentTimeDisplayElement* m_currentTimeDisplay; MediaControlCurrentTimeDisplayElement* m_currentTimeDisplay;
MediaControlTimelineElement* m_timeline; MediaControlTimelineElement* m_timeline;
MediaControlPanelMuteButtonElement* m_panelMuteButton; MediaControlMuteButtonElement* m_muteButton;
MediaControlPanelVolumeSliderElement* m_volumeSlider; MediaControlVolumeSliderElement* m_volumeSlider;
MediaControlToggleClosedCaptionsButtonElement* m_toggleClosedCaptionsButton; MediaControlToggleClosedCaptionsButtonElement* m_toggleClosedCaptionsButton;
MediaControlFullscreenButtonElement* m_fullScreenButton; MediaControlFullscreenButtonElement* m_fullScreenButton;
MediaControlTimeRemainingDisplayElement* m_durationDisplay; MediaControlTimeRemainingDisplayElement* m_durationDisplay;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment