| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 | 33 |
| 34 #include "core/html/HTMLInputElement.h" | 34 #include "core/html/HTMLInputElement.h" |
| 35 | 35 |
| 36 #include "bindings/v8/V8Binding.h" | 36 #include "bindings/v8/V8Binding.h" |
| 37 | 37 |
| 38 namespace WebCore { | 38 namespace WebCore { |
| 39 | 39 |
| 40 v8::Handle<v8::Value> V8HTMLInputElement::selectionStartAttrGetterCustom(v8::Loc
al<v8::String> name, const v8::AccessorInfo& info) | 40 v8::Handle<v8::Value> V8HTMLInputElement::selectionStartAttrGetterCustom(v8::Loc
al<v8::String> name, const v8::AccessorInfo& info) |
| 41 { | 41 { |
| 42 v8::Handle<v8::Object> holder = info.Holder(); | 42 v8::Handle<v8::Object> holder = info.Holder(); |
| 43 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 43 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 44 | 44 |
| 45 if (!imp->canHaveSelection()) | 45 if (!imp->canHaveSelection()) |
| 46 return throwTypeError("Accessing selectionStart on an input element that
cannot have a selection.", info.GetIsolate()); | 46 return throwTypeError("Accessing selectionStart on an input element that
cannot have a selection.", info.GetIsolate()); |
| 47 | 47 |
| 48 int v = imp->selectionStart(); | 48 int v = imp->selectionStart(); |
| 49 return v8Integer(v, info.GetIsolate()); | 49 return v8Integer(v, info.GetIsolate()); |
| 50 } | 50 } |
| 51 | 51 |
| 52 void V8HTMLInputElement::selectionStartAttrSetterCustom(v8::Local<v8::String> na
me, v8::Local<v8::Value> value, const v8::AccessorInfo& info) | 52 void V8HTMLInputElement::selectionStartAttrSetterCustom(v8::Local<v8::String> na
me, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| 53 { | 53 { |
| 54 v8::Handle<v8::Object> holder = info.Holder(); | 54 v8::Handle<v8::Object> holder = info.Holder(); |
| 55 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 55 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 56 | 56 |
| 57 if (!imp->canHaveSelection()) { | 57 if (!imp->canHaveSelection()) { |
| 58 throwTypeError("Accessing selectionStart on an input element that cannot
have a selection.", info.GetIsolate()); | 58 throwTypeError("Accessing selectionStart on an input element that cannot
have a selection.", info.GetIsolate()); |
| 59 return; | 59 return; |
| 60 } | 60 } |
| 61 imp->setSelectionStart(value->Int32Value()); | 61 imp->setSelectionStart(value->Int32Value()); |
| 62 } | 62 } |
| 63 | 63 |
| 64 v8::Handle<v8::Value> V8HTMLInputElement::selectionEndAttrGetterCustom(v8::Local
<v8::String> name, const v8::AccessorInfo& info) | 64 v8::Handle<v8::Value> V8HTMLInputElement::selectionEndAttrGetterCustom(v8::Local
<v8::String> name, const v8::AccessorInfo& info) |
| 65 { | 65 { |
| 66 v8::Handle<v8::Object> holder = info.Holder(); | 66 v8::Handle<v8::Object> holder = info.Holder(); |
| 67 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 67 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 68 | 68 |
| 69 if (!imp->canHaveSelection()) | 69 if (!imp->canHaveSelection()) |
| 70 return throwTypeError("Accessing selectionEnd on an input element that c
annot have a selection.", info.GetIsolate()); | 70 return throwTypeError("Accessing selectionEnd on an input element that c
annot have a selection.", info.GetIsolate()); |
| 71 | 71 |
| 72 int v = imp->selectionEnd(); | 72 int v = imp->selectionEnd(); |
| 73 return v8Integer(v, info.GetIsolate()); | 73 return v8Integer(v, info.GetIsolate()); |
| 74 } | 74 } |
| 75 | 75 |
| 76 void V8HTMLInputElement::selectionEndAttrSetterCustom(v8::Local<v8::String> name
, v8::Local<v8::Value> value, const v8::AccessorInfo& info) | 76 void V8HTMLInputElement::selectionEndAttrSetterCustom(v8::Local<v8::String> name
, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| 77 { | 77 { |
| 78 v8::Handle<v8::Object> holder = info.Holder(); | 78 v8::Handle<v8::Object> holder = info.Holder(); |
| 79 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 79 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 80 | 80 |
| 81 if (!imp->canHaveSelection()) { | 81 if (!imp->canHaveSelection()) { |
| 82 throwTypeError("Accessing selectionEnd on an input element that cannot h
ave a selection.", info.GetIsolate()); | 82 throwTypeError("Accessing selectionEnd on an input element that cannot h
ave a selection.", info.GetIsolate()); |
| 83 return; | 83 return; |
| 84 } | 84 } |
| 85 | 85 |
| 86 imp->setSelectionEnd(value->Int32Value()); | 86 imp->setSelectionEnd(value->Int32Value()); |
| 87 } | 87 } |
| 88 | 88 |
| 89 v8::Handle<v8::Value> V8HTMLInputElement::selectionDirectionAttrGetterCustom(v8:
:Local<v8::String> name, const v8::AccessorInfo& info) | 89 v8::Handle<v8::Value> V8HTMLInputElement::selectionDirectionAttrGetterCustom(v8:
:Local<v8::String> name, const v8::AccessorInfo& info) |
| 90 { | 90 { |
| 91 v8::Handle<v8::Object> holder = info.Holder(); | 91 v8::Handle<v8::Object> holder = info.Holder(); |
| 92 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 92 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 93 | 93 |
| 94 if (!imp->canHaveSelection()) | 94 if (!imp->canHaveSelection()) |
| 95 return throwTypeError("Accessing selectionDirection on an input element
that cannot have a selection.", info.GetIsolate()); | 95 return throwTypeError("Accessing selectionDirection on an input element
that cannot have a selection.", info.GetIsolate()); |
| 96 | 96 |
| 97 return v8String(imp->selectionDirection(), info.GetIsolate()); | 97 return v8String(imp->selectionDirection(), info.GetIsolate()); |
| 98 } | 98 } |
| 99 | 99 |
| 100 void V8HTMLInputElement::selectionDirectionAttrSetterCustom(v8::Local<v8::String
> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) | 100 void V8HTMLInputElement::selectionDirectionAttrSetterCustom(v8::Local<v8::String
> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| 101 { | 101 { |
| 102 v8::Handle<v8::Object> holder = info.Holder(); | 102 v8::Handle<v8::Object> holder = info.Holder(); |
| 103 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 103 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 104 | 104 |
| 105 if (!imp->canHaveSelection()) { | 105 if (!imp->canHaveSelection()) { |
| 106 throwTypeError("Accessing selectionDirection on an input element that ca
nnot have a selection.", info.GetIsolate()); | 106 throwTypeError("Accessing selectionDirection on an input element that ca
nnot have a selection.", info.GetIsolate()); |
| 107 return; | 107 return; |
| 108 } | 108 } |
| 109 | 109 |
| 110 imp->setSelectionDirection(toWebCoreString(value)); | 110 imp->setSelectionDirection(toWebCoreString(value)); |
| 111 } | 111 } |
| 112 | 112 |
| 113 v8::Handle<v8::Value> V8HTMLInputElement::setSelectionRangeMethodCustom(const v8
::Arguments& args) | 113 v8::Handle<v8::Value> V8HTMLInputElement::setSelectionRangeMethodCustom(const v8
::Arguments& args) |
| 114 { | 114 { |
| 115 v8::Handle<v8::Object> holder = args.Holder(); | 115 v8::Handle<v8::Object> holder = args.Holder(); |
| 116 HTMLInputElement* imp = V8HTMLInputElement::toNative(holder); | 116 Handle<HTMLInputElement> imp = adoptRawResult(V8HTMLInputElement::toNative(h
older)); |
| 117 | 117 |
| 118 if (!imp->canHaveSelection()) | 118 if (!imp->canHaveSelection()) |
| 119 return throwTypeError("Calling setSelectionRange on an input element tha
t cannot have a selection.", args.GetIsolate()); | 119 return throwTypeError("Calling setSelectionRange on an input element tha
t cannot have a selection.", args.GetIsolate()); |
| 120 | 120 |
| 121 int start = args[0]->Int32Value(); | 121 int start = args[0]->Int32Value(); |
| 122 int end = args[1]->Int32Value(); | 122 int end = args[1]->Int32Value(); |
| 123 String direction = toWebCoreString(args[2]); | 123 String direction = toWebCoreString(args[2]); |
| 124 | 124 |
| 125 imp->setSelectionRange(start, end, direction); | 125 imp->setSelectionRange(start, end, direction); |
| 126 return v8::Undefined(); | 126 return v8::Undefined(); |
| 127 } | 127 } |
| 128 | 128 |
| 129 } // namespace WebCore | 129 } // namespace WebCore |
| OLD | NEW |