OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All |
| 6 * rights reserved. |
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) | 8 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) |
8 * Copyright (C) 2009, 2010, 2011, 2012 Google Inc. All rights reserved. | 9 * Copyright (C) 2009, 2010, 2011, 2012 Google Inc. All rights reserved. |
9 * Copyright (C) 2012 Samsung Electronics. All rights reserved. | 10 * Copyright (C) 2012 Samsung Electronics. All rights reserved. |
10 * | 11 * |
11 * This library is free software; you can redistribute it and/or | 12 * This library is free software; you can redistribute it and/or |
12 * modify it under the terms of the GNU Library General Public | 13 * modify it under the terms of the GNU Library General Public |
13 * License as published by the Free Software Foundation; either | 14 * License as published by the Free Software Foundation; either |
14 * version 2 of the License, or (at your option) any later version. | 15 * version 2 of the License, or (at your option) any later version. |
15 * | 16 * |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 return; | 773 return; |
773 } | 774 } |
774 const Decimal current = parseToNumber(element().value(), 0); | 775 const Decimal current = parseToNumber(element().value(), 0); |
775 applyStep(current, n, RejectAny, DispatchNoEvent, exceptionState); | 776 applyStep(current, n, RejectAny, DispatchNoEvent, exceptionState); |
776 } | 777 } |
777 | 778 |
778 void InputType::stepUpFromLayoutObject(int n) { | 779 void InputType::stepUpFromLayoutObject(int n) { |
779 // The only difference from stepUp()/stepDown() is the extra treatment | 780 // The only difference from stepUp()/stepDown() is the extra treatment |
780 // of the current value before applying the step: | 781 // of the current value before applying the step: |
781 // | 782 // |
782 // If the current value is not a number, including empty, the current value is
assumed as 0. | 783 // If the current value is not a number, including empty, the current value is |
| 784 // assumed as 0. |
783 // * If 0 is in-range, and matches to step value | 785 // * If 0 is in-range, and matches to step value |
784 // - The value should be the +step if n > 0 | 786 // - The value should be the +step if n > 0 |
785 // - The value should be the -step if n < 0 | 787 // - The value should be the -step if n < 0 |
786 // If -step or +step is out of range, new value should be 0. | 788 // If -step or +step is out of range, new value should be 0. |
787 // * If 0 is smaller than the minimum value | 789 // * If 0 is smaller than the minimum value |
788 // - The value should be the minimum value for any n | 790 // - The value should be the minimum value for any n |
789 // * If 0 is larger than the maximum value | 791 // * If 0 is larger than the maximum value |
790 // - The value should be the maximum value for any n | 792 // - The value should be the maximum value for any n |
791 // * If 0 is in-range, but not matched to step value | 793 // * If 0 is in-range, but not matched to step value |
792 // - The value should be the larger matched value nearest to 0 if n > 0 | 794 // - The value should be the larger matched value nearest to 0 if n > 0 |
793 // e.g. <input type=number min=-100 step=3> -> 2 | 795 // e.g. <input type=number min=-100 step=3> -> 2 |
794 // - The value should be the smaler matched value nearest to 0 if n < 0 | 796 // - The value should be the smaler matched value nearest to 0 if n < 0 |
795 // e.g. <input type=number min=-100 step=3> -> -1 | 797 // e.g. <input type=number min=-100 step=3> -> -1 |
796 // As for date/datetime-local/month/time/week types, the current value is as
sumed as "the current local date/time". | 798 // As for date/datetime-local/month/time/week types, the current value is |
797 // As for datetime type, the current value is assumed as "the current date/t
ime in UTC". | 799 // assumed as "the current local date/time". |
| 800 // As for datetime type, the current value is assumed as "the current |
| 801 // date/time in UTC". |
798 // If the current value is smaller than the minimum value: | 802 // If the current value is smaller than the minimum value: |
799 // - The value should be the minimum value if n > 0 | 803 // - The value should be the minimum value if n > 0 |
800 // - Nothing should happen if n < 0 | 804 // - Nothing should happen if n < 0 |
801 // If the current value is larger than the maximum value: | 805 // If the current value is larger than the maximum value: |
802 // - The value should be the maximum value if n < 0 | 806 // - The value should be the maximum value if n < 0 |
803 // - Nothing should happen if n > 0 | 807 // - Nothing should happen if n > 0 |
804 // | 808 // |
805 // n is assumed as -n if step < 0. | 809 // n is assumed as -n if step < 0. |
806 | 810 |
807 DCHECK(isSteppable()); | 811 DCHECK(isSteppable()); |
808 if (!isSteppable()) | 812 if (!isSteppable()) |
809 return; | 813 return; |
810 DCHECK(n); | 814 DCHECK(n); |
811 if (!n) | 815 if (!n) |
812 return; | 816 return; |
813 | 817 |
814 StepRange stepRange(createStepRange(AnyIsDefaultStep)); | 818 StepRange stepRange(createStepRange(AnyIsDefaultStep)); |
815 | 819 |
816 // FIXME: Not any changes after stepping, even if it is an invalid value, may
be better. | 820 // FIXME: Not any changes after stepping, even if it is an invalid value, may |
817 // (e.g. Stepping-up for <input type="number" value="foo" step="any" /> => "fo
o") | 821 // be better. |
| 822 // (e.g. Stepping-up for <input type="number" value="foo" step="any" /> => |
| 823 // "foo") |
818 if (!stepRange.hasStep()) | 824 if (!stepRange.hasStep()) |
819 return; | 825 return; |
820 | 826 |
821 EventQueueScope scope; | 827 EventQueueScope scope; |
822 const Decimal step = stepRange.step(); | 828 const Decimal step = stepRange.step(); |
823 | 829 |
824 int sign; | 830 int sign; |
825 if (step > 0) | 831 if (step > 0) |
826 sign = n; | 832 sign = n; |
827 else if (step < 0) | 833 else if (step < 0) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 | 900 |
895 void InputType::addWarningToConsole(const char* messageFormat, | 901 void InputType::addWarningToConsole(const char* messageFormat, |
896 const String& value) const { | 902 const String& value) const { |
897 element().document().addConsoleMessage(ConsoleMessage::create( | 903 element().document().addConsoleMessage(ConsoleMessage::create( |
898 RenderingMessageSource, WarningMessageLevel, | 904 RenderingMessageSource, WarningMessageLevel, |
899 String::format(messageFormat, | 905 String::format(messageFormat, |
900 JSONValue::quoteString(value).utf8().data()))); | 906 JSONValue::quoteString(value).utf8().data()))); |
901 } | 907 } |
902 | 908 |
903 } // namespace blink | 909 } // namespace blink |
OLD | NEW |