summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-04 09:57:00 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-04 09:57:00 -0700
commitfb386a4cb13329c6a64fd29e134184610c2c3dbc (patch)
tree897e46175feedff85710fd042f47262e6613bb4f /WebCore
parent4423677617c38c5d234aff356cc0e982ac06820c (diff)
parenta169a321cb5da710a16efc56e4186032b8b744c2 (diff)
downloadexternal_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.cpp78
-rw-r--r--WebCore/bindings/v8/custom/V8CustomBinding.h4
-rw-r--r--WebCore/page/Coordinates.idl4
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();