Index: Source/bindings/v8/custom/V8WindowCustom.cpp |
diff --git a/Source/bindings/v8/custom/V8WindowCustom.cpp b/Source/bindings/v8/custom/V8WindowCustom.cpp |
index c48591da29c0d977207b8e5c135c7e3115fd4161..006a1398f5660eef5514813d1e28cf28bf3479d3 100644 |
--- a/Source/bindings/v8/custom/V8WindowCustom.cpp |
+++ b/Source/bindings/v8/custom/V8WindowCustom.cpp |
@@ -31,6 +31,7 @@ |
#include "config.h" |
#include "V8Window.h" |
+#include "RuntimeEnabledFeatures.h" |
#include "V8HTMLCollection.h" |
#include "V8Node.h" |
#include "bindings/v8/BindingSecurity.h" |
@@ -386,6 +387,81 @@ void V8Window::openMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) |
v8SetReturnValueFast(info, openedWindow.release(), impl); |
} |
+void V8Window::scrollByMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) |
haraken
2014/01/27 01:44:13
Ditto. Can't you avoid writing custom bindings by
ajuma
2014/01/27 02:07:00
The problem is that specifying that a particular a
haraken
2014/01/27 02:30:48
Probably we want to improve code_generator_v8.pm s
Nils Barth (inactive)
2014/01/27 05:23:45
Ow! (>.<)
That's in principle possible, but would
|
+{ |
+ ExceptionState exceptionState(ExceptionState::ExecutionContext, "scrollBy", "Window", info.Holder(), info.GetIsolate()); |
+ if (UNLIKELY(info.Length() < 2)) { |
+ exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, info.Length())); |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
+ DOMWindow* impl = V8Window::toNative(info.Holder()); |
+ if (!BindingSecurity::shouldAllowAccessToFrame(impl->frame(), exceptionState)) { |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
+ V8TRYCATCH_EXCEPTION_VOID(int, x, toInt32(info[0], exceptionState), exceptionState); |
+ V8TRYCATCH_EXCEPTION_VOID(int, y, toInt32(info[1], exceptionState), exceptionState); |
+ |
+ if (info.Length() >= 3 && RuntimeEnabledFeatures::cssomSmoothScrollEnabled()) { |
+ V8TRYCATCH_VOID(Dictionary, scrollOptions, Dictionary(info[2], info.GetIsolate())); |
+ impl->scrollBy(x, y, scrollOptions, exceptionState); |
+ } else { |
+ impl->scrollBy(x, y, Dictionary(), exceptionState); |
+ } |
+ exceptionState.throwIfNeeded(); |
+} |
+ |
+void V8Window::scrollToMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) |
+{ |
+ ExceptionState exceptionState(ExceptionState::ExecutionContext, "scrollTo", "Window", info.Holder(), info.GetIsolate()); |
+ if (UNLIKELY(info.Length() < 2)) { |
+ exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, info.Length())); |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
+ DOMWindow* impl = V8Window::toNative(info.Holder()); |
+ if (!BindingSecurity::shouldAllowAccessToFrame(impl->frame(), exceptionState)) { |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
+ V8TRYCATCH_EXCEPTION_VOID(int, x, toInt32(info[0], exceptionState), exceptionState); |
+ V8TRYCATCH_EXCEPTION_VOID(int, y, toInt32(info[1], exceptionState), exceptionState); |
+ |
+ if (info.Length() >= 3 && RuntimeEnabledFeatures::cssomSmoothScrollEnabled()) { |
+ V8TRYCATCH_VOID(Dictionary, scrollOptions, Dictionary(info[2], info.GetIsolate())); |
+ impl->scrollTo(x, y, scrollOptions, exceptionState); |
+ } else { |
+ impl->scrollTo(x, y, Dictionary(), exceptionState); |
+ } |
+ exceptionState.throwIfNeeded(); |
+} |
+ |
+void V8Window::scrollMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) |
+{ |
+ ExceptionState exceptionState(ExceptionState::ExecutionContext, "scroll", "Window", info.Holder(), info.GetIsolate()); |
+ if (UNLIKELY(info.Length() < 2)) { |
+ exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(2, info.Length())); |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
+ DOMWindow* impl = V8Window::toNative(info.Holder()); |
+ if (!BindingSecurity::shouldAllowAccessToFrame(impl->frame(), exceptionState)) { |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
+ V8TRYCATCH_EXCEPTION_VOID(int, x, toInt32(info[0], exceptionState), exceptionState); |
+ V8TRYCATCH_EXCEPTION_VOID(int, y, toInt32(info[1], exceptionState), exceptionState); |
+ |
+ if (info.Length() >= 3 && RuntimeEnabledFeatures::cssomSmoothScrollEnabled()) { |
+ V8TRYCATCH_VOID(Dictionary, scrollOptions, Dictionary(info[2], info.GetIsolate())); |
+ impl->scroll(x, y, scrollOptions, exceptionState); |
+ } else { |
+ impl->scroll(x, y, Dictionary(), exceptionState); |
+ } |
+ exceptionState.throwIfNeeded(); |
+} |
+ |
void V8Window::namedPropertyGetterCustom(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info) |
{ |