[webkit-reviews] review denied: [Bug 21475] Provide support for the Geolocation API : [Attachment 24267] updated other build systems
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Fri Oct 10 23:41:19 PDT 2008
Sam Weinig <sam at webkit.org> has denied Greg Bolsinga <bolsinga at apple.com>'s
request for review:
Bug 21475: Provide support for the Geolocation API
https://bugs.webkit.org/show_bug.cgi?id=21475
Attachment 24267: updated other build systems
https://bugs.webkit.org/attachment.cgi?id=24267&action=edit
------- Additional Comments from Sam Weinig <sam at webkit.org>
In addition to the comments we discussed on IRC about abstracting the platform
differences behind an abstraction in WebCore/platform and adding tests, here
are some comments.
I don't think you are using the latest license. We have a two clause version
that correctly identifies Apple as Apple, Inc. in all places. You can find an
example of it in ScrollbarTheme.h.
+ if (exec->hadException()) {
+ m_frame->domWindow()->console()->reportCurrentException(exec);
+
+ raisedException = true;
+ }
Extra newline.
+ virtual void handleEvent(Geoposition*, bool& raisedException);
+private:
+ JSCustomPositionCallback(JSC::JSObject* callback, Frame*);
There should be a newline before private:
+ virtual void handleEvent(PositionError*);
+private:
+ JSCustomPositionErrorCallback(JSC::JSObject* callback, Frame*);
Same here.
+ if (Frame* frame =
toJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame())
+ positionCallback = JSCustomPositionCallback::create(object, frame);
This should probably use the lexicalGlobalObject. I don't think any of the
uses of the dynamic global object are correct in the patch and all should
probably be replaced with use of the lexical one.
+Geolocation::Geolocation(Frame* frame)
+ : m_frame(frame)
+{
+
+}
Extra newline.
+ {
+ GeoNotifierSet::const_iterator end = m_oneShots.end();
The { seems only scope the for loops differently so they can use the same
variable names. I think a better strategy would be to make the names more
verbose (oneShotsEnd, and watchesEnd).
+ void timerFired(Timer<GeoNotifier>* timer);
No need to include parameter name.
+ RefPtr<PositionCallback> m_successCallback;
+ RefPtr<PositionErrorCallback> m_errorCallback;
+ Timer<GeoNotifier> m_timer;
We usually don't line up the variable names like this.
+ static PassRefPtr<Geolocation> create(Frame* frame);
No need to include parameter name.
+ void clearWatch(long watchId);
I think this should be an int. long in IDL translates to int in cpp.
+ void handleNewPosition(PassRefPtr<Geoposition> newPosition);
+ void handleError(PositionError* error);
+ Geolocation(Frame* frame);
+ virtual bool startUpdating(PositionOptions* options) = 0;
No need to include parameter names,
+ typedef HashSet< RefPtr<GeoNotifier> > GeoNotifierSet;
Extra space before RefPtr.
+ typedef HashMap<long, RefPtr<GeoNotifier> > GeoNotifierMap;
Again, probably int instead of long.
+#include <wtf/Platform.h>
+#include <wtf/RefCounted.h>
+#include "PlatformString.h"
These should be sorted.
+ , m_timestamp(timestamp)
+ {}
+
The braces should go on separate lines.
+ unsigned long long timestamp() const { return m_timestamp; }
We typedef DOMTypeStamp in Event.h. You can use that for this.
+ DOMString toString();
Though I did not look at the spec, I suspect this should be [DontEnum].
+#if PLATFORM(IPHONE)
+ if (!m_geolocation)
+ m_geolocation = Geolocation::create(m_frame);
+ return m_geolocation.get();
+#else
+ return NULL;
+#endif
Clearly, +#if PLATFORM(IPHONE) is wrong here. I think we should introduce
ENABLE(GEOLOCATION). Also, the NULL should just be 0. Just returning 0 here
is really not enough because the geolocation property is still enumerable and
will still return true for hasProperty and the corresponding 'geolocation' in
window.navigator feature checks. I agree with Antti (he said this on irc) that
there are good reasons to want to compile this feature to ensure it doesn't die
of code rot, but I think it needs to not be detectable.
It looks like the Geolocation is not getting marked by its parent. I assumed
the JSPluginArray and JSMimeTypeArray are having the same problem, but we
should follow the paradigm set in DOMWindow and add optionalGeolocation methods
and CustomMark to JSNavigator.
+ virtual void handleEvent(Geoposition* position, bool& raisedException)
= 0;
position parameter name is not needed.
+#include <wtf/Platform.h>
+#include <wtf/RefCounted.h>
+#include "PlatformString.h"
Please sort.
+ , m_message(message)
+ {}
+
Braces should go on separate lines.
+ long code() const { return m_code; }
+ void setCode(long code) { m_code = code; }
+ long m_code;
Again, long == int.
More information about the webkit-reviews
mailing list