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)
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
......@@ -127,37 +127,6 @@ private:
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
#endif // MediaControlElementTypes_h
......@@ -284,22 +284,35 @@ const AtomicString& MediaControlOverlayEnclosureElement::shadowPseudoId() const
// ----------------------------
MediaControlPanelMuteButtonElement::MediaControlPanelMuteButtonElement(Document& document, MediaControls* controls)
: MediaControlMuteButtonElement(document, MediaMuteButton)
MediaControlMuteButtonElement::MediaControlMuteButtonElement(Document& document)
: MediaControlInputElement(document, MediaMuteButton)
{
}
PassRefPtr<MediaControlPanelMuteButtonElement> MediaControlPanelMuteButtonElement::create(Document& document, MediaControls* controls)
PassRefPtr<MediaControlMuteButtonElement> MediaControlMuteButtonElement::create(Document& document)
{
ASSERT(controls);
RefPtr<MediaControlPanelMuteButtonElement> button = adoptRef(new MediaControlPanelMuteButtonElement(document, controls));
RefPtr<MediaControlMuteButtonElement> button = adoptRef(new MediaControlMuteButtonElement(document));
button->ensureUserAgentShadowRoot();
button->setType("button");
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));
return id;
......@@ -499,14 +512,14 @@ const AtomicString& MediaControlTimelineElement::shadowPseudoId() const
// ----------------------------
MediaControlPanelVolumeSliderElement::MediaControlPanelVolumeSliderElement(Document& document)
: MediaControlVolumeSliderElement(document)
MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(Document& 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->setType("range");
slider->setAttribute(stepAttr, "any");
......@@ -514,7 +527,47 @@ PassRefPtr<MediaControlPanelVolumeSliderElement> MediaControlPanelVolumeSliderEl
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));
return id;
......
......@@ -100,16 +100,18 @@ private:
// ----------------------------
class MediaControlPanelMuteButtonElement FINAL : public MediaControlMuteButtonElement {
class MediaControlMuteButtonElement FINAL : public MediaControlInputElement {
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:
explicit MediaControlPanelMuteButtonElement(Document&, MediaControls*);
explicit MediaControlMuteButtonElement(Document&);
virtual const AtomicString& shadowPseudoId() const OVERRIDE;
virtual void defaultEventHandler(Event*) OVERRIDE;
};
// ----------------------------
......@@ -199,13 +201,19 @@ private:
// ----------------------------
class MediaControlPanelVolumeSliderElement FINAL : public MediaControlVolumeSliderElement {
class MediaControlVolumeSliderElement FINAL : public MediaControlInputElement {
public:
static PassRefPtr<MediaControlPanelVolumeSliderElement> create(Document&);
static PassRefPtr<MediaControlVolumeSliderElement> create(Document&);
virtual bool willRespondToMouseMoveEvents() OVERRIDE;
virtual bool willRespondToMouseClickEvents() OVERRIDE;
void setVolume(double);
private:
explicit MediaControlPanelVolumeSliderElement(Document&);
explicit MediaControlVolumeSliderElement(Document&);
virtual const AtomicString& shadowPseudoId() const OVERRIDE;
virtual void defaultEventHandler(Event*) OVERRIDE;
};
// ----------------------------
......
......@@ -44,7 +44,7 @@ MediaControls::MediaControls(Document& document)
, m_playButton(0)
, m_currentTimeDisplay(0)
, m_timeline(0)
, m_panelMuteButton(0)
, m_muteButton(0)
, m_volumeSlider(0)
, m_toggleClosedCaptionsButton(0)
, m_fullScreenButton(0)
......@@ -108,13 +108,13 @@ bool MediaControls::initializeControls(Document& document)
if (exceptionState.hadException())
return false;
RefPtr<MediaControlPanelMuteButtonElement> panelMuteButton = MediaControlPanelMuteButtonElement::create(document, this);
m_panelMuteButton = panelMuteButton.get();
panel->appendChild(panelMuteButton.release(), exceptionState);
RefPtr<MediaControlMuteButtonElement> muteButton = MediaControlMuteButtonElement::create(document);
m_muteButton = muteButton.get();
panel->appendChild(muteButton.release(), exceptionState);
if (exceptionState.hadException())
return false;
RefPtr<MediaControlPanelVolumeSliderElement> slider = MediaControlPanelVolumeSliderElement::create(document);
RefPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderElement::create(document);
m_volumeSlider = slider.get();
panel->appendChild(slider.release(), exceptionState);
if (exceptionState.hadException())
......@@ -157,7 +157,7 @@ void MediaControls::setMediaController(MediaControllerInterface* controller)
m_playButton->setMediaController(controller);
m_currentTimeDisplay->setMediaController(controller);
m_timeline->setMediaController(controller);
m_panelMuteButton->setMediaController(controller);
m_muteButton->setMediaController(controller);
m_volumeSlider->setMediaController(controller);
m_toggleClosedCaptionsButton->setMediaController(controller);
m_fullScreenButton->setMediaController(controller);
......@@ -182,8 +182,6 @@ void MediaControls::reset()
m_timeline->setDuration(m_mediaController->duration());
m_timeline->setPosition(m_mediaController->currentTime());
m_panelMuteButton->show();
if (!m_mediaController->hasAudio()) {
m_volumeSlider->hide();
} else {
......@@ -291,7 +289,7 @@ void MediaControls::updateCurrentTimeDisplay()
void MediaControls::changedMute()
{
m_panelMuteButton->changedMute();
m_muteButton->updateDisplayType();
if (m_mediaController->muted())
m_volumeSlider->setVolume(0);
......@@ -302,8 +300,8 @@ void MediaControls::changedMute()
void MediaControls::changedVolume()
{
m_volumeSlider->setVolume(m_mediaController->volume());
if (m_panelMuteButton->renderer())
m_panelMuteButton->renderer()->repaint();
if (m_muteButton->renderer())
m_muteButton->renderer()->repaint();
}
void MediaControls::changedClosedCaptionsVisibility()
......
......@@ -115,8 +115,8 @@ private:
MediaControlPlayButtonElement* m_playButton;
MediaControlCurrentTimeDisplayElement* m_currentTimeDisplay;
MediaControlTimelineElement* m_timeline;
MediaControlPanelMuteButtonElement* m_panelMuteButton;
MediaControlPanelVolumeSliderElement* m_volumeSlider;
MediaControlMuteButtonElement* m_muteButton;
MediaControlVolumeSliderElement* m_volumeSlider;
MediaControlToggleClosedCaptionsButtonElement* m_toggleClosedCaptionsButton;
MediaControlFullscreenButtonElement* m_fullScreenButton;
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