| OLD | NEW |
| 1 /** | 1 /** |
| 2 * This file is part of the theme implementation for form controls in WebCore. | 2 * This file is part of the theme implementation for form controls in WebCore. |
| 3 * | 3 * |
| 4 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc. | 4 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Computer, Inc. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| 11 * This library is distributed in the hope that it will be useful, | 11 * This library is distributed in the hope that it will be useful, |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 * Library General Public License for more details. | 14 * Library General Public License for more details. |
| 15 * | 15 * |
| 16 * You should have received a copy of the GNU Library General Public License | 16 * You should have received a copy of the GNU Library General Public License |
| 17 * along with this library; see the file COPYING.LIB. If not, write to | 17 * along with this library; see the file COPYING.LIB. If not, write to |
| 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 19 * Boston, MA 02110-1301, USA. | 19 * Boston, MA 02110-1301, USA. |
| 20 */ | 20 */ |
| 21 | 21 |
| 22 #include "config.h" | 22 #include "config.h" |
| 23 #include "core/rendering/RenderTheme.h" | 23 #include "core/rendering/RenderTheme.h" |
| 24 | 24 |
| 25 #include "CSSValueKeywords.h" | 25 #include "CSSValueKeywords.h" |
| 26 #include "HTMLNames.h" | 26 #include "HTMLNames.h" |
| 27 #include "RuntimeEnabledFeatures.h" |
| 27 #include "core/dom/Document.h" | 28 #include "core/dom/Document.h" |
| 29 #include "core/dom/shadow/ElementShadow.h" |
| 28 #include "core/editing/FrameSelection.h" | 30 #include "core/editing/FrameSelection.h" |
| 29 #include "core/fileapi/FileList.h" | 31 #include "core/fileapi/FileList.h" |
| 32 #include "core/html/HTMLCollection.h" |
| 33 #include "core/html/HTMLDataListElement.h" |
| 30 #include "core/html/HTMLInputElement.h" | 34 #include "core/html/HTMLInputElement.h" |
| 31 #include "core/html/HTMLMeterElement.h" | 35 #include "core/html/HTMLMeterElement.h" |
| 36 #include "core/html/HTMLOptionElement.h" |
| 32 #include "core/html/InputTypeNames.h" | 37 #include "core/html/InputTypeNames.h" |
| 38 #include "core/html/parser/HTMLParserIdioms.h" |
| 33 #include "core/html/shadow/MediaControlElements.h" | 39 #include "core/html/shadow/MediaControlElements.h" |
| 34 #include "core/html/shadow/SpinButtonElement.h" | 40 #include "core/html/shadow/SpinButtonElement.h" |
| 35 #include "core/html/shadow/TextControlInnerElements.h" | 41 #include "core/html/shadow/TextControlInnerElements.h" |
| 36 #include "core/page/FocusController.h" | 42 #include "core/page/FocusController.h" |
| 37 #include "core/page/Frame.h" | 43 #include "core/page/Frame.h" |
| 38 #include "core/page/Page.h" | 44 #include "core/page/Page.h" |
| 39 #include "core/page/Settings.h" | 45 #include "core/page/Settings.h" |
| 40 #include "core/platform/FileSystem.h" | 46 #include "core/platform/FileSystem.h" |
| 41 #include "core/platform/FloatConversion.h" | 47 #include "core/platform/FloatConversion.h" |
| 42 #include "core/platform/LocalizedStrings.h" | 48 #include "core/platform/LocalizedStrings.h" |
| 43 #include "core/platform/graphics/FontSelector.h" | 49 #include "core/platform/graphics/FontSelector.h" |
| 44 #include "core/platform/graphics/GraphicsContextStateSaver.h" | 50 #include "core/platform/graphics/GraphicsContextStateSaver.h" |
| 45 #include "core/platform/graphics/StringTruncator.h" | 51 #include "core/platform/graphics/StringTruncator.h" |
| 46 #include "core/rendering/PaintInfo.h" | 52 #include "core/rendering/PaintInfo.h" |
| 47 #include "core/rendering/RenderMeter.h" | 53 #include "core/rendering/RenderMeter.h" |
| 48 #include "core/rendering/RenderView.h" | 54 #include "core/rendering/RenderView.h" |
| 49 #include "core/rendering/style/RenderStyle.h" | 55 #include "core/rendering/style/RenderStyle.h" |
| 50 | 56 |
| 51 #if ENABLE(INPUT_SPEECH) | 57 #if ENABLE(INPUT_SPEECH) |
| 52 #include "core/rendering/RenderInputSpeech.h" | 58 #include "core/rendering/RenderInputSpeech.h" |
| 53 #endif | 59 #endif |
| 54 | 60 |
| 55 #if ENABLE(DATALIST_ELEMENT) | |
| 56 #include "core/dom/shadow/ElementShadow.h" | |
| 57 #include "core/html/HTMLCollection.h" | |
| 58 #include "core/html/HTMLDataListElement.h" | |
| 59 #include "core/html/HTMLOptionElement.h" | |
| 60 #include "core/html/parser/HTMLParserIdioms.h" | |
| 61 #endif | |
| 62 | |
| 63 // The methods in this file are shared by all themes on every platform. | 61 // The methods in this file are shared by all themes on every platform. |
| 64 | 62 |
| 65 namespace WebCore { | 63 namespace WebCore { |
| 66 | 64 |
| 67 using namespace HTMLNames; | 65 using namespace HTMLNames; |
| 68 | 66 |
| 69 static Color& customFocusRingColor() | 67 static Color& customFocusRingColor() |
| 70 { | 68 { |
| 71 DEFINE_STATIC_LOCAL(Color, color, ()); | 69 DEFINE_STATIC_LOCAL(Color, color, ()); |
| 72 return color; | 70 return color; |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 #if ENABLE(INPUT_SPEECH) | 447 #if ENABLE(INPUT_SPEECH) |
| 450 case InputSpeechButtonPart: | 448 case InputSpeechButtonPart: |
| 451 #endif | 449 #endif |
| 452 default: | 450 default: |
| 453 break; | 451 break; |
| 454 } | 452 } |
| 455 | 453 |
| 456 return false; | 454 return false; |
| 457 } | 455 } |
| 458 | 456 |
| 457 String RenderTheme::extraDefaultStyleSheet() |
| 458 { |
| 459 if (!RuntimeEnabledFeatures::dataListElementEnabled()) |
| 460 return String(); |
| 461 DEFINE_STATIC_LOCAL(String, dataListElementCSS, (ASCIILiteral("datalist {dis
play: none ;}"))); |
| 462 |
| 463 #if ENABLE(INPUT_TYPE_COLOR) |
| 464 StringBuilder inputTypeCSS; |
| 465 inputTypeCSS.appendLiteral("input[type=\"color\"][list] { -webkit-appearance
: menulist; width: 88px; height: 23px;}"); |
| 466 inputTypeCSS.appendLiteral("input[type=\"color\"][list]::-webkit-color-swatc
h-wrapper { padding-left: 8px; padding-right: 24px;}"); |
| 467 inputTypeCSS.appendLiteral("input[type=\"color\"][list]::-webkit-color-swatc
h { border-color: #000000;}"); |
| 468 inputTypeCSS.append(dataListElementCSS); |
| 469 return inputTypeCSS.toString(); |
| 470 #endif |
| 471 |
| 472 return dataListElementCSS; |
| 473 } |
| 474 |
| 459 String RenderTheme::formatMediaControlsTime(float time) const | 475 String RenderTheme::formatMediaControlsTime(float time) const |
| 460 { | 476 { |
| 461 if (!std::isfinite(time)) | 477 if (!std::isfinite(time)) |
| 462 time = 0; | 478 time = 0; |
| 463 int seconds = (int)fabsf(time); | 479 int seconds = (int)fabsf(time); |
| 464 int hours = seconds / (60 * 60); | 480 int hours = seconds / (60 * 60); |
| 465 int minutes = (seconds / 60) % 60; | 481 int minutes = (seconds / 60) % 60; |
| 466 seconds %= 60; | 482 seconds %= 60; |
| 467 if (hours) { | 483 if (hours) { |
| 468 if (hours > 9) | 484 if (hours > 9) |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 884 bool RenderTheme::supportsMeter(ControlPart) const | 900 bool RenderTheme::supportsMeter(ControlPart) const |
| 885 { | 901 { |
| 886 return false; | 902 return false; |
| 887 } | 903 } |
| 888 | 904 |
| 889 bool RenderTheme::paintMeter(RenderObject*, const PaintInfo&, const IntRect&) | 905 bool RenderTheme::paintMeter(RenderObject*, const PaintInfo&, const IntRect&) |
| 890 { | 906 { |
| 891 return true; | 907 return true; |
| 892 } | 908 } |
| 893 | 909 |
| 894 #if ENABLE(DATALIST_ELEMENT) | |
| 895 LayoutUnit RenderTheme::sliderTickSnappingThreshold() const | 910 LayoutUnit RenderTheme::sliderTickSnappingThreshold() const |
| 896 { | 911 { |
| 897 return 5; | 912 return 5; |
| 898 } | 913 } |
| 899 | 914 |
| 900 void RenderTheme::paintSliderTicks(RenderObject* o, const PaintInfo& paintInfo,
const IntRect& rect) | 915 void RenderTheme::paintSliderTicks(RenderObject* o, const PaintInfo& paintInfo,
const IntRect& rect) |
| 901 { | 916 { |
| 902 Node* node = o->node(); | 917 Node* node = o->node(); |
| 903 if (!node) | 918 if (!node) |
| 904 return; | 919 return; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 double tickFraction = (parsedValue - min) / (max - min); | 986 double tickFraction = (parsedValue - min) / (max - min); |
| 972 double tickRatio = isHorizontal && o->style()->isLeftToRightDirection()
? tickFraction : 1.0 - tickFraction; | 987 double tickRatio = isHorizontal && o->style()->isLeftToRightDirection()
? tickFraction : 1.0 - tickFraction; |
| 973 double tickPosition = round(tickRegionSideMargin + tickRegionWidth * tic
kRatio); | 988 double tickPosition = round(tickRegionSideMargin + tickRegionWidth * tic
kRatio); |
| 974 if (isHorizontal) | 989 if (isHorizontal) |
| 975 tickRect.setX(tickPosition); | 990 tickRect.setX(tickPosition); |
| 976 else | 991 else |
| 977 tickRect.setY(tickPosition); | 992 tickRect.setY(tickPosition); |
| 978 paintInfo.context->fillRect(tickRect); | 993 paintInfo.context->fillRect(tickRect); |
| 979 } | 994 } |
| 980 } | 995 } |
| 981 #endif | |
| 982 | 996 |
| 983 double RenderTheme::animationRepeatIntervalForProgressBar(RenderProgress*) const | 997 double RenderTheme::animationRepeatIntervalForProgressBar(RenderProgress*) const |
| 984 { | 998 { |
| 985 return 0; | 999 return 0; |
| 986 } | 1000 } |
| 987 | 1001 |
| 988 double RenderTheme::animationDurationForProgressBar(RenderProgress*) const | 1002 double RenderTheme::animationDurationForProgressBar(RenderProgress*) const |
| 989 { | 1003 { |
| 990 return 0; | 1004 return 0; |
| 991 } | 1005 } |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1214 { | 1228 { |
| 1215 return type == InputTypeNames::date() | 1229 return type == InputTypeNames::date() |
| 1216 || type == InputTypeNames::datetime() | 1230 || type == InputTypeNames::datetime() |
| 1217 || type == InputTypeNames::datetimelocal() | 1231 || type == InputTypeNames::datetimelocal() |
| 1218 || type == InputTypeNames::month() | 1232 || type == InputTypeNames::month() |
| 1219 || type == InputTypeNames::week(); | 1233 || type == InputTypeNames::week(); |
| 1220 } | 1234 } |
| 1221 #endif | 1235 #endif |
| 1222 | 1236 |
| 1223 } // namespace WebCore | 1237 } // namespace WebCore |
| OLD | NEW |