summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/MediaControlElements.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/rendering/MediaControlElements.h')
-rw-r--r--WebCore/rendering/MediaControlElements.h149
1 files changed, 110 insertions, 39 deletions
diff --git a/WebCore/rendering/MediaControlElements.h b/WebCore/rendering/MediaControlElements.h
index 21831ce..68c06a3 100644
--- a/WebCore/rendering/MediaControlElements.h
+++ b/WebCore/rendering/MediaControlElements.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -72,14 +72,16 @@ HTMLMediaElement* toParentMediaElement(RenderObject*);
class MediaControlShadowRootElement : public HTMLDivElement {
public:
- MediaControlShadowRootElement(Document*, HTMLMediaElement*);
-
- virtual bool isShadowNode() const { return true; }
- virtual Node* shadowParentNode() { return m_mediaElement; }
+ static PassRefPtr<MediaControlShadowRootElement> create(HTMLMediaElement*);
void updateStyle();
private:
+ MediaControlShadowRootElement(HTMLMediaElement*);
+
+ virtual bool isShadowNode() const { return true; }
+ virtual Node* shadowParentNode() { return m_mediaElement; }
+
HTMLMediaElement* m_mediaElement;
};
@@ -87,21 +89,27 @@ private:
class MediaControlElement : public HTMLDivElement {
public:
- MediaControlElement(Document*, PseudoId, HTMLMediaElement*);
- virtual void attach();
- virtual bool rendererIsNeeded(RenderStyle*);
+ static PassRefPtr<MediaControlElement> create(HTMLMediaElement*, PseudoId);
- virtual PassRefPtr<RenderStyle> styleForElement();
+ virtual void attach();
void attachToParent(Element*);
void update();
- virtual void updateStyle();
+ void updateStyle();
MediaControlElementType displayType() const { return m_displayType; }
HTMLMediaElement* mediaElement() const { return m_mediaElement; }
- virtual bool isMediaControlElement() const { return true; }
protected:
+ MediaControlElement(HTMLMediaElement*, PseudoId);
+
+ virtual bool rendererIsNeeded(RenderStyle*);
+
+ virtual PassRefPtr<RenderStyle> styleForElement();
+
+private:
+ virtual bool isMediaControlElement() const { return true; }
+
HTMLMediaElement* m_mediaElement;
PseudoId m_pseudoStyleId;
MediaControlElementType m_displayType; // some elements can show multiple types (e.g. play/pause)
@@ -111,7 +119,10 @@ protected:
class MediaControlTimelineContainerElement : public MediaControlElement {
public:
- MediaControlTimelineContainerElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlTimelineContainerElement> create(HTMLMediaElement*);
+
+private:
+ MediaControlTimelineContainerElement(HTMLMediaElement*);
virtual bool rendererIsNeeded(RenderStyle*);
};
@@ -119,7 +130,8 @@ public:
class MediaControlVolumeSliderContainerElement : public MediaControlElement {
public:
- MediaControlVolumeSliderContainerElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlVolumeSliderContainerElement> create(HTMLMediaElement*);
+
virtual PassRefPtr<RenderStyle> styleForElement();
void setVisible(bool);
bool isVisible() { return m_isVisible; }
@@ -127,6 +139,8 @@ public:
bool hitTest(const IntPoint& absPoint);
private:
+ MediaControlVolumeSliderContainerElement(HTMLMediaElement*);
+
bool m_isVisible;
int m_x, m_y;
};
@@ -135,10 +149,15 @@ private:
class MediaControlStatusDisplayElement : public MediaControlElement {
public:
- MediaControlStatusDisplayElement(Document*, HTMLMediaElement*);
- virtual void update();
- virtual bool rendererIsNeeded(RenderStyle*);
+ static PassRefPtr<MediaControlStatusDisplayElement> create(HTMLMediaElement*);
+
+ void update();
+
private:
+ MediaControlStatusDisplayElement(HTMLMediaElement*);
+
+ virtual bool rendererIsNeeded(RenderStyle*);
+
enum StateBeingDisplayed { Nothing, Loading, LiveBroadcast };
StateBeingDisplayed m_stateBeingDisplayed;
};
@@ -147,25 +166,33 @@ private:
class MediaControlInputElement : public HTMLInputElement {
public:
- MediaControlInputElement(Document*, PseudoId, const String& type, HTMLMediaElement*);
- virtual void attach();
- virtual bool rendererIsNeeded(RenderStyle*);
-
- virtual PassRefPtr<RenderStyle> styleForElement();
void attachToParent(Element*);
void update();
void updateStyle();
bool hitTest(const IntPoint& absPoint);
+
MediaControlElementType displayType() const { return m_displayType; }
HTMLMediaElement* mediaElement() const { return m_mediaElement; }
- virtual bool isMediaControlElement() const { return true; }
protected:
- virtual void updateDisplayType() { }
+ MediaControlInputElement(HTMLMediaElement*, PseudoId, const String& type);
+
void setDisplayType(MediaControlElementType);
+ PseudoId pseudoStyleId() const { return m_pseudoStyleId; }
+
+private:
+ virtual void attach();
+ virtual bool rendererIsNeeded(RenderStyle*);
+
+ virtual PassRefPtr<RenderStyle> styleForElement();
+
+ virtual bool isMediaControlElement() const { return true; }
+
+ virtual void updateDisplayType() { }
+
HTMLMediaElement* m_mediaElement;
PseudoId m_pseudoStyleId;
MediaControlElementType m_displayType;
@@ -175,8 +202,13 @@ protected:
class MediaControlMuteButtonElement : public MediaControlInputElement {
public:
- MediaControlMuteButtonElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlMuteButtonElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlMuteButtonElement(HTMLMediaElement*);
+
virtual void updateDisplayType();
};
@@ -184,8 +216,13 @@ public:
class MediaControlPlayButtonElement : public MediaControlInputElement {
public:
- MediaControlPlayButtonElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlPlayButtonElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlPlayButtonElement(HTMLMediaElement*);
+
virtual void updateDisplayType();
};
@@ -193,13 +230,18 @@ public:
class MediaControlSeekButtonElement : public MediaControlInputElement {
public:
- MediaControlSeekButtonElement(Document*, HTMLMediaElement*, bool forward);
+ static PassRefPtr<MediaControlSeekButtonElement> create(HTMLMediaElement*, PseudoId);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlSeekButtonElement(HTMLMediaElement*, PseudoId);
+
+ bool isForwardButton() const;
+
virtual void detach();
void seekTimerFired(Timer<MediaControlSeekButtonElement>*);
-private:
- bool m_forward;
bool m_seeking;
bool m_capturing;
Timer<MediaControlSeekButtonElement> m_seekTimer;
@@ -209,24 +251,37 @@ private:
class MediaControlRewindButtonElement : public MediaControlInputElement {
public:
- MediaControlRewindButtonElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlRewindButtonElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlRewindButtonElement(HTMLMediaElement*);
};
// ----------------------------
class MediaControlReturnToRealtimeButtonElement : public MediaControlInputElement {
public:
- MediaControlReturnToRealtimeButtonElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlReturnToRealtimeButtonElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlReturnToRealtimeButtonElement(HTMLMediaElement*);
};
// ----------------------------
class MediaControlToggleClosedCaptionsButtonElement : public MediaControlInputElement {
public:
- MediaControlToggleClosedCaptionsButtonElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlToggleClosedCaptionsButtonElement(HTMLMediaElement*);
+
virtual void updateDisplayType();
};
@@ -234,40 +289,55 @@ public:
class MediaControlTimelineElement : public MediaControlInputElement {
public:
- MediaControlTimelineElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlTimelineElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
void update(bool updateDuration = true);
+
+private:
+ MediaControlTimelineElement(HTMLMediaElement*);
};
// ----------------------------
class MediaControlVolumeSliderElement : public MediaControlInputElement {
public:
- MediaControlVolumeSliderElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlVolumeSliderElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
- virtual void update();
+ void update();
+
+private:
+ MediaControlVolumeSliderElement(HTMLMediaElement*);
};
// ----------------------------
class MediaControlFullscreenButtonElement : public MediaControlInputElement {
public:
- MediaControlFullscreenButtonElement(Document*, HTMLMediaElement*);
+ static PassRefPtr<MediaControlFullscreenButtonElement> create(HTMLMediaElement*);
+
virtual void defaultEventHandler(Event*);
+
+private:
+ MediaControlFullscreenButtonElement(HTMLMediaElement*);
};
// ----------------------------
class MediaControlTimeDisplayElement : public MediaControlElement {
public:
- MediaControlTimeDisplayElement(Document*, PseudoId, HTMLMediaElement*);
+ static PassRefPtr<MediaControlTimeDisplayElement> create(HTMLMediaElement*, PseudoId);
+
void setVisible(bool);
- virtual PassRefPtr<RenderStyle> styleForElement();
void setCurrentValue(float);
float currentValue() const { return m_currentValue; }
private:
+ MediaControlTimeDisplayElement(HTMLMediaElement*, PseudoId);
+
+ virtual PassRefPtr<RenderStyle> styleForElement();
float m_currentValue;
bool m_isVisible;
};
@@ -282,7 +352,8 @@ public:
// ----------------------------
-
} //namespace WebCore
-#endif // enable(video)
+
+#endif // ENABLE(VIDEO)
+
#endif // MediaControlElements_h