Remove unnecessary rotation callback
authorSeonae Kim <sunaeluv.kim@samsung.com>
Mon, 22 Apr 2013 11:55:55 +0000 (20:55 +0900)
committerGerrit Code Review <gerrit2@kim11>
Tue, 23 Apr 2013 07:49:55 +0000 (16:49 +0900)
[Title] Remove unnecessary rotation callback
[Issue] N_SE-35415, N_SE-34964, N_SE-35637
[Problem] 1. Lock-up sometimes appears.
       2. When rotated the device, the screen is abnormal.
[Cause] 1. A rotation callback using sensor apis is continously called.
      2. When entered to horizontal fullscreen, a rotation variable is not updated.
[Solution] 1. Removed the code according to rotation
       2. Changed to use the width and height of device not m_rotation

Change-Id: I8639a20811103c10e3bf9bc63aec6a9542a23370

Source/WTF/wtf/Platform.h
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/html/shadow/MediaControlElements.cpp
Source/WebCore/html/shadow/MediaControlRootElement.cpp

index 0e69fd1..1ec61a5 100644 (file)
 #define ENABLE_TIZEN_JPEG_IMAGE_SCALE_DECODING 1 /* Keunyong Lee(ky07.lee@samsung.com) : Scaled decoding Feature for Jpeg Image. Becuase this Feature replace Down Sampling, IMAGE_DECODER_DOWN_SAMPLING should be false when you want to use it. */
 #define ENABLE_TIZEN_REMOVE_DRAWLINE_ANTIALIAS_NONE 1 /* Keunyong Lee(ky07.lee@samsung.com) : Dash/Dot Box border and Text UnderLine display Bug Fix*/
 
-#define ENABLE_TIZEN_DEVICE_ROTATION 1 /* Seonae Kim(sunaeluv.kim@samsung.com) : Manage sensor apis to check device's rotation */
-
 #if ENABLE(TIZEN_WEBKIT2)
 
 #define ENABLE_TIZEN_CONTEXT_MENU_WEBKIT_2 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com), Eunmi Lee(eunmi15.lee@samsung.com) : Support Context Menu for EFL WebKit2 */
index 33930b5..a18a7a3 100755 (executable)
 #include "TizenExtensibleAPI.h"
 #endif
 
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-#include <vconf.h>
-#endif
-
 using namespace std;
 
 namespace WebCore {
@@ -160,20 +156,6 @@ static const char* boolString(bool val)
 static const char* mediaSourceURLProtocol = "x-media-source";
 #endif
 
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-#define RADIAN_VALUE (57.2957)
-
-enum {
-    ROTATE_0,
-    ROTATE_90,
-    ROTATE_180,
-    ROTATE_270,
-    ROTATE_ERROR
-};
-
-int HTMLMediaElement::s_rotation = ROTATE_0;
-#endif
-
 using namespace HTMLNames;
 using namespace std;
 
@@ -308,9 +290,6 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, Document* docum
 
     setHasCustomCallbacks();
     addElementToDocumentMap(this, document);
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-    registerRotationCallback();
-#endif
 }
 
 HTMLMediaElement::~HTMLMediaElement()
@@ -338,94 +317,8 @@ HTMLMediaElement::~HTMLMediaElement()
     m_completelyLoaded = true;
     if (m_player)
         m_player->clearMediaPlayerClient();
-
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-    unregisterRotationCallback();
-#endif
-}
-
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-bool HTMLMediaElement::isHorizontal()
-{
-    return (s_rotation == ROTATE_90 || s_rotation == ROTATE_270) ? true : false;
-}
-
-bool HTMLMediaElement::isVertical()
-{
-    return (s_rotation == ROTATE_0 || s_rotation == ROTATE_180) ? true : false;
 }
 
-void HTMLMediaElement::registerRotationCallback()
-{
-    sensor_create(&m_handle);
-    sensor_accelerometer_set_cb(m_handle, 100, onRotationChanged, this);
-    sensor_start(m_handle, SENSOR_ACCELEROMETER);
-
-    return;
-}
-
-void HTMLMediaElement::unregisterRotationCallback()
-{
-    sensor_accelerometer_unset_cb(m_handle);
-    sensor_stop(m_handle, SENSOR_ACCELEROMETER);
-    sensor_destroy(m_handle);
-
-    return;
-}
-
-int HTMLMediaElement::calcRotation(float x, float y, float z)
-{
-    double atanV, normZ, rawZ;
-    int accTheta, accPitch;
-    int rotation;
-
-    atanV = atan2(y, x);
-    accTheta = static_cast<int>(atanV * (RADIAN_VALUE) + 270) % 360;
-    rawZ = static_cast<double>(z / (0.004 * 9.81));
-
-    if (rawZ > 250)
-        normZ = 1.0;
-    else if (rawZ < -250)
-        normZ = -1.0;
-    else
-        normZ = (static_cast<double>(rawZ)) / 250;
-
-    accPitch = static_cast<int>(acos(normZ) * (RADIAN_VALUE));
-
-    if ((accPitch > 35) && (accPitch < 145)) {
-        if ((accTheta >= 315 && accTheta <= 359) || (accTheta >= 0 && accTheta < 45))
-            rotation = ROTATE_0;
-        else if (accTheta >= 45 && accTheta < 135)
-            rotation = ROTATE_90;
-        else if (accTheta >= 135 && accTheta < 225)
-            rotation = ROTATE_180;
-        else if (accTheta >= 225 && accTheta < 315)
-            rotation = ROTATE_270;
-        else
-            rotation = ROTATE_ERROR;
-    } else
-        rotation = ROTATE_ERROR;
-
-    return rotation;
-}
-
-void HTMLMediaElement::onRotationChanged(uint64_t timeStamp, sensor_data_accuracy_e accuracy, float x, float y, float z, void* userData)
-{
-    HTMLMediaElement* that = static_cast<HTMLMediaElement*>(userData);
-
-    int autoRotation = 0;
-    vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &autoRotation);
-    if (!autoRotation)
-        return;
-
-    int rotation = that->calcRotation(x, y, z);
-    if (rotation == ROTATE_ERROR || rotation == s_rotation)
-        return;
-
-    s_rotation = rotation;
-}
-#endif
-
 void HTMLMediaElement::didMoveToNewDocument(Document* oldDocument)
 {
     if (m_isWaitingUntilMediaCanStart) {
@@ -4201,6 +4094,9 @@ void HTMLMediaElement::enterFullscreen()
 #if ENABLE(FULLSCREEN_API)
     if (document() && document()->settings() && document()->settings()->fullScreenEnabled()) {
         document()->requestFullScreenForElement(this, 0, Document::ExemptIFrameAllowFullScreenRequirement);
+#if ENABLE(TIZEN_FULLSCREEN_API)
+        updateMediaControlsStyle();
+#endif
         return;
     }
 #endif
index 6a2eecb..ff72f46 100755 (executable)
 #include "TextTrackCue.h"
 #endif
 
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-#include <sensors.h>
-#endif
-
 namespace WebCore {
 
 #if ENABLE(WEB_AUDIO)
@@ -341,11 +337,6 @@ public:
     bool suspended() { return m_suspended; }
 #endif
 
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-    static bool isHorizontal();
-    static bool isVertical();
-#endif
-
 #if ENABLE(TIZEN_FULLSCREEN_API)
     void updateMediaControlsStyle();
 #endif
@@ -586,15 +577,6 @@ private:
     bool shouldSuspendMedia();
 #endif
 
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-    static void onRotationChanged(uint64_t timeStamp, sensor_data_accuracy_e accuracy, float x, float y, float z, void* userData);
-
-    void registerRotationCallback();
-    void unregisterRotationCallback();
-
-    int calcRotation(float x, float y, float z);
-#endif
-
     Timer<HTMLMediaElement> m_loadTimer;
     Timer<HTMLMediaElement> m_progressEventTimer;
     Timer<HTMLMediaElement> m_playbackProgressTimer;
@@ -728,10 +710,6 @@ private:
 #if ENABLE(TIZEN_GSTREAMER_VIDEO)
     bool m_suspended;
 #endif
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-    sensor_h m_handle;
-    static int s_rotation;
-#endif
 };
 
 #if ENABLE(VIDEO_TRACK)
index d8f2854..49a302d 100644 (file)
@@ -1098,12 +1098,10 @@ void MediaControlFullscreenButtonElement::defaultEventHandler(Event* event)
             if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == toParentMediaElement(this))
                 document()->webkitCancelFullScreen();
             else {
-#if ENABLE(TIZEN_GSTREAMER_VIDEO)
-                // Scale content with minimum scale value to show control elements properly.
-                FrameView* frameView = document()->frame()->view();
-                frameView->requestVisibleContentRectRestore(IntPoint(), 0.0);
-#endif
                 document()->requestFullScreenForElement(toParentMediaElement(this), 0, Document::ExemptIFrameAllowFullScreenRequirement);
+#if ENABLE(TIZEN_FULLSCREEN_API)
+                toParentMediaElement(this)->updateMediaControlsStyle();
+#endif
             }
         } else
 #endif
index b40b4dc..0fa5022 100644 (file)
@@ -522,12 +522,11 @@ void MediaControlRootElement::updateMediaControlScale()
         return;
 
     double scaleFactor = 1 / document()->page()->chrome()->contentsScaleFactor();
-
-#if ENABLE(TIZEN_DEVICE_ROTATION)
-    Settings* settings = document()->settings();
-    if (settings && settings->deviceWidth() != compareResolution.width())
-        scaleFactor *= (settings->deviceWidth() / static_cast<double>(HTMLMediaElement::isHorizontal() ? compareResolution.height() : compareResolution.width()));
-#endif
+    if (Settings* settings = document()->settings()) {
+        int compareWidth = (settings->deviceWidth() > settings->deviceHeight()) ? compareResolution.height() : compareResolution.width();
+        if (settings->deviceWidth() != compareWidth)
+            scaleFactor *= (settings->deviceWidth() / static_cast<double>(compareWidth));
+    }
 
     m_panel->setInlineStyleProperty(CSSPropertyWebkitTransform, "scale(" + String::number(scaleFactor) + ", " + String::number(scaleFactor) + ")", false);
 }
@@ -558,10 +557,6 @@ void MediaControlRootElement::enteredFullscreen()
         page->chrome()->setCursorHiddenUntilMouseMoves(true);
     }
 
-#if ENABLE(TIZEN_FULLSCREEN_API)
-    updateMediaControlScale();
-#endif
-
 #if !ENABLE(TIZEN_GSTREAMER_VIDEO)
     startHideFullscreenControlsTimer();
 #endif