Diff
Modified: trunk/Source/WebCore/ChangeLog (92698 => 92699)
--- trunk/Source/WebCore/ChangeLog 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebCore/ChangeLog 2011-08-09 19:42:26 UTC (rev 92699)
@@ -1,3 +1,18 @@
+2011-08-09 Alexei Svitkine <asvitk...@chromium.org>
+
+ [Chromium] Enable rubber banding when scrolling.
+
+ https://bugs.webkit.org/show_bug.cgi?id=65707
+
+ Reviewed by Dimitri Glazkov.
+
+ No new tests since this is just syncing changes to chromium platform.
+
+ * platform/PlatformWheelEvent.h:
+ (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+ * platform/chromium/ScrollAnimatorChromiumMac.mm:
+ (WebCore::ScrollAnimatorChromiumMac::handleGestureEvent):
+
2011-08-09 Vsevolod Vlasov <vse...@chromium.org>
Web Inspector: XHRs end up in the resources panel.
Modified: trunk/Source/WebCore/platform/PlatformWheelEvent.h (92698 => 92699)
--- trunk/Source/WebCore/platform/PlatformWheelEvent.h 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebCore/platform/PlatformWheelEvent.h 2011-08-09 19:42:26 UTC (rev 92699)
@@ -73,7 +73,7 @@
ScrollByPixelWheelEvent
};
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))
enum PlatformWheelEventPhase {
PlatformWheelEventPhaseNone = 0,
PlatformWheelEventPhaseBegan = 1 << 1,
@@ -97,7 +97,7 @@
, m_ctrlKey(false)
, m_altKey(false)
, m_metaKey(false)
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))
, m_hasPreciseScrollingDeltas(false)
, m_phase(PlatformWheelEventPhaseNone)
, m_momentumPhase(PlatformWheelEventPhaseNone)
@@ -119,7 +119,7 @@
, m_ctrlKey(ctrlKey)
, m_altKey(altKey)
, m_metaKey(metaKey)
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))
, m_hasPreciseScrollingDeltas(false)
, m_phase(PlatformWheelEventPhaseNone)
, m_momentumPhase(PlatformWheelEventPhaseNone)
@@ -174,7 +174,9 @@
#if defined(__OBJC__)
PlatformWheelEvent(NSEvent *, NSView *windowView);
#endif
+#endif
+#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))
PlatformWheelEventPhase phase() const { return m_phase; }
PlatformWheelEventPhase momentumPhase() const { return m_momentumPhase; }
bool hasPreciseScrollingDeltas() const { return m_hasPreciseScrollingDeltas; }
@@ -213,7 +215,7 @@
bool m_ctrlKey;
bool m_altKey;
bool m_metaKey;
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) || (PLATFORM(CHROMIUM) && OS(DARWIN))
bool m_hasPreciseScrollingDeltas;
PlatformWheelEventPhase m_phase;
PlatformWheelEventPhase m_momentumPhase;
Modified: trunk/Source/WebCore/platform/chromium/ScrollAnimatorChromiumMac.mm (92698 => 92699)
--- trunk/Source/WebCore/platform/chromium/ScrollAnimatorChromiumMac.mm 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebCore/platform/chromium/ScrollAnimatorChromiumMac.mm 2011-08-09 19:42:26 UTC (rev 92699)
@@ -852,7 +852,7 @@
{
if (gestureEvent.type() == PlatformGestureEvent::ScrollBeginType)
beginScrollGesture();
- else
+ else if (gestureEvent.type() == PlatformGestureEvent::ScrollEndType)
endScrollGesture();
}
Modified: trunk/Source/WebKit/chromium/ChangeLog (92698 => 92699)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-08-09 19:42:26 UTC (rev 92699)
@@ -1,3 +1,36 @@
+2011-08-09 Alexei Svitkine <asvitk...@chromium.org>
+
+ [Chromium] Enable rubber banding when scrolling.
+
+ https://bugs.webkit.org/show_bug.cgi?id=65707
+
+ Reviewed by Dimitri Glazkov.
+
+ * features.gypi:
+ * public/WebInputEvent.h:
+ (WebKit::WebMouseWheelEvent::WebMouseWheelEvent):
+ (WebKit::WebGestureEvent::WebGestureEvent):
+ * public/mac/WebInputEventFactory.h:
+ * src/WebInputEventConversion.cpp:
+ (WebKit::PlatformWheelEventBuilder::PlatformWheelEventBuilder):
+ (WebKit::PlatformGestureEventBuilder::PlatformGestureEventBuilder):
+ * src/WebInputEventConversion.h:
+ * src/WebPopupMenuImpl.cpp:
+ (WebKit::WebPopupMenuImpl::GestureEvent):
+ (WebKit::WebPopupMenuImpl::handleInputEvent):
+ * src/WebPopupMenuImpl.h:
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::gestureEvent):
+ (WebKit::WebViewImpl::handleInputEvent):
+ * src/WebViewImpl.h:
+ * src/mac/WebInputEventFactory.mm:
+ (WebKit::gestureEventTypeForEvent):
+ (WebKit::phaseForNSEventPhase):
+ (WebKit::phaseForEvent):
+ (WebKit::momentumPhaseForEvent):
+ (WebKit::WebInputEventFactory::mouseWheelEvent):
+ (WebKit::WebInputEventFactory::gestureEvent):
+
2011-08-09 Dmitry Lomov <dslo...@google.com>
https://bugs.webkit.org/show_bug.cgi?id=65778
Modified: trunk/Source/WebKit/chromium/features.gypi (92698 => 92699)
--- trunk/Source/WebKit/chromium/features.gypi 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/features.gypi 2011-08-09 19:42:26 UTC (rev 92699)
@@ -153,6 +153,7 @@
}],
['OS=="mac"', {
'feature_defines': [
+ 'ENABLE_RUBBER_BANDING=1',
'WTF_USE_SKIA_ON_MAC_CHROMIUM=<(use_skia)',
],
}],
Modified: trunk/Source/WebKit/chromium/public/WebInputEvent.h (92698 => 92699)
--- trunk/Source/WebKit/chromium/public/WebInputEvent.h 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/public/WebInputEvent.h 2011-08-09 19:42:26 UTC (rev 92699)
@@ -100,6 +100,10 @@
KeyUp,
Char,
+ // WebGestureEvent
+ GestureScrollBegin,
+ GestureScrollEnd,
+
// WebTouchEvent
TouchStart,
TouchMove,
@@ -279,6 +283,15 @@
class WebMouseWheelEvent : public WebMouseEvent {
public:
+ enum Phase {
+ PhaseNone = 0,
+ PhaseBegan = 1 << 1,
+ PhaseStationary = 1 << 2,
+ PhaseChanged = 1 << 3,
+ PhaseEnded = 1 << 4,
+ PhaseCancelled = 1 << 5,
+ };
+
float deltaX;
float deltaY;
float wheelTicksX;
@@ -290,6 +303,10 @@
// transfering it over the wire.
int scrollByPage;
+ bool hasPreciseScrollingDeltas;
+ Phase phase;
+ Phase momentumPhase;
+
WebMouseWheelEvent(unsigned sizeParam = sizeof(WebMouseWheelEvent))
: WebMouseEvent(sizeParam)
, deltaX(0.0f)
@@ -297,10 +314,31 @@
, wheelTicksX(0.0f)
, wheelTicksY(0.0f)
, scrollByPage(false)
+ , hasPreciseScrollingDeltas(false)
+ , phase(PhaseNone)
+ , momentumPhase(PhaseNone)
{
}
};
+// WebGestureEvent --------------------------------------------------------------
+
+class WebGestureEvent : public WebInputEvent {
+public:
+ int x;
+ int y;
+ int globalX;
+ int globalY;
+
+ WebGestureEvent(unsigned sizeParam = sizeof(WebGestureEvent))
+ : x(0)
+ , y(0)
+ , globalX(0)
+ , globalY(0)
+ {
+ }
+};
+
// WebTouchEvent --------------------------------------------------------------
class WebTouchEvent : public WebInputEvent {
Modified: trunk/Source/WebKit/chromium/public/mac/WebInputEventFactory.h (92698 => 92699)
--- trunk/Source/WebKit/chromium/public/mac/WebInputEventFactory.h 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/public/mac/WebInputEventFactory.h 2011-08-09 19:42:26 UTC (rev 92699)
@@ -46,6 +46,7 @@
class WebKeyboardEvent;
class WebMouseEvent;
class WebMouseWheelEvent;
+class WebGestureEvent;
class WebInputEventFactory {
public:
@@ -53,6 +54,7 @@
WEBKIT_EXPORT static WebKeyboardEvent keyboardEvent(wchar_t character, int modifiers, double timeStampSeconds);
WEBKIT_EXPORT static WebMouseEvent mouseEvent(NSEvent*, NSView*);
WEBKIT_EXPORT static WebMouseWheelEvent mouseWheelEvent(NSEvent*, NSView*);
+ WEBKIT_EXPORT static WebGestureEvent gestureEvent(NSEvent *, NSView *);
};
} // namespace WebKit
Modified: trunk/Source/WebKit/chromium/src/WebInputEventConversion.cpp (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/WebInputEventConversion.cpp 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/WebInputEventConversion.cpp 2011-08-09 19:42:26 UTC (rev 92699)
@@ -100,8 +100,39 @@
m_ctrlKey = (e.modifiers & WebInputEvent::ControlKey);
m_altKey = (e.modifiers & WebInputEvent::AltKey);
m_metaKey = (e.modifiers & WebInputEvent::MetaKey);
+#if OS(DARWIN)
+ m_hasPreciseScrollingDeltas = e.hasPreciseScrollingDeltas;
+ m_phase = static_cast<WebCore::PlatformWheelEventPhase>(e.phase);
+ m_momentumPhase = static_cast<WebCore::PlatformWheelEventPhase>(e.momentumPhase);
+ m_timestamp = e.timeStampSeconds;
+#endif
}
+// PlatformGestureEventBuilder --------------------------------------------------
+
+#if ENABLE(GESTURE_EVENTS)
+PlatformGestureEventBuilder::PlatformGestureEventBuilder(Widget* widget, const WebGestureEvent& e)
+{
+ switch (e.type) {
+ case WebInputEvent::GestureScrollBegin:
+ m_type = PlatformGestureEvent::ScrollBeginType;
+ break;
+ case WebInputEvent::GestureScrollEnd:
+ m_type = PlatformGestureEvent::ScrollEndType;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ }
+ m_position = widget->convertFromContainingWindow(IntPoint(e.x, e.y));
+ m_globalPosition = IntPoint(e.globalX, e.globalY);
+ m_timestamp = e.timeStampSeconds;
+ m_shiftKey = (e.modifiers & WebInputEvent::ShiftKey);
+ m_ctrlKey = (e.modifiers & WebInputEvent::ControlKey);
+ m_altKey = (e.modifiers & WebInputEvent::AltKey);
+ m_metaKey = (e.modifiers & WebInputEvent::MetaKey);
+}
+#endif
+
// MakePlatformKeyboardEvent --------------------------------------------------
static inline PlatformKeyboardEvent::Type toPlatformKeyboardEventType(WebInputEvent::Type type)
Modified: trunk/Source/WebKit/chromium/src/WebInputEventConversion.h (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/WebInputEventConversion.h 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/WebInputEventConversion.h 2011-08-09 19:42:26 UTC (rev 92699)
@@ -31,12 +31,12 @@
#ifndef WebInputEventConversion_h
#define WebInputEventConversion_h
-#include "WebInputEvent.h"
-
+#include "PlatformGestureEvent.h"
#include "PlatformKeyboardEvent.h"
#include "PlatformMouseEvent.h"
#include "PlatformTouchEvent.h"
#include "PlatformWheelEvent.h"
+#include "WebInputEvent.h"
namespace WebCore {
class KeyboardEvent;
@@ -51,6 +51,7 @@
class WebMouseEvent;
class WebMouseWheelEvent;
class WebKeyboardEvent;
+class WebGestureEvent;
// These classes are used to convert from WebInputEvent subclasses to
// corresponding WebCore events.
@@ -65,6 +66,13 @@
PlatformWheelEventBuilder(WebCore::Widget*, const WebMouseWheelEvent&);
};
+#if ENABLE(GESTURE_EVENTS)
+class PlatformGestureEventBuilder : public WebCore::PlatformGestureEvent {
+public:
+ PlatformGestureEventBuilder(WebCore::Widget*, const WebGestureEvent&);
+};
+#endif
+
class PlatformKeyboardEventBuilder : public WebCore::PlatformKeyboardEvent {
public:
PlatformKeyboardEventBuilder(const WebKeyboardEvent&);
Modified: trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.cpp (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.cpp 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.cpp 2011-08-09 19:42:26 UTC (rev 92699)
@@ -133,6 +133,11 @@
m_widget->handleWheelEvent(PlatformWheelEventBuilder(m_widget, event));
}
+bool WebPopupMenuImpl::GestureEvent(const WebGestureEvent& event)
+{
+ return m_widget->handleGestureEvent(PlatformGestureEventBuilder(m_widget, event));
+}
+
#if ENABLE(TOUCH_EVENTS)
bool WebPopupMenuImpl::TouchEvent(const WebTouchEvent& event)
{
@@ -266,6 +271,10 @@
case WebInputEvent::TouchCancel:
return TouchEvent(*static_cast<const WebTouchEvent*>(&inputEvent));
+ case WebInputEvent::GestureScrollBegin:
+ case WebInputEvent::GestureScrollEnd:
+ return GestureEvent(*static_cast<const WebGestureEvent*>(&inputEvent));
+
case WebInputEvent::Undefined:
case WebInputEvent::MouseEnter:
case WebInputEvent::ContextMenu:
Modified: trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.h (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.h 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/WebPopupMenuImpl.h 2011-08-09 19:42:26 UTC (rev 92699)
@@ -52,6 +52,7 @@
}
namespace WebKit {
+class WebGestureEvent;
class WebKeyboardEvent;
class WebMouseEvent;
class WebMouseWheelEvent;
@@ -104,6 +105,7 @@
void MouseUp(const WebMouseEvent&);
void MouseDoubleClick(const WebMouseEvent&);
void MouseWheel(const WebMouseWheelEvent&);
+ bool GestureEvent(const WebGestureEvent&);
bool TouchEvent(const WebTouchEvent&);
bool KeyEvent(const WebKeyboardEvent&);
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2011-08-09 19:42:26 UTC (rev 92699)
@@ -603,6 +603,14 @@
return mainFrameImpl()->frame()->eventHandler()->handleWheelEvent(platformEvent);
}
+#if ENABLE(GESTURE_EVENTS)
+bool WebViewImpl::gestureEvent(const WebGestureEvent& event)
+{
+ PlatformGestureEventBuilder platformEvent(mainFrameImpl()->frameView(), event);
+ return mainFrameImpl()->frame()->eventHandler()->handleGestureEvent(platformEvent);
+}
+#endif
+
bool WebViewImpl::keyEvent(const WebKeyboardEvent& event)
{
ASSERT((event.type == WebInputEvent::RawKeyDown)
@@ -1280,6 +1288,13 @@
handled = charEvent(*static_cast<const WebKeyboardEvent*>(&inputEvent));
break;
+#if ENABLE(GESTURE_EVENTS)
+ case WebInputEvent::GestureScrollBegin:
+ case WebInputEvent::GestureScrollEnd:
+ handled = gestureEvent(*static_cast<const WebGestureEvent*>(&inputEvent));
+ break;
+#endif
+
#if ENABLE(TOUCH_EVENTS)
case WebInputEvent::TouchStart:
case WebInputEvent::TouchMove:
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.h (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.h 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.h 2011-08-09 19:42:26 UTC (rev 92699)
@@ -84,6 +84,7 @@
class WebDevToolsAgentClient;
class WebDevToolsAgentPrivate;
class WebFrameImpl;
+class WebGestureEvent;
class WebImage;
class WebKeyboardEvent;
class WebMouseEvent;
@@ -277,6 +278,7 @@
void mouseContextMenu(const WebMouseEvent&);
void mouseDoubleClick(const WebMouseEvent&);
bool mouseWheel(const WebMouseWheelEvent&);
+ bool gestureEvent(const WebGestureEvent&);
bool keyEvent(const WebKeyboardEvent&);
bool charEvent(const WebKeyboardEvent&);
bool touchEvent(const WebTouchEvent&);
Modified: trunk/Source/WebKit/chromium/src/mac/WebInputEventFactory.mm (92698 => 92699)
--- trunk/Source/WebKit/chromium/src/mac/WebInputEventFactory.mm 2011-08-09 19:29:21 UTC (rev 92698)
+++ trunk/Source/WebKit/chromium/src/mac/WebInputEventFactory.mm 2011-08-09 19:42:26 UTC (rev 92699)
@@ -34,6 +34,37 @@
#include "WebInputEvent.h"
#include <wtf/ASCIICType.h>
+#if BUILDING_ON_LEOPARD || BUILDING_ON_SNOW_LEOPARD
+
+// Additional Lion APIs.
+enum {
+ NSEventPhaseNone = 0,
+ NSEventPhaseBegan = 0x1 << 0,
+ NSEventPhaseStationary = 0x1 << 1,
+ NSEventPhaseChanged = 0x1 << 2,
+ NSEventPhaseEnded = 0x1 << 3,
+ NSEventPhaseCancelled = 0x1 << 4
+};
+typedef NSUInteger NSEventPhase;
+
+@interface NSEvent (LionSDKDeclarations)
+- (NSEventPhase)phase;
+- (NSEventPhase)momentumPhase;
+@end
+
+#endif // BUILDING_ON_LEOPARD || BUILDING_ON_SNOW_LEOPARD
+
+#if BUILDING_ON_LEOPARD
+
+// These are not defined in the 10.5 SDK but are defined in later SDKs inside
+// a MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 #ifdef.
+enum {
+ NSEventTypeBeginGesture = 19,
+ NSEventTypeEndGesture = 20
+};
+
+#endif // BUILDING_ON_LEOPARD
+
namespace WebKit {
// WebKeyboardEvent -----------------------------------------------------------
@@ -149,6 +180,19 @@
return WebCore::windowsKeyCodeForKeyCode([event keyCode]);
}
+static WebInputEvent::Type gestureEventTypeForEvent(NSEvent *event)
+{
+ switch ([event type]) {
+ case NSEventTypeBeginGesture:
+ return WebInputEvent::GestureScrollBegin;
+ case NSEventTypeEndGesture:
+ return WebInputEvent::GestureScrollEnd;
+ default:
+ ASSERT_NOT_REACHED();
+ return WebInputEvent::GestureScrollEnd;
+ }
+}
+
static inline NSString* textFromEvent(NSEvent* event)
{
if ([event type] == NSFlagsChanged)
@@ -707,6 +751,40 @@
// WebMouseWheelEvent ---------------------------------------------------------
+static WebMouseWheelEvent::Phase phaseForNSEventPhase(NSEventPhase eventPhase)
+{
+ uint32_t phase = WebMouseWheelEvent::PhaseNone;
+ if (eventPhase & NSEventPhaseBegan)
+ phase |= WebMouseWheelEvent::PhaseBegan;
+ if (eventPhase & NSEventPhaseStationary)
+ phase |= WebMouseWheelEvent::PhaseStationary;
+ if (eventPhase & NSEventPhaseChanged)
+ phase |= WebMouseWheelEvent::PhaseChanged;
+ if (eventPhase & NSEventPhaseEnded)
+ phase |= WebMouseWheelEvent::PhaseEnded;
+ if (eventPhase & NSEventPhaseCancelled)
+ phase |= WebMouseWheelEvent::PhaseCancelled;
+ return static_cast<WebMouseWheelEvent::Phase>(phase);
+}
+
+static WebMouseWheelEvent::Phase phaseForEvent(NSEvent *event)
+{
+ if (![event respondsToSelector:@selector(phase)])
+ return WebMouseWheelEvent::PhaseNone;
+
+ NSEventPhase eventPhase = [event phase];
+ return phaseForNSEventPhase(eventPhase);
+}
+
+static WebMouseWheelEvent::Phase momentumPhaseForEvent(NSEvent *event)
+{
+ if (![event respondsToSelector:@selector(momentumPhase)])
+ return WebMouseWheelEvent::PhaseNone;
+
+ NSEventPhase eventMomentumPhase = [event momentumPhase];
+ return phaseForNSEventPhase(eventMomentumPhase);
+}
+
WebMouseWheelEvent WebInputEventFactory::mouseWheelEvent(NSEvent* event, NSView* view)
{
WebMouseWheelEvent result;
@@ -838,6 +916,7 @@
result.deltaY = CGEventGetIntegerValueField(cgEvent, kCGScrollWheelEventPointDeltaAxis1);
result.wheelTicksX = result.deltaX / scrollbarPixelsPerCocoaTick;
result.wheelTicksY = result.deltaY / scrollbarPixelsPerCocoaTick;
+ result.hasPreciseScrollingDeltas = true;
} else {
result.deltaX = [event deltaX] * scrollbarPixelsPerCocoaTick;
result.deltaY = [event deltaY] * scrollbarPixelsPerCocoaTick;
@@ -847,7 +926,30 @@
result.timeStampSeconds = [event timestamp];
+ result.phase = phaseForEvent(event);
+ result.momentumPhase = momentumPhaseForEvent(event);
+
return result;
}
+WebGestureEvent WebInputEventFactory::gestureEvent(NSEvent *event, NSView *view)
+{
+ WebGestureEvent result;
+
+ // Use a temporary WebMouseEvent to get the location.
+ WebMouseEvent temp;
+
+ setWebEventLocationFromEventInView(&temp, event, view);
+ result.x = temp.x;
+ result.y = temp.y;
+ result.globalX = temp.globalX;
+ result.globalY = temp.globalY;
+
+ result.type = gestureEventTypeForEvent(event);
+ result.modifiers = modifiersFromEvent(event);
+ result.timeStampSeconds = [event timestamp];
+
+ return result;
+}
+
} // namespace WebKit