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

Reply via email to