Changeset 105036 in webkit


Ignore:
Timestamp:
Jan 15, 2012 11:33:31 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Add DeviceOrientationEvent.absolute
https://bugs.webkit.org/show_bug.cgi?id=51742

Patch by Xinchao He <xinchao.he@intel.com> on 2012-01-15
Reviewed by Darin Fisher.

This patch add the DeviceOrientationEvent.absolute to follow the
latest w3c device orientation event spec.
http://www.w3.org/TR/orientation-event/

Source/WebCore:

  • bindings/js/JSDeviceOrientationEventCustom.cpp:

(WebCore::JSDeviceOrientationEvent::absolute):
(WebCore::JSDeviceOrientationEvent::initDeviceOrientationEvent):

  • bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:

(WebCore::V8DeviceOrientationEvent::absoluteAccessorGetter):
(WebCore::V8DeviceOrientationEvent::initDeviceOrientationEventCallback):

  • dom/DeviceOrientation.cpp:

(WebCore::DeviceOrientation::create):
(WebCore::DeviceOrientation::DeviceOrientation):
(WebCore::DeviceOrientation::absolute):
(WebCore::DeviceOrientation::canProvideAbsolute):

  • dom/DeviceOrientation.h:
  • dom/DeviceOrientationEvent.idl:

Source/WebKit/chromium:

  • public/WebDeviceOrientation.h:

(WebKit::WebDeviceOrientation::WebDeviceOrientation):
(WebKit::WebDeviceOrientation::canProvideAbsolute):
(WebKit::WebDeviceOrientation::absolute):

  • src/WebDeviceOrientation.cpp:

(WebKit::WebDeviceOrientation::WebDeviceOrientation):
(WebKit::WebDeviceOrientation::operator=):
(WebKit::WebDeviceOrientation::operator PassRefPtr<WebCore::DeviceOrientation>):

Location:
trunk/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r105034 r105036  
     12012-01-15  Xinchao He  <xinchao.he@intel.com>
     2
     3        Add DeviceOrientationEvent.absolute
     4        https://bugs.webkit.org/show_bug.cgi?id=51742
     5
     6        Reviewed by Darin Fisher.
     7
     8        This patch add the DeviceOrientationEvent.absolute to follow the
     9        latest w3c device orientation event spec.
     10        http://www.w3.org/TR/orientation-event/
     11
     12
     13        * bindings/js/JSDeviceOrientationEventCustom.cpp:
     14        (WebCore::JSDeviceOrientationEvent::absolute):
     15        (WebCore::JSDeviceOrientationEvent::initDeviceOrientationEvent):
     16        * bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:
     17        (WebCore::V8DeviceOrientationEvent::absoluteAccessorGetter):
     18        (WebCore::V8DeviceOrientationEvent::initDeviceOrientationEventCallback):
     19        * dom/DeviceOrientation.cpp:
     20        (WebCore::DeviceOrientation::create):
     21        (WebCore::DeviceOrientation::DeviceOrientation):
     22        (WebCore::DeviceOrientation::absolute):
     23        (WebCore::DeviceOrientation::canProvideAbsolute):
     24        * dom/DeviceOrientation.h:
     25        * dom/DeviceOrientationEvent.idl:
     26
    1272012-01-15  Luke Macpherson   <macpherson@chromium.org>
    228
  • trunk/Source/WebCore/bindings/js/JSDeviceOrientationEventCustom.cpp

    r95901 r105036  
    6161}
    6262
     63JSValue JSDeviceOrientationEvent::absolute(ExecState*) const
     64{
     65    DeviceOrientationEvent* imp = static_cast<DeviceOrientationEvent*>(impl());
     66    if (!imp->orientation()->canProvideAbsolute())
     67        return jsNull();
     68    return jsBoolean(imp->orientation()->absolute());
     69}
     70
    6371JSValue JSDeviceOrientationEvent::initDeviceOrientationEvent(ExecState* exec)
    6472{
     
    7482    bool gammaProvided = !exec->argument(5).isUndefinedOrNull();
    7583    double gamma = exec->argument(5).toNumber(exec);
    76     RefPtr<DeviceOrientation> orientation = DeviceOrientation::create(alphaProvided, alpha, betaProvided, beta, gammaProvided, gamma);
     84    bool absoluteProvided = !exec->argument(5).isUndefinedOrNull();
     85    bool absolute = exec->argument(6).toBoolean(exec);
     86    RefPtr<DeviceOrientation> orientation = DeviceOrientation::create(alphaProvided, alpha, betaProvided, beta, gammaProvided, gamma, absoluteProvided, absolute);
    7787    DeviceOrientationEvent* imp = static_cast<DeviceOrientationEvent*>(impl());
    7888    imp->initDeviceOrientationEvent(type, bubbles, cancelable, orientation.get());
  • trunk/Source/WebCore/bindings/v8/custom/V8DeviceOrientationEventCustom.cpp

    r95901 r105036  
    6868}
    6969
     70v8::Handle<v8::Value> V8DeviceOrientationEvent::absoluteAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
     71{
     72    INC_STATS("DOM.DeviceOrientationEvent.absolute._get");
     73    v8::Handle<v8::Object> holder = info.Holder();
     74    DeviceOrientationEvent* imp = V8DeviceOrientationEvent::toNative(holder);
     75    if (!imp->orientation()->canProvideAbsolute())
     76        return v8::Null();
     77    return v8::Boolean::New(imp->orientation()->absolute());
     78}
     79
    7080v8::Handle<v8::Value> V8DeviceOrientationEvent::initDeviceOrientationEventCallback(const v8::Arguments& args)
    7181{
     
    7484    bool bubbles = args[1]->BooleanValue();
    7585    bool cancelable = args[2]->BooleanValue();
    76     // If alpha, beta or gamma are null or undefined, mark them as not provided.
     86    // If alpha, beta, gamma or absolute are null or undefined, mark them as not provided.
    7787    // Otherwise, use the standard JavaScript conversion.
    7888    bool alphaProvided = !isUndefinedOrNull(args[3]);
     
    8292    bool gammaProvided = !isUndefinedOrNull(args[5]);
    8393    double gamma = args[5]->NumberValue();
    84     RefPtr<DeviceOrientation> orientation = DeviceOrientation::create(alphaProvided, alpha, betaProvided, beta, gammaProvided, gamma);
     94    bool absoluteProvided = !isUndefinedOrNull(args[6]);
     95    bool absolute = args[6]->BooleanValue();
     96    RefPtr<DeviceOrientation> orientation = DeviceOrientation::create(alphaProvided, alpha, betaProvided, beta, gammaProvided, gamma, absoluteProvided, absolute);
    8597    imp->initDeviceOrientationEvent(type, bubbles, cancelable, orientation.get());
    8698    return v8::Handle<v8::Value>();
  • trunk/Source/WebCore/dom/DeviceOrientation.cpp

    r104734 r105036  
    3434}
    3535
    36 PassRefPtr<DeviceOrientation> DeviceOrientation::create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
     36PassRefPtr<DeviceOrientation> DeviceOrientation::create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute, bool absolute)
    3737{
    38     return adoptRef(new DeviceOrientation(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma));
     38    return adoptRef(new DeviceOrientation(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma, canProvideAbsolute, absolute));
    3939}
    4040
     
    4444    , m_canProvideBeta(false)
    4545    , m_canProvideGamma(false)
     46    , m_canProvideAbsolute(false)
    4647    , m_alpha(0)
    4748    , m_beta(0)
    4849    , m_gamma(0)
     50    , m_absolute(false)
    4951{
    5052}
    5153
    52 DeviceOrientation::DeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
     54DeviceOrientation::DeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute, bool absolute)
    5355    : m_canProvideAlpha(canProvideAlpha)
    5456    , m_canProvideBeta(canProvideBeta)
    5557    , m_canProvideGamma(canProvideGamma)
     58    , m_canProvideAbsolute(canProvideAbsolute)
    5659    , m_alpha(alpha)
    5760    , m_beta(beta)
    5861    , m_gamma(gamma)
     62    , m_absolute(absolute)
    5963{
    6064}
     
    7579}
    7680
     81bool DeviceOrientation::absolute() const
     82{
     83    return m_absolute;
     84}
     85
    7786bool DeviceOrientation::canProvideAlpha() const
    7887{
     
    9099}
    91100
     101bool DeviceOrientation::canProvideAbsolute() const
     102{
     103    return m_canProvideAbsolute;
     104}
     105
    92106} // namespace WebCore
  • trunk/Source/WebCore/dom/DeviceOrientation.h

    r95901 r105036  
    3535public:
    3636    static PassRefPtr<DeviceOrientation> create();
    37     static PassRefPtr<DeviceOrientation> create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
     37    static PassRefPtr<DeviceOrientation> create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute = false, bool absolute = false);
    3838
    3939    double alpha() const;
    4040    double beta() const;
    4141    double gamma() const;
     42    bool absolute() const;
    4243    bool canProvideAlpha() const;
    4344    bool canProvideBeta() const;
    4445    bool canProvideGamma() const;
     46    bool canProvideAbsolute() const;
    4547
    4648private:
    4749    DeviceOrientation();
    48     DeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
     50    DeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute, bool absolute);
    4951
    5052    bool m_canProvideAlpha;
    5153    bool m_canProvideBeta;
    5254    bool m_canProvideGamma;
     55    bool m_canProvideAbsolute;
    5356    double m_alpha;
    5457    double m_beta;
    5558    double m_gamma;
     59    bool m_absolute;
    5660};
    5761
  • trunk/Source/WebCore/dom/DeviceOrientationEvent.idl

    r91617 r105036  
    3232        readonly attribute [Custom] double beta;
    3333        readonly attribute [Custom] double gamma;
     34        readonly attribute [Custom] boolean absolute;
    3435        [Custom] void initDeviceOrientationEvent(in [Optional=CallWithDefaultValue] DOMString type,
    3536                                                 in [Optional=CallWithDefaultValue] boolean bubbles,
     
    3738                                                 in [Optional=CallWithDefaultValue] double alpha,
    3839                                                 in [Optional=CallWithDefaultValue] double beta,
    39                                                  in [Optional=CallWithDefaultValue] double gamma);
     40                                                 in [Optional=CallWithDefaultValue] double gamma,
     41                                                 in [Optional=CallWithDefaultValue] boolean absolute);
    4042    };
    4143
  • trunk/Source/WebKit/chromium/ChangeLog

    r105028 r105036  
     12012-01-15  Xinchao He  <xinchao.he@intel.com>
     2
     3        Add DeviceOrientationEvent.absolute
     4        https://bugs.webkit.org/show_bug.cgi?id=51742
     5
     6        Reviewed by Darin Fisher.
     7
     8        This patch add the DeviceOrientationEvent.absolute to follow the
     9        latest w3c device orientation event spec.
     10        http://www.w3.org/TR/orientation-event/
     11
     12        * public/WebDeviceOrientation.h:
     13        (WebKit::WebDeviceOrientation::WebDeviceOrientation):
     14        (WebKit::WebDeviceOrientation::canProvideAbsolute):
     15        (WebKit::WebDeviceOrientation::absolute):
     16        * src/WebDeviceOrientation.cpp:
     17        (WebKit::WebDeviceOrientation::WebDeviceOrientation):
     18        (WebKit::WebDeviceOrientation::operator=):
     19        (WebKit::WebDeviceOrientation::operator PassRefPtr<WebCore::DeviceOrientation>):
     20
    1212012-01-14  David Levin  <levin@chromium.org>
    222
  • trunk/Source/WebKit/chromium/public/WebDeviceOrientation.h

    r95901 r105036  
    3636class WebDeviceOrientation {
    3737public:
    38     WebDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
     38    WebDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute = false, bool absolute = false)
    3939        : m_isNull(false),
    4040          m_canProvideAlpha(canProvideAlpha),
     
    4343          m_beta(beta),
    4444          m_canProvideGamma(canProvideGamma),
    45           m_gamma(gamma)
     45          m_gamma(gamma),
     46          m_canProvideAbsolute(canProvideAbsolute),
     47          m_absolute(absolute)
    4648    {
    4749    }
     
    5658    bool canProvideGamma() { return m_canProvideGamma; }
    5759    double gamma() { return m_gamma; }
     60    bool canProvideAbsolute() {return m_canProvideAbsolute; }
     61    bool absolute() { return m_absolute; }
    5862
    5963#if WEBKIT_IMPLEMENTATION
     
    7175          m_beta(0),
    7276          m_canProvideGamma(false),
    73           m_gamma(0)
     77          m_gamma(0),
     78          m_canProvideAbsolute(false),
     79          m_absolute(false)
    7480    {
    7581    }
     
    8288    bool m_canProvideGamma;
    8389    double m_gamma;
     90    bool m_canProvideAbsolute;
     91    bool m_absolute;
    8492};
    8593
  • trunk/Source/WebKit/chromium/src/WebDeviceOrientation.cpp

    r95901 r105036  
    4242        m_canProvideGamma = false;
    4343        m_gamma = 0;
     44        m_canProvideAbsolute = false;
     45        m_absolute = false;
    4446        return;
    4547    }
     
    5254    m_canProvideGamma = orientation->canProvideGamma();
    5355    m_gamma = orientation->gamma();
     56    m_canProvideAbsolute = orientation->canProvideAbsolute();
     57    m_absolute = orientation->absolute();
    5458}
    5559
     
    6468        m_canProvideGamma = false;
    6569        m_gamma = 0;
     70        m_canProvideAbsolute = false;
     71        m_absolute = false;
    6672        return *this;
    6773    }
     
    7480    m_canProvideGamma = orientation->canProvideGamma();
    7581    m_gamma = orientation->gamma();
     82    m_canProvideAbsolute = orientation->canProvideAbsolute();
     83    m_absolute = orientation->absolute();
    7684    return *this;
    7785}
     
    8189    if (m_isNull)
    8290        return 0;
    83     return WebCore::DeviceOrientation::create(m_canProvideAlpha, m_alpha, m_canProvideBeta, m_beta, m_canProvideGamma, m_gamma);
     91    return WebCore::DeviceOrientation::create(m_canProvideAlpha, m_alpha, m_canProvideBeta, m_beta, m_canProvideGamma, m_gamma, m_canProvideAbsolute, m_absolute);
    8492}
    8593
Note: See TracChangeset for help on using the changeset viewer.