diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-04 09:57:00 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-04 09:57:00 -0700 |
commit | fb386a4cb13329c6a64fd29e134184610c2c3dbc (patch) | |
tree | 897e46175feedff85710fd042f47262e6613bb4f /WebCore | |
parent | 4423677617c38c5d234aff356cc0e982ac06820c (diff) | |
parent | a169a321cb5da710a16efc56e4186032b8b744c2 (diff) | |
download | external_webkit-fb386a4cb13329c6a64fd29e134184610c2c3dbc.zip external_webkit-fb386a4cb13329c6a64fd29e134184610c2c3dbc.tar.gz external_webkit-fb386a4cb13329c6a64fd29e134184610c2c3dbc.tar.bz2 |
Merge change 23971 into eclair
* changes:
Adds V8 bindings for optional properties of Geolocation Coordinates object.
Diffstat (limited to 'WebCore')
-rw-r--r-- | WebCore/bindings/v8/custom/V8CoordinatesCustom.cpp | 78 | ||||
-rw-r--r-- | WebCore/bindings/v8/custom/V8CustomBinding.h | 4 | ||||
-rw-r--r-- | WebCore/page/Coordinates.idl | 4 |
3 files changed, 83 insertions, 3 deletions
diff --git a/WebCore/bindings/v8/custom/V8CoordinatesCustom.cpp b/WebCore/bindings/v8/custom/V8CoordinatesCustom.cpp new file mode 100644 index 0000000..09522ba --- /dev/null +++ b/WebCore/bindings/v8/custom/V8CoordinatesCustom.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include "V8Coordinates.h" +#include "V8Binding.h" +#include "V8CustomBinding.h" +#include "V8Proxy.h" + +#include "Coordinates.h" + +namespace WebCore { + + ACCESSOR_GETTER(CoordinatesAltitude) { + INC_STATS("DOM.Coordinates.altitude._get"); + v8::Handle<v8::Object> holder = info.Holder(); + Coordinates* imp = V8DOMWrapper::convertToNativeObject<Coordinates>(V8ClassIndex::COORDINATES, holder); + if (!imp->canProvideAltitude()) + return v8::Null(); + return v8::Number::New(imp->altitude()); + } + + ACCESSOR_GETTER(CoordinatesAltitudeAccuracy) { + INC_STATS("DOM.Coordinates.altitudeAccuracy._get"); + v8::Handle<v8::Object> holder = info.Holder(); + Coordinates* imp = V8DOMWrapper::convertToNativeObject<Coordinates>(V8ClassIndex::COORDINATES, holder); + if (!imp->canProvideAltitudeAccuracy()) + return v8::Null(); + return v8::Number::New(imp->altitudeAccuracy()); + } + + ACCESSOR_GETTER(CoordinatesHeading) { + INC_STATS("DOM.Coordinates.heading._get"); + v8::Handle<v8::Object> holder = info.Holder(); + Coordinates* imp = V8DOMWrapper::convertToNativeObject<Coordinates>(V8ClassIndex::COORDINATES, holder); + if (!imp->canProvideHeading()) + return v8::Null(); + return v8::Number::New(imp->heading()); + } + + ACCESSOR_GETTER(CoordinatesSpeed) { + INC_STATS("DOM.Coordinates.speed._get"); + v8::Handle<v8::Object> holder = info.Holder(); + Coordinates* imp = V8DOMWrapper::convertToNativeObject<Coordinates>(V8ClassIndex::COORDINATES, holder); + if (!imp->canProvideSpeed()) + return v8::Null(); + return v8::Number::New(imp->speed()); + } + +} // namespace WebCore diff --git a/WebCore/bindings/v8/custom/V8CustomBinding.h b/WebCore/bindings/v8/custom/V8CustomBinding.h index 60f0d82..22b4a94 100644 --- a/WebCore/bindings/v8/custom/V8CustomBinding.h +++ b/WebCore/bindings/v8/custom/V8CustomBinding.h @@ -523,6 +523,10 @@ namespace WebCore { DECLARE_CALLBACK(GeolocationGetCurrentPosition); DECLARE_CALLBACK(GeolocationWatchPosition); + DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesAltitude); + DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesAltitudeAccuracy); + DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesHeading); + DECLARE_PROPERTY_ACCESSOR_GETTER(CoordinatesSpeed); #undef DECLARE_INDEXED_ACCESS_CHECK #undef DECLARE_NAMED_ACCESS_CHECK diff --git a/WebCore/page/Coordinates.idl b/WebCore/page/Coordinates.idl index 2bdd5e9..f6c82b5 100644 --- a/WebCore/page/Coordinates.idl +++ b/WebCore/page/Coordinates.idl @@ -28,13 +28,11 @@ module core { interface Coordinates { readonly attribute double latitude; readonly attribute double longitude; - readonly attribute double accuracy; -#if !defined(V8_BINDING) readonly attribute [Custom] double altitude; + readonly attribute double accuracy; readonly attribute [Custom] double altitudeAccuracy; readonly attribute [Custom] double heading; readonly attribute [Custom] double speed; -#endif #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT [DontEnum] DOMString toString(); |