18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This file is part of the theme implementation for form controls in WebCore. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Computer, Inc. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderTheme_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderTheme_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if USE(NEW_THEME) 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Theme.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ThemeTypes.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "RenderObject.h" 328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "ScrollTypes.h" 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/PassRefPtr.h> 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/RefCounted.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Element; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass PopupMenu; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderMenuList; 41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if ENABLE(METER_TAG) 42545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass RenderMeter; 43545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PROGRESS_TAG) 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass RenderProgress; 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSStyleSheet; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass RenderTheme : public RefCounted<RenderTheme> { 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprotected: 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RenderTheme(); 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic: 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~RenderTheme() { } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // This function is to be implemented in your platform-specific theme implementation to hand back the 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // appropriate platform theme. When the theme is needed in non-page dependent code, a default theme is 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // used as fallback, which is returned for a nulled page, so the platform code needs to account for this. 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static PassRefPtr<RenderTheme> themeForPage(Page* page); 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // When the theme is needed in non-page dependent code, the defaultTheme() is used as fallback. 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static inline PassRefPtr<RenderTheme> defaultTheme() 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return themeForPage(0); 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // This method is called whenever style has been computed for an element and the appearance 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // property has been set to a value other than "none". The theme should map in all of the appropriate 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // metrics and defaults given the contents of the style. This includes sophisticated operations like 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // selection of control size based off the font, the disabling of appearance when certain other properties like 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // "border" are set, or if the appearance is not supported by the theme. 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void adjustStyle(CSSStyleSelector*, RenderStyle*, Element*, bool UAHasAppearance, 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const BorderData&, const FillLayer&, const Color& backgroundColor); 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // This method is called to paint the widget as a background of the RenderObject. A widget's foreground, e.g., the 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // text of a button, is always rendered by the engine itself. The boolean return value indicates 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // whether the CSS border/background should also be painted. 78ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool paint(RenderObject*, const PaintInfo&, const IntRect&); 79ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool paintBorderOnly(RenderObject*, const PaintInfo&, const IntRect&); 80ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block bool paintDecorations(RenderObject*, const PaintInfo&, const IntRect&); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The remaining methods should be implemented by the platform-specific portion of the theme, e.g., 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // RenderThemeMac.cpp for Mac OS X. 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // These methods return the theme's extra style sheets rules, to let each platform 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // adjust the default CSS rules in html.css, quirks.css, or mediaControls.css 87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual String extraDefaultStyleSheet() { return String(); } 88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual String extraQuirksStyleSheet() { return String(); } 89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(VIDEO) 90635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual String extraMediaControlsStyleSheet() { return String(); }; 912bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 922bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual String extraFullScreenStyleSheet() { return String(); }; 932bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 94635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A method to obtain the baseline position for a "leaf" control. This will only be used if a baseline 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // position cannot be determined by examining child content. Checkboxes and radio buttons are examples of 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // controls that need to do this. 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int baselinePosition(const RenderObject*) const; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A method for asking if a control is a container or not. Leaf controls have to have some special behavior (like 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // the baseline position API above). 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isControlContainer(ControlPart) const; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A method asking if the control changes its tint when the window has focus or not. 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool controlSupportsTints(const RenderObject*) const { return false; } 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Whether or not the control has been styled enough by the author to disable the native appearance. 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool isControlStyled(const RenderStyle*, const BorderData&, const FillLayer&, const Color& backgroundColor) const; 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A general method asking if any control tinting is supported at all. 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool supportsControlTints() const { return false; } 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Some controls may spill out of their containers (e.g., the check on an OS X checkbox). When these controls repaint, 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // the theme needs to communicate this inflated rect to the engine so that it can invalidate the whole control. 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustRepaintRect(const RenderObject*, IntRect&); 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // This method is called whenever a relevant state changes on a particular themed object, e.g., the mouse becomes pressed 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // or a control becomes disabled. 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool stateChanged(RenderObject*, ControlState) const; 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // This method is called whenever the theme changes on the system in order to flush cached resources from the 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // old theme. 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void themeChanged() { } 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A method asking if the theme is able to draw the focus ring. 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool supportsFocusRing(const RenderStyle*) const; 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // A method asking if the theme's controls actually care about redrawing when hovered. 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool supportsHover(const RenderStyle*) const { return false; } 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 132635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Text selection colors. 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Color activeSelectionBackgroundColor() const; 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Color inactiveSelectionBackgroundColor() const; 135635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Color activeSelectionForegroundColor() const; 136635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Color inactiveSelectionForegroundColor() const; 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 138635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // List box selection colors 139635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Color activeListBoxSelectionBackgroundColor() const; 140635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Color activeListBoxSelectionForegroundColor() const; 141635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Color inactiveListBoxSelectionBackgroundColor() const; 142635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Color inactiveListBoxSelectionForegroundColor() const; 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // Highlighting colors for TextMatches. 1455f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual Color platformActiveTextSearchHighlightColor() const; 1465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual Color platformInactiveTextSearchHighlightColor() const; 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static Color focusRingColor(); 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual Color platformFocusRingColor() const { return Color(0, 0, 0); } 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static void setCustomFocusRingColor(const Color&); 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void platformColorsDidChange(); 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 154635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual double caretBlinkInterval() const { return 0.5; } 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // System fonts and colors for CSS. 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void systemFont(int cssValueId, FontDescription&) const = 0; 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual Color systemColor(int cssValueId) const; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int minimumMenuListSize(RenderStyle*) const { return 0; } 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSliderThumbSize(RenderObject*) const; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingLeft(RenderStyle*) const { return 0; } 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingRight(RenderStyle*) const { return 0; } 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingTop(RenderStyle*) const { return 0; } 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int popupInternalPaddingBottom(RenderStyle*) const { return 0; } 1688f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual bool popupOptionSupportsTextIndent() const { return false; } 1698f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 1708f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) { return RegularScrollbar; } 1718f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Method for painting the caps lock indicator 173ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintCapsLockIndicator(RenderObject*, const PaintInfo&, const IntRect&) { return 0; }; 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 175dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PROGRESS_TAG) 176dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns the repeat interval of the animation for the progress bar. 177dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const; 178dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Returns the duration of the animation for the progress bar. 179dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual double animationDurationForProgressBar(RenderProgress*) const; 180dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 181dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 182635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(VIDEO) 183635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Media controls 1842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool supportsClosedCaptioning() const { return false; } 1852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool hasOwnDisabledStateHandlingFor(ControlPart) const { return false; } 1862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual bool usesMediaControlStatusDisplay() { return false; } 1872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool usesMediaControlVolumeSlider() const { return true; } 188d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual double mediaControlsFadeInDuration() { return 0.1; } 189d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual double mediaControlsFadeOutDuration() { return 0.3; } 1905e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block virtual String formatMediaControlsTime(float time) const; 1915e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block virtual String formatMediaControlsCurrentTime(float currentTime, float duration) const; 1925e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block virtual String formatMediaControlsRemainingTime(float currentTime, float duration) const; 193e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 194e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke // Returns the media volume slider container's offset from the mute button. 19581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual IntPoint volumeSliderOffsetFromMuteButton(RenderBox*, const IntSize&) const; 196635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 197635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 198545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if ENABLE(METER_TAG) 199545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual IntSize meterSizeForBounds(const RenderMeter*, const IntRect&) const; 2002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual bool supportsMeter(ControlPart) const; 201545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 2022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual bool shouldShowPlaceholderWhenFocused() const { return false; } 204545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected: 206635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // The platform selection color. 207635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformActiveSelectionBackgroundColor() const; 208635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformInactiveSelectionBackgroundColor() const; 209635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformActiveSelectionForegroundColor() const; 210635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformInactiveSelectionForegroundColor() const; 211635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 212635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformActiveListBoxSelectionBackgroundColor() const; 213635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformInactiveListBoxSelectionBackgroundColor() const; 214635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformActiveListBoxSelectionForegroundColor() const; 215635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual Color platformInactiveListBoxSelectionForegroundColor() const; 216635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 217635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool supportsSelectionForegroundColors() const { return true; } 218635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool supportsListBoxSelectionForegroundColors() const { return true; } 219635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if !USE(NEW_THEME) 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Methods for each appearance value. 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustCheckboxStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 223ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setCheckboxSize(RenderStyle*) const { } 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustRadioStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 227ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setRadioSize(RenderStyle*) const { } 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 231ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setButtonSize(RenderStyle*) const { } 233d0825bca7fe65beaee391d30da42e937db621564Steve Block 234d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 235ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 236d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void adjustOuterSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 237ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintOuterSpinButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 241ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustTextAreaStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 244ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintTextArea(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 24682160d9cd33152498ed3f4e701e713c15e50d7e5Leon Scroggins#if ENABLE(NO_LISTBOX_RENDERING) 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustListboxStyle(CSSStyleSelector*, RenderStyle*, Element*) const {} 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 250ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 253ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(METER_TAG) 2566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual void adjustMeterStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 257ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMeter(RenderObject*, const PaintInfo&, const IntRect&); 2586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 2596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 260dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PROGRESS_TAG) 261dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void adjustProgressBarStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 262ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 263ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#endif 264ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 265ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#if ENABLE(INPUT_SPEECH) 266ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual void adjustInputFieldSpeechButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 267ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintInputFieldSpeechButton(RenderObject*, const PaintInfo&, const IntRect&); 268dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 269dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 271ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 274ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 277ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 280ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSearchFieldCancelButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 283ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSearchFieldDecoration(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSearchFieldResultsDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 286ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSearchFieldResultsDecoration(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void adjustSearchFieldResultsButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 289ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintSearchFieldResultsButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 290ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 291ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaFullscreenButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 292ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaPlayButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 293ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaMuteButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 294ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaSeekBackButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 295ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaSeekForwardButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 296ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 297ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 298ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaVolumeSliderContainer(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 299ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaVolumeSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 300ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaVolumeSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 301ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaRewindButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 302ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaReturnToRealtimeButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 303ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaToggleClosedCaptionsButton(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 304ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaControlsBackground(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 305ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaCurrentTime(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 306ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block virtual bool paintMediaTimeRemaining(RenderObject*, const PaintInfo&, const IntRect&) { return true; } 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Methods for state querying 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ControlStates controlStatesForRenderer(const RenderObject* o) const; 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isActive(const RenderObject*) const; 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isChecked(const RenderObject*) const; 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isIndeterminate(const RenderObject*) const; 3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isEnabled(const RenderObject*) const; 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isFocused(const RenderObject*) const; 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isPressed(const RenderObject*) const; 31721939df44de1705786c545cd1bf519d47250322dBen Murdoch bool isSpinUpButtonPartPressed(const RenderObject*) const; 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isHovered(const RenderObject*) const; 31921939df44de1705786c545cd1bf519d47250322dBen Murdoch bool isSpinUpButtonPartHovered(const RenderObject*) const; 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isReadOnlyControl(const RenderObject*) const; 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isDefault(const RenderObject*) const; 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 324635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_activeSelectionBackgroundColor; 325635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_inactiveSelectionBackgroundColor; 326635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_activeSelectionForegroundColor; 327635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_inactiveSelectionForegroundColor; 328635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 329635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_activeListBoxSelectionBackgroundColor; 330635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_inactiveListBoxSelectionBackgroundColor; 331635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_activeListBoxSelectionForegroundColor; 332635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable Color m_inactiveListBoxSelectionForegroundColor; 333635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if USE(NEW_THEME) 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Theme* m_theme; // The platform-specific theme. 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // RenderTheme_h 342