1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebColor.h" 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "Color.h" 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "CSSValueKeywords.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "RenderTheme.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "UnusedParam.h" 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebColorName.h" 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace::WebCore; 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstatic int toCSSValueKeyword(WebColorName in_value) 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block switch (in_value) { 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorActiveBorder: 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueActiveborder; 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorActiveCaption: 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueActivecaption; 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorAppworkspace: 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueAppworkspace; 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorBackground: 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueBackground; 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorButtonFace: 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueButtonface; 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorButtonHighlight: 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueButtonhighlight; 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorButtonShadow: 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueButtonshadow; 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorButtonText: 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueButtontext; 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorCaptionText: 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueCaptiontext; 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorGrayText: 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueGraytext; 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorHighlight: 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueHighlight; 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorHighlightText: 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueHighlighttext; 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorInactiveBorder: 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueInactiveborder; 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorInactiveCaption: 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueInactivecaption; 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorInactiveCaptionText: 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueInactivecaptiontext; 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorInfoBackground: 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueInfobackground; 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorInfoText: 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueInfotext; 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorMenu: 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueMenu; 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorMenuText: 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueMenutext; 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorScrollbar: 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueScrollbar; 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorText: 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueText; 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorThreedDarkShadow: 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueThreeddarkshadow; 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorThreedShadow: 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueThreedshadow; 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorThreedFace: 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueThreedface; 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorThreedHighlight: 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueThreedhighlight; 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorThreedLightShadow: 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueThreedlightshadow; 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorWebkitFocusRingColor: 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueWebkitFocusRingColor; 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorWindow: 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueWindow; 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorWindowFrame: 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueWindowframe; 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block case WebColorWindowText: 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueWindowtext; 107643ca7872b450ea4efacab6188849e5aac2ba161Steve Block default: 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return CSSValueInvalid; 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid setNamedColors(const WebColorName* colorNames, const WebColor* colors, size_t length) 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (size_t i = 0; i < length; ++i) { 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebColorName colorName = colorNames[i]; 116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebColor color = colors[i]; 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Convert color to internal value identifier. 119643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int internalColorName = toCSSValueKeyword(colorName); 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (internalColorName == CSSValueWebkitFocusRingColor) { 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RenderTheme::setCustomFocusRingColor(color); 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block continue; 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // TODO(jeremy): Tell RenderTheme to update colors. 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 129643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // WebKit 130