diff options
author | Steve Block <steveblock@google.com> | 2011-06-08 08:26:01 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-06-08 08:26:01 -0700 |
commit | 3742ac093d35d923c81693096ab6671e9b147700 (patch) | |
tree | c2add9100f789dad45ef1ec5328bddde02c47a4c /Source/WebCore/platform/efl/RenderThemeEfl.cpp | |
parent | 901401d90459bc22580842455d4588b9a697514d (diff) | |
parent | e5926f4a0d6adc9ad4a75824129f117181953560 (diff) | |
download | external_webkit-3742ac093d35d923c81693096ab6671e9b147700.zip external_webkit-3742ac093d35d923c81693096ab6671e9b147700.tar.gz external_webkit-3742ac093d35d923c81693096ab6671e9b147700.tar.bz2 |
Merge changes I55c6d71a,Ifb3277d4,Ia1b847a2,I7ba9cf3f,Ida2b2a8a,I1280ec90,I72f818d5,I2e3b588b,I9a4e6289,Ia724c78b,Icd8612c8,Ie31b15d7,Ie125edae,I77941a88,I89dae78b,I3516e5ca,I1a4c17b5,I2c4ecc1a,I9c8e6537,Ifac13115,Ie1f80e09,Ia541ed77,I60ce9d78
* changes:
Merge WebKit at r82507: Update ThirdPartyProject.prop
Merge WebKit at r82507: Cherry-pick change r88166 to add INSPECTOR guards to ScriptProfiler
Merge WebKit at r82507: Work around a V8 bug
Merge WebKit at r82507: JNIType renamed to JavaType
Merge WebKit at r82507: IconDatabaseClient interface expanded
Merge WebKit at r82507: Don't use new loss-free code path in HTMLCanvasElement::toDataURL()
Merge WebKit at r82507: IcondDatabaseBase::iconForPageURL() renamed
Merge WebKit at r82507: IconDatabaseBase::Open() signature changed
Merge WebKit at r82507: Node::isContentEditable() renamed
Merge WebKit at r82507: Use icon database through IconDatabaseBase
Merge WebKit at r82507: toInputElement() is now a member of Node
Merge WebKit at r82507: FrameLoaderClient::objectContentType() signature changed
Merge WebKit at r82507: StringImpl::computeHash() removed
Merge WebKit at r82507: Stub out FontPlatformData::setOrientation()
Merge WebKit at r82507: Path::strokeBoundingRect() is now const
Merge WebKit at r82507: Add missing UnusedParam.h include in ApplicationCacheGroup.cpp
Merge WebKit at r82507: Continue to use Android's version of FontPlatformData.h
Merge WebKit at r82507: Update signature of FontCustomPlatformData::fontPlatformData()
Merge WebKit at r82507: Fix conflicts due to JNI refactoring
Merge WebKit at r82507: Fix conflicts due to new StorageTracker
Merge WebKit at r82507: Fix conflicts
Merge WebKit at r82507: Fix makefiles
Merge WebKit at r82507: Initial merge by git
Diffstat (limited to 'Source/WebCore/platform/efl/RenderThemeEfl.cpp')
-rw-r--r-- | Source/WebCore/platform/efl/RenderThemeEfl.cpp | 65 |
1 files changed, 58 insertions, 7 deletions
diff --git a/Source/WebCore/platform/efl/RenderThemeEfl.cpp b/Source/WebCore/platform/efl/RenderThemeEfl.cpp index 3e8a646..439e377 100644 --- a/Source/WebCore/platform/efl/RenderThemeEfl.cpp +++ b/Source/WebCore/platform/efl/RenderThemeEfl.cpp @@ -38,11 +38,21 @@ #include "RenderObject.h" #include "RenderProgress.h" #include "RenderSlider.h" +#include "UserAgentStyleSheets.h" #include <wtf/text/CString.h> #include <Ecore_Evas.h> #include <Edje.h> + +#if ENABLE(VIDEO) +#include "HTMLMediaElement.h" +#include "HTMLNames.h" +#endif + namespace WebCore { +#if ENABLE(VIDEO) +using namespace HTMLNames; +#endif // TODO: change from object count to ecore_evas size (bytes) // TODO: as objects are webpage/user defined and they can be very large. @@ -273,7 +283,7 @@ bool RenderThemeEfl::paintThemePart(RenderObject* object, FormType type, const P applyEdjeStateFromForm(entry->o, controlStatesForRenderer(object)); - cairo = info.context->platformContext(); + cairo = info.context->platformContext()->cr(); ASSERT(cairo); // Currently, only sliders needs this message; if other widget ever needs special @@ -592,6 +602,10 @@ const char* RenderThemeEfl::edjeGroupFromFormType(FormType type) const W("search/cancel_button"), W("slider/vertical"), W("slider/horizontal"), +#if ENABLE(VIDEO) + W("mediacontrol/playpause_button"), + W("mediacontrol/mute_button"), +#endif #undef W 0 }; @@ -1044,10 +1058,32 @@ bool RenderThemeEfl::paintProgressBar(RenderObject* object, const PaintInfo& inf #endif #if ENABLE(VIDEO) +bool RenderThemeEfl::emitMediaButtonSignal(FormType formType, MediaControlElementType mediaElementType, const IntRect& rect) +{ + ThemePartCacheEntry* entry; + + entry = cacheThemePartGet(formType, rect.size()); + ASSERT(entry); + if (!entry) + return false; + + if (mediaElementType == MediaPlayButton) + edje_object_signal_emit(entry->o, "play", ""); + else if (mediaElementType == MediaPauseButton) + edje_object_signal_emit(entry->o, "pause", ""); + else if (mediaElementType == MediaMuteButton) + edje_object_signal_emit(entry->o, "mute", ""); + else if (mediaElementType == MediaUnMuteButton) + edje_object_signal_emit(entry->o, "sound", ""); + else + return false; + + return true; +} + String RenderThemeEfl::extraMediaControlsStyleSheet() { - notImplemented(); - return String(); + return String(mediaControlsEflUserAgentStyleSheet, sizeof(mediaControlsEflUserAgentStyleSheet)); } String RenderThemeEfl::formatMediaControlsCurrentTime(float currentTime, float duration) const @@ -1064,14 +1100,29 @@ bool RenderThemeEfl::paintMediaFullscreenButton(RenderObject* object, const Pain bool RenderThemeEfl::paintMediaMuteButton(RenderObject* object, const PaintInfo& info, const IntRect& rect) { - notImplemented(); - return false; + Node* mediaNode = object->node() ? object->node()->shadowAncestorNode() : 0; + if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagName(audioTag))) + return false; + + HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode); + + if (!emitMediaButtonSignal(MediaMuteUnMuteButton, mediaElement->muted() ? MediaMuteButton : MediaUnMuteButton, rect)) + return false; + + return paintThemePart(object, MediaMuteUnMuteButton, info, rect); } bool RenderThemeEfl::paintMediaPlayButton(RenderObject* object, const PaintInfo& info, const IntRect& rect) { - notImplemented(); - return false; + Node* node = object->node(); + if (!node) + return false; + + MediaControlPlayButtonElement* button = static_cast<MediaControlPlayButtonElement*>(node); + if (!emitMediaButtonSignal(MediaPlayPauseButton, button->displayType(), rect)) + return false; + + return paintThemePart(object, MediaPlayPauseButton, info, rect); } bool RenderThemeEfl::paintMediaSeekBackButton(RenderObject* object, const PaintInfo& info, const IntRect& rect) |