[BlackBerry] remove static_cast which will cause video crash
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 Sep 2012 14:11:48 +0000 (14:11 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 Sep 2012 14:11:48 +0000 (14:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=97070

Patch by Jonathan Dong <jonathan.dong@torchmobile.com.cn> on 2012-09-19
Reviewed by Antonio Gomes.

Removed the static_cast to avoid layering violation which
will cause a runtime crash.
We won't create a real MediaPlayerPrivate object before we call
MediaPlayer::load(), so if we use player()->implementation()
before calling load() in some cases, it points to a
NullMediaPlayerPrivate object. Here we should not use static_cast,
instead we should use HTMLMediaElement::percentLoaded() to
avoid layering violation as we don't have the buffering bug which
the deleted comment refers to.

Internally reviewed by Max Feil.

Test case: media/video-size.html

* platform/blackberry/RenderThemeBlackBerry.cpp:
(WebCore::RenderThemeBlackBerry::paintMediaSliderTrack):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@129001 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp

index df98d84..db627b0 100644 (file)
@@ -1,3 +1,27 @@
+2012-09-19  Jonathan Dong  <jonathan.dong@torchmobile.com.cn>
+
+        [BlackBerry] remove static_cast which will cause video crash
+        https://bugs.webkit.org/show_bug.cgi?id=97070
+
+        Reviewed by Antonio Gomes.
+
+        Removed the static_cast to avoid layering violation which
+        will cause a runtime crash.
+        We won't create a real MediaPlayerPrivate object before we call
+        MediaPlayer::load(), so if we use player()->implementation()
+        before calling load() in some cases, it points to a
+        NullMediaPlayerPrivate object. Here we should not use static_cast,
+        instead we should use HTMLMediaElement::percentLoaded() to
+        avoid layering violation as we don't have the buffering bug which
+        the deleted comment refers to.
+
+        Internally reviewed by Max Feil.
+
+        Test case: media/video-size.html
+
+        * platform/blackberry/RenderThemeBlackBerry.cpp:
+        (WebCore::RenderThemeBlackBerry::paintMediaSliderTrack):
+
 2012-09-19  Rick Byers  <rbyers@chromium.org>
 
         Do touch adjustment on GestureTapDown
index 0688da8..b673af9 100644 (file)
@@ -921,12 +921,7 @@ bool RenderThemeBlackBerry::paintMediaSliderTrack(RenderObject* object, const Pa
         return false;
 
     float fullScreenMultiplier = determineFullScreenMultiplier(mediaElement);
-    float loaded = 0;
-    // FIXME: replace loaded with commented out one when buffer bug is fixed (see comment in
-    // MediaPlayerPrivateMMrenderer::percentLoaded).
-    // loaded = mediaElement->percentLoaded();
-    if (mediaElement->player() && mediaElement->player()->implementation())
-        loaded = static_cast<MediaPlayerPrivate *>(mediaElement->player()->implementation())->percentLoaded();
+    float loaded = mediaElement->percentLoaded();
     float position = mediaElement->duration() > 0 ? (mediaElement->currentTime() / mediaElement->duration()) : 0;
 
     int x = ceil(rect.x() + 2 * fullScreenMultiplier - fullScreenMultiplier / 2);