Title: [116539] trunk/Source/WebCore
- Revision
- 116539
- Author
- [email protected]
- Date
- 2012-05-09 10:02:50 -0700 (Wed, 09 May 2012)
Log Message
[chromium] Support multiple buffered time ranges
https://bugs.webkit.org/show_bug.cgi?id=85926
Reviewed by Eric Carlson.
Preserve existing rendering of a single rect even in the presence of multiple buffered regions.
No new tests as this change has no functional effects.
* rendering/RenderMediaControlsChromium.cpp:
(WebCore::paintMediaSlider):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (116538 => 116539)
--- trunk/Source/WebCore/ChangeLog 2012-05-09 17:01:16 UTC (rev 116538)
+++ trunk/Source/WebCore/ChangeLog 2012-05-09 17:02:50 UTC (rev 116539)
@@ -1,3 +1,17 @@
+2012-05-09 Ami Fischman <[email protected]>
+
+ [chromium] Support multiple buffered time ranges
+ https://bugs.webkit.org/show_bug.cgi?id=85926
+
+ Reviewed by Eric Carlson.
+
+ Preserve existing rendering of a single rect even in the presence of multiple buffered regions.
+
+ No new tests as this change has no functional effects.
+
+ * rendering/RenderMediaControlsChromium.cpp:
+ (WebCore::paintMediaSlider):
+
2012-05-09 Dana Jansens <[email protected]>
Early-out and avoid any copying when possible for Region operations
Modified: trunk/Source/WebCore/rendering/RenderMediaControlsChromium.cpp (116538 => 116539)
--- trunk/Source/WebCore/rendering/RenderMediaControlsChromium.cpp 2012-05-09 17:01:16 UTC (rev 116538)
+++ trunk/Source/WebCore/rendering/RenderMediaControlsChromium.cpp 2012-05-09 17:02:50 UTC (rev 116539)
@@ -33,6 +33,7 @@
#include "HTMLMediaElement.h"
#include "HTMLNames.h"
#include "PaintInfo.h"
+#include "TimeRanges.h"
namespace WebCore {
@@ -127,19 +128,26 @@
context->restore();
// Draw the buffered ranges.
- // FIXME: Draw multiple ranges if there are multiple buffered ranges.
+ // FIXME: Draw multiple ranges if there are multiple buffered ranges. http://webkit.org/b/85925
IntRect bufferedRect = rect;
bufferedRect.inflate(-style->borderLeftWidth());
double bufferedWidth = 0.0;
- if (mediaElement->percentLoaded() > 0.0) {
+ RefPtr<TimeRanges> bufferedTimeRanges = mediaElement->buffered();
+ if (bufferedTimeRanges->length() > 0) {
// Account for the width of the slider thumb.
Image* mediaSliderThumb = getMediaSliderThumb();
double thumbWidth = mediaSliderThumb->width() / 2.0 + 1.0;
double rectWidth = bufferedRect.width() - thumbWidth;
if (rectWidth < 0.0)
rectWidth = 0.0;
- bufferedWidth = rectWidth * mediaElement->percentLoaded() + thumbWidth;
+ // Preserve old behavior pending resolution of UI design of multiple ranges (see FIXME above).
+ // http://webkit.org/b/85926
+ double fakePercentLoaded = 0;
+ float duration = mediaElement->duration();
+ if (duration && !isinf(duration))
+ fakePercentLoaded = bufferedTimeRanges->end(bufferedTimeRanges->length() - 1, ASSERT_NO_EXCEPTION) / duration;
+ bufferedWidth = rectWidth * fakePercentLoaded + thumbWidth;
}
bufferedRect.setWidth(bufferedWidth);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes