diff options
Diffstat (limited to 'WebCore')
-rw-r--r-- | WebCore/Android.derived.mk | 8 | ||||
-rw-r--r-- | WebCore/config.h | 1 | ||||
-rw-r--r-- | WebCore/css/AndroidCSSPropertyNames.in | 34 | ||||
-rw-r--r-- | WebCore/css/CSSComputedStyleDeclaration.cpp | 35 | ||||
-rw-r--r-- | WebCore/css/CSSMutableStyleDeclaration.cpp | 14 | ||||
-rw-r--r-- | WebCore/css/CSSParser.cpp | 30 | ||||
-rw-r--r-- | WebCore/css/CSSPropertyNames.in | 3 | ||||
-rw-r--r-- | WebCore/css/CSSStyleSelector.cpp | 126 | ||||
-rw-r--r-- | WebCore/platform/graphics/Color.h | 7 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/android_graphics.cpp | 63 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/android_graphics.h | 3 | ||||
-rw-r--r-- | WebCore/rendering/style/RenderStyle.h | 39 | ||||
-rw-r--r-- | WebCore/rendering/style/StyleRareInheritedData.cpp | 33 | ||||
-rw-r--r-- | WebCore/rendering/style/StyleRareInheritedData.h | 11 |
14 files changed, 366 insertions, 41 deletions
diff --git a/WebCore/Android.derived.mk b/WebCore/Android.derived.mk index a5820a7..1b0b46f 100644 --- a/WebCore/Android.derived.mk +++ b/WebCore/Android.derived.mk @@ -27,13 +27,15 @@ GEN := $(intermediates)/css/CSSPropertyNames.h $(GEN): SCRIPT := $(LOCAL_PATH)/css/makeprop.pl -$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSPropertyNames.in +ifeq ($(ENABLE_SVG),true) +$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSPropertyNames.in $(LOCAL_PATH)/css/AndroidCSSPropertyNames.in +else +$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/AndroidCSSPropertyNames.in +endif @echo "Generating CSSPropertyNames.h <= CSSPropertyNames.in" @mkdir -p $(dir $@) @cat $< > $(dir $@)/$(notdir $<) -ifeq ($(ENABLE_SVG),true) @cat $^ > $(@:%.h=%.in) -endif @cp -f $(SCRIPT) $(dir $@) @cd $(dir $@) ; perl ./$(notdir $(SCRIPT)) LOCAL_GENERATED_SOURCES += $(GEN) diff --git a/WebCore/config.h b/WebCore/config.h index 5d5c6c1..d912556 100644 --- a/WebCore/config.h +++ b/WebCore/config.h @@ -157,6 +157,7 @@ #define ANDROID_LISTBOX_USES_MENU_LIST #define ANDROID_MULTIPLE_WINDOWS +#define ANDROID_CSS_RING #define ANDROID_CSS_TAP_HIGHLIGHT_COLOR #define ANDROID_BLOCK_NETWORK_IMAGE diff --git a/WebCore/css/AndroidCSSPropertyNames.in b/WebCore/css/AndroidCSSPropertyNames.in new file mode 100644 index 0000000..ef67d6b --- /dev/null +++ b/WebCore/css/AndroidCSSPropertyNames.in @@ -0,0 +1,34 @@ +# Copyright 2010, The Android Open Source Project +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +-webkit-ring +-webkit-ring-fill-color +-webkit-ring-inner-width +-webkit-ring-outer-width +-webkit-ring-outset +-webkit-ring-pressed-inner-color +-webkit-ring-pressed-outer-color +-webkit-ring-radius +-webkit-ring-selected-inner-color +-webkit-ring-selected-outer-color +-webkit-tap-highlight-color diff --git a/WebCore/css/CSSComputedStyleDeclaration.cpp b/WebCore/css/CSSComputedStyleDeclaration.cpp index 44ff1fc..0b05a71 100644 --- a/WebCore/css/CSSComputedStyleDeclaration.cpp +++ b/WebCore/css/CSSComputedStyleDeclaration.cpp @@ -271,6 +271,18 @@ static const int computedProperties[] = { CSSPropertyWebkitSvgShadow, CSSPropertyVectorEffect #endif +#ifdef ANDROID_CSS_RING + , + CSSPropertyWebkitRingFillColor, + CSSPropertyWebkitRingInnerWidth, + CSSPropertyWebkitRingOuterWidth, + CSSPropertyWebkitRingOutset, + CSSPropertyWebkitRingPressedInnerColor, + CSSPropertyWebkitRingPressedOuterColor, + CSSPropertyWebkitRingRadius, + CSSPropertyWebkitRingSelectedInnerColor, + CSSPropertyWebkitRingSelectedOuterColor +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR , CSSPropertyWebkitTapHighlightColor @@ -1536,6 +1548,29 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper case CSSPropertyWebkitTransition: case CSSPropertyWebkitVariableDeclarationBlock: break; +#ifdef ANDROID_CSS_RING + case CSSPropertyWebkitRing: + // shorthand property currently not supported see bug 13658 + break; + case CSSPropertyWebkitRingFillColor: + return CSSPrimitiveValue::createColor(style->ringFillColor().rgb()); + case CSSPropertyWebkitRingInnerWidth: + return CSSPrimitiveValue::create(style->ringInnerWidth()); + case CSSPropertyWebkitRingOuterWidth: + return CSSPrimitiveValue::create(style->ringOuterWidth()); + case CSSPropertyWebkitRingOutset: + return CSSPrimitiveValue::create(style->ringOutset()); + case CSSPropertyWebkitRingPressedInnerColor: + return CSSPrimitiveValue::createColor(style->ringPressedInnerColor().rgb()); + case CSSPropertyWebkitRingPressedOuterColor: + return CSSPrimitiveValue::createColor(style->ringPressedOuterColor().rgb()); + case CSSPropertyWebkitRingRadius: + return CSSPrimitiveValue::create(style->ringRadius()); + case CSSPropertyWebkitRingSelectedInnerColor: + return CSSPrimitiveValue::createColor(style->ringSelectedInnerColor().rgb()); + case CSSPropertyWebkitRingSelectedOuterColor: + return CSSPrimitiveValue::createColor(style->ringSelectedOuterColor().rgb()); +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR case CSSPropertyWebkitTapHighlightColor: return CSSPrimitiveValue::createColor(style->tapHighlightColor().rgb()); diff --git a/WebCore/css/CSSMutableStyleDeclaration.cpp b/WebCore/css/CSSMutableStyleDeclaration.cpp index 8d37a2e..e3fed35 100644 --- a/WebCore/css/CSSMutableStyleDeclaration.cpp +++ b/WebCore/css/CSSMutableStyleDeclaration.cpp @@ -258,6 +258,20 @@ String CSSMutableStyleDeclaration::getPropertyValue(int propertyID) const return value->cssText(); } #endif +#ifdef ANDROID_CSS_RING + case CSSPropertyWebkitRing: { + const int properties[9] = { CSSPropertyWebkitRingFillColor, + CSSPropertyWebkitRingInnerWidth, + CSSPropertyWebkitRingOuterWidth, + CSSPropertyWebkitRingOutset, + CSSPropertyWebkitRingPressedInnerColor, + CSSPropertyWebkitRingPressedOuterColor, + CSSPropertyWebkitRingRadius, + CSSPropertyWebkitRingSelectedInnerColor, + CSSPropertyWebkitRingSelectedOuterColor }; + return getLayeredShorthandValue(properties, 9); + } +#endif } return String(); } diff --git a/WebCore/css/CSSParser.cpp b/WebCore/css/CSSParser.cpp index 6bf7751..0cc935f 100644 --- a/WebCore/css/CSSParser.cpp +++ b/WebCore/css/CSSParser.cpp @@ -1811,6 +1811,36 @@ bool CSSParser::parseValue(int propId, bool important) break; #endif +#ifdef ANDROID_CSS_RING + case CSSPropertyWebkitRing: + { + const int properties[9] = { CSSPropertyWebkitRingFillColor, + CSSPropertyWebkitRingInnerWidth, + CSSPropertyWebkitRingOuterWidth, + CSSPropertyWebkitRingOutset, + CSSPropertyWebkitRingPressedInnerColor, + CSSPropertyWebkitRingPressedOuterColor, + CSSPropertyWebkitRingRadius, + CSSPropertyWebkitRingSelectedInnerColor, + CSSPropertyWebkitRingSelectedOuterColor }; + return parseShorthand(propId, properties, 9, important); + } + case CSSPropertyWebkitRingFillColor: + case CSSPropertyWebkitRingPressedInnerColor: + case CSSPropertyWebkitRingPressedOuterColor: + case CSSPropertyWebkitRingSelectedInnerColor: + case CSSPropertyWebkitRingSelectedOuterColor: + parsedValue = parseColor(); + if (parsedValue) + m_valueList->next(); + break; + case CSSPropertyWebkitRingInnerWidth: + case CSSPropertyWebkitRingOuterWidth: + case CSSPropertyWebkitRingOutset: + case CSSPropertyWebkitRingRadius: + validPrimitive = validUnit(value, FLength | FNonNeg, m_strict); + break; +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR case CSSPropertyWebkitTapHighlightColor: parsedValue = parseColor(); diff --git a/WebCore/css/CSSPropertyNames.in b/WebCore/css/CSSPropertyNames.in index 44216e0..ac85887 100644 --- a/WebCore/css/CSSPropertyNames.in +++ b/WebCore/css/CSSPropertyNames.in @@ -254,9 +254,6 @@ z-index -webkit-perspective-origin-x -webkit-perspective-origin-y -webkit-rtl-ordering -# ANDROID_CSS_TAP_HIGHLIGHT_COLOR: added CSS property (also in iPhone) --webkit-tap-highlight-color -# end ANDROID_CSS_TAP_HIGHLIGHT_COLOR -webkit-text-decorations-in-effect -webkit-text-fill-color -webkit-text-security diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp index 516e0e2..354c539 100644 --- a/WebCore/css/CSSStyleSelector.cpp +++ b/WebCore/css/CSSStyleSelector.cpp @@ -5536,6 +5536,132 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value) return; #endif +#ifdef ANDROID_CSS_RING + case CSSPropertyWebkitRing: + if (valueType != CSSValue::CSS_INHERIT || !m_parentNode) return; + m_style->setRingFillColor(m_parentStyle->ringFillColor()); + m_style->setRingInnerWidth(m_parentStyle->ringInnerWidth()); + m_style->setRingOuterWidth(m_parentStyle->ringOuterWidth()); + m_style->setRingOutset(m_parentStyle->ringOutset()); + m_style->setRingPressedInnerColor(m_parentStyle->ringPressedInnerColor()); + m_style->setRingPressedOuterColor(m_parentStyle->ringPressedOuterColor()); + m_style->setRingRadius(m_parentStyle->ringRadius()); + m_style->setRingSelectedInnerColor(m_parentStyle->ringSelectedInnerColor()); + m_style->setRingSelectedOuterColor(m_parentStyle->ringSelectedOuterColor()); + return; + case CSSPropertyWebkitRingFillColor: { + HANDLE_INHERIT_AND_INITIAL(ringFillColor, RingFillColor); + if (!primitiveValue) + break; + Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite(); + m_style->setRingFillColor(col); + return; + } + case CSSPropertyWebkitRingInnerWidth: { + HANDLE_INHERIT_AND_INITIAL(ringInnerWidth, RingInnerWidth) + CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value); + Length l; + int type = primitiveValue->primitiveType(); + if (CSSPrimitiveValue::isUnitTypeLength(type)) { + // width can be specified with fractional px + // scale by 16 here (and unscale in android_graphics) to keep + // 4 bits of fraction + ExceptionCode ec; + primitiveValue->setFloatValue(primitiveValue->primitiveType(), + primitiveValue->getFloatValue() * 16, ec); + l = Length(primitiveValue->computeLengthIntForLength(style(), + m_rootElementStyle, zoomFactor), Fixed); + } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE) + l = Length(primitiveValue->getDoubleValue(), Percent); + else + return; + m_style->setRingInnerWidth(l); + return; + } + case CSSPropertyWebkitRingOuterWidth: { + HANDLE_INHERIT_AND_INITIAL(ringOuterWidth, RingOuterWidth) + CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value); + Length l; + int type = primitiveValue->primitiveType(); + if (CSSPrimitiveValue::isUnitTypeLength(type)) { + // width can be specified with fractional px + // scale by 16 here (and unscale in android_graphics) to keep + // 4 bits of fraction + ExceptionCode ec; + primitiveValue->setFloatValue(primitiveValue->primitiveType(), + primitiveValue->getFloatValue() * 16, ec); + l = Length(primitiveValue->computeLengthIntForLength(style(), + m_rootElementStyle, zoomFactor), Fixed); + } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE) + l = Length(primitiveValue->getDoubleValue(), Percent); + else + return; + m_style->setRingOuterWidth(l); + return; + } + case CSSPropertyWebkitRingOutset: { + HANDLE_INHERIT_AND_INITIAL(ringOutset, RingOutset) + CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value); + Length l; + int type = primitiveValue->primitiveType(); + if (CSSPrimitiveValue::isUnitTypeLength(type)) + l = Length(primitiveValue->computeLengthIntForLength(style(), + m_rootElementStyle, zoomFactor), Fixed); + else if (type == CSSPrimitiveValue::CSS_PERCENTAGE) + l = Length(primitiveValue->getDoubleValue(), Percent); + else + return; + m_style->setRingOutset(l); + return; + } + case CSSPropertyWebkitRingPressedInnerColor: { + HANDLE_INHERIT_AND_INITIAL(ringPressedInnerColor, RingPressedInnerColor); + if (!primitiveValue) + break; + Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite(); + m_style->setRingPressedInnerColor(col); + return; + } + case CSSPropertyWebkitRingPressedOuterColor: { + HANDLE_INHERIT_AND_INITIAL(ringPressedOuterColor, RingPressedOuterColor); + if (!primitiveValue) + break; + Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite(); + m_style->setRingPressedOuterColor(col); + return; + } + case CSSPropertyWebkitRingRadius: { + HANDLE_INHERIT_AND_INITIAL(ringRadius, RingRadius) + CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(value); + Length l; + int type = primitiveValue->primitiveType(); + if (CSSPrimitiveValue::isUnitTypeLength(type)) + l = Length(primitiveValue->computeLengthIntForLength(style(), + m_rootElementStyle, zoomFactor), Fixed); + else if (type == CSSPrimitiveValue::CSS_PERCENTAGE) + l = Length(primitiveValue->getDoubleValue(), Percent); + else + return; + m_style->setRingRadius(l); + return; + } + case CSSPropertyWebkitRingSelectedInnerColor: { + HANDLE_INHERIT_AND_INITIAL(ringSelectedInnerColor, RingSelectedInnerColor); + if (!primitiveValue) + break; + Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite(); + m_style->setRingSelectedInnerColor(col); + return; + } + case CSSPropertyWebkitRingSelectedOuterColor: { + HANDLE_INHERIT_AND_INITIAL(ringSelectedOuterColor, RingSelectedOuterColor); + if (!primitiveValue) + break; + Color col = getColorFromPrimitiveValue(primitiveValue).blendWithWhite(); + m_style->setRingSelectedOuterColor(col); + return; + } +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR case CSSPropertyWebkitTapHighlightColor: { HANDLE_INHERIT_AND_INITIAL(tapHighlightColor, TapHighlightColor); diff --git a/WebCore/platform/graphics/Color.h b/WebCore/platform/graphics/Color.h index 9335bc4..ae728c2 100644 --- a/WebCore/platform/graphics/Color.h +++ b/WebCore/platform/graphics/Color.h @@ -150,6 +150,13 @@ public: static const RGBA32 lightGray = 0xFFC0C0C0; static const RGBA32 transparent = 0x00000000; +#ifdef ANDROID_CSS_RING + static const RGBA32 ringFill = 0x80FFC64B; + static const RGBA32 ringPressedInner = 0xFFFEBD3A; + static const RGBA32 ringPressedOuter = 0xFFAD5C0A; + static const RGBA32 ringSelectedInner = 0xFFFE9230; + static const RGBA32 ringSelectedOuter = 0xFFB33F08; +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR static const RGBA32 tap = 0x4D1A1A1A; #endif diff --git a/WebCore/platform/graphics/android/android_graphics.cpp b/WebCore/platform/graphics/android/android_graphics.cpp index fafd3df..a780dc4 100644 --- a/WebCore/platform/graphics/android/android_graphics.cpp +++ b/WebCore/platform/graphics/android/android_graphics.cpp @@ -25,6 +25,7 @@ #include "CachedPrefix.h" #include "android_graphics.h" +#include "CachedColor.h" #include "CachedRoot.h" #include "IntRect.h" #include "LayerAndroid.h" @@ -36,30 +37,8 @@ namespace android { -/////////////////////////////////////////////////////////////////////////////// - -const static SkColor cursorOuterColors[] = { - SkColorSetARGB(0xff, 0xB3, 0x3F, 0x08), // normal ring select - SkColorSetARGB(0xff, 0x46, 0xb0, 0x00), // fake ring select, for phone, email, text - SkColorSetARGB(0xff, 0xAD, 0x5C, 0x0A), // normal ring pressed - SkColorSetARGB(0xff, 0x36, 0xc0, 0x00) // fake ring pressed -}; - -const static SkColor cursorInnerColors[] = { - SkColorSetARGB(0xff, 0xFE, 0x92, 0x30), // normal ring select - SkColorSetARGB(0xff, 0x8c, 0xd9, 0x00), // fake ring select, for phone, email, text - SkColorSetARGB(0xff, 0xFE, 0xBD, 0x3A), // normal ring pressed - SkColorSetARGB(0xff, 0x7c, 0xe9, 0x00) // fake ring pressed -}; - -const static SkColor cursorPressedColors[] = { - SkColorSetARGB(0x80, 0xFF, 0xC6, 0x4B), // normal ring pressed - SkColorSetARGB(0x80, 0x7c, 0xe9, 0x00) // fake ring pressed -}; - -#define CURSOR_RING_ROUNDEDNESS SkIntToScalar(5) // used to draw corners -#define CURSOR_RING_INNER_DIAMETER SkFixedToScalar(SkIntToFixed(3)>>1) // 3/2 == 1.5 -#define CURSOR_RING_OUTER_OUTSET 2 // used to inflate rects added to region +// The CSS values for the inner and outer widths may be specified as fractions +#define WIDTH_SCALE 0.0625f // 1/16, to offset the scale in CSSStyleSelector void CursorRing::draw(SkCanvas* canvas, LayerAndroid* layer) { @@ -75,6 +54,7 @@ void CursorRing::draw(SkCanvas* canvas, LayerAndroid* layer) m_followedLink = false; return; } + const CachedColor& colors = m_frame->color(m_node); unsigned rectCount = m_rings.size(); SkRegion rgn; SkPath path; @@ -84,24 +64,36 @@ void CursorRing::draw(SkCanvas* canvas, LayerAndroid* layer) SkIRect ir; r.round(&ir); - ir.inset(-CURSOR_RING_OUTER_OUTSET, -CURSOR_RING_OUTER_OUTSET); + ir.inset(-colors.outset(), -colors.outset()); rgn.op(ir, SkRegion::kUnion_Op); } rgn.getBoundaryPath(&path); SkPaint paint; paint.setAntiAlias(true); - paint.setPathEffect(new SkCornerPathEffect(CURSOR_RING_ROUNDEDNESS))->unref(); + paint.setPathEffect(new SkCornerPathEffect( + SkIntToScalar(colors.radius())))->unref(); + SkColor outer; + SkColor inner; if (m_flavor >= NORMAL_ANIMATING) { // pressed - paint.setColor(cursorPressedColors[m_flavor - NORMAL_ANIMATING]); + SkColor pressed; + pressed = colors.fillColor(); + paint.setColor(pressed); canvas->drawPath(path, paint); } + if (m_flavor >= NORMAL_ANIMATING) { + outer = colors.pressedOuterColor(); + inner = colors.pressedInnerColor(); + } else { + outer = colors.selectedOuterColor(); + inner = colors.selectedInnerColor(); + } paint.setStyle(SkPaint::kStroke_Style); - paint.setStrokeWidth(CURSOR_RING_OUTER_DIAMETER); - paint.setColor(cursorOuterColors[m_flavor]); + paint.setStrokeWidth(colors.outerWidth() * WIDTH_SCALE); + paint.setColor(outer); canvas->drawPath(path, paint); - paint.setStrokeWidth(CURSOR_RING_INNER_DIAMETER); - paint.setColor(cursorInnerColors[m_flavor]); + paint.setStrokeWidth(colors.innerWidth() * WIDTH_SCALE); + paint.setColor(inner); canvas->drawPath(path, paint); } @@ -140,7 +132,8 @@ bool CursorRing::setup() m_rings.clear(); m_rings.append(m_bounds); } - m_bounds.inflate(SkScalarCeil(CURSOR_RING_OUTER_DIAMETER)); + const CachedColor& colors = m_frame->color(m_node); + m_bounds.inflate(SkScalarCeil(colors.outerWidth())); if (!m_node->hasCursorRing() || (m_node->isPlugin() && m_node->isFocus())) return false; m_flavor = NORMAL_FLAVOR; @@ -159,6 +152,12 @@ bool CursorRing::setup() m_flavor == FAKE_ANIMATING ? "FAKE_ANIMATING" : "NORMAL_FLAVOR", m_rings.size(), ring.x(), ring.y(), ring.width(), ring.height(), m_node->isPlugin() ? "true" : "false"); + DBG_NAV_LOGD("[%d] inner=%d outer=%d outset=%d radius=%d" + " fill=0x%08x pin=0x%0x08x pout=0x%0x08x sin=0x%08x sout=0x%08x", + m_node->colorIndex(), colors.innerWidth(), colors.outerWidth(), + colors.outset(), colors.radius(), colors.fillColor(), + colors.pressedInnerColor(), colors.pressedOuterColor(), + colors.selectedInnerColor(), colors.selectedInnerColor()); #endif } return true; diff --git a/WebCore/platform/graphics/android/android_graphics.h b/WebCore/platform/graphics/android/android_graphics.h index dbf1978..b42231d 100644 --- a/WebCore/platform/graphics/android/android_graphics.h +++ b/WebCore/platform/graphics/android/android_graphics.h @@ -49,9 +49,6 @@ class WebViewCore; // used to inflate node cache entry #define CURSOR_RING_HIT_TEST_RADIUS 5 -// used to inval rectangle enclosing pressed state of ring -#define CURSOR_RING_OUTER_DIAMETER SkFixedToScalar(SkIntToFixed(13)>>2) // 13/4 == 3.25 - class CursorRing : public DrawExtra { public: enum Flavor { diff --git a/WebCore/rendering/style/RenderStyle.h b/WebCore/rendering/style/RenderStyle.h index 58af7cf..8c8a8f9 100644 --- a/WebCore/rendering/style/RenderStyle.h +++ b/WebCore/rendering/style/RenderStyle.h @@ -715,6 +715,19 @@ public: bool textSizeAdjust() const { return rareInheritedData->textSizeAdjust; } ETextSecurity textSecurity() const { return static_cast<ETextSecurity>(rareInheritedData->textSecurity); } +#ifdef ANDROID_CSS_RING + // called when building nav cache to determine if the ring data is unchanged + const void* ringData() const { return reinterpret_cast<const void*>(rareInheritedData.get()); } + Color ringFillColor() const { return rareInheritedData->ringFillColor; } + Length ringInnerWidth() const { return rareInheritedData->ringInnerWidth; } + Length ringOuterWidth() const { return rareInheritedData->ringOuterWidth; } + Length ringOutset() const { return rareInheritedData->ringOutset; } + Color ringPressedInnerColor() const { return rareInheritedData->ringPressedInnerColor; } + Color ringPressedOuterColor() const { return rareInheritedData->ringPressedOuterColor; } + Length ringRadius() const { return rareInheritedData->ringRadius; } + Color ringSelectedInnerColor() const { return rareInheritedData->ringSelectedInnerColor; } + Color ringSelectedOuterColor() const { return rareInheritedData->ringSelectedOuterColor; } +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR Color tapHighlightColor() const { return rareInheritedData->tapHighlightColor; } #endif @@ -1051,6 +1064,21 @@ public: void setTextSizeAdjust(bool b) { SET_VAR(rareInheritedData, textSizeAdjust, b); } void setTextSecurity(ETextSecurity aTextSecurity) { SET_VAR(rareInheritedData, textSecurity, aTextSecurity); } +#ifdef ANDROID_CSS_RING + void setRingFillColor(const Color& v) { SET_VAR(rareInheritedData, ringFillColor, v); } + void setRingInnerWidth(Length v) { SET_VAR(rareInheritedData, ringInnerWidth, v); } + void setRingOuterWidth(Length v) { SET_VAR(rareInheritedData, ringOuterWidth, v); } + void setRingOutset(Length v) { SET_VAR(rareInheritedData, ringOutset, v); } + void setRingPressedInnerColor(const Color& v) { + SET_VAR(rareInheritedData, ringPressedInnerColor, v); } + void setRingPressedOuterColor(const Color& v) { + SET_VAR(rareInheritedData, ringPressedOuterColor, v); } + void setRingRadius(Length v) { SET_VAR(rareInheritedData, ringRadius, v); } + void setRingSelectedInnerColor(const Color& v) { + SET_VAR(rareInheritedData, ringSelectedInnerColor, v); } + void setRingSelectedOuterColor(const Color& v) { + SET_VAR(rareInheritedData, ringSelectedOuterColor, v); } +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR void setTapHighlightColor(const Color& v) { SET_VAR(rareInheritedData, tapHighlightColor, v); } #endif @@ -1234,6 +1262,17 @@ public: static const Vector<StyleDashboardRegion>& noneDashboardRegions(); #endif +#ifdef ANDROID_CSS_RING + static Color initialRingFillColor() { return Color::ringFill; } + static Length initialRingInnerWidth() { return Length(24, Fixed); } // 1.5 + static Length initialRingOuterWidth() { return Length(52, Fixed); } // 3.25 + static Length initialRingOutset() { return Length(2, Fixed); } + static Color initialRingSelectedInnerColor() { return Color::ringSelectedInner; } + static Color initialRingSelectedOuterColor() { return Color::ringSelectedOuter; } + static Color initialRingPressedInnerColor() { return Color::ringPressedInner; } + static Color initialRingPressedOuterColor() { return Color::ringPressedOuter; } + static Length initialRingRadius() { return Length(5, Fixed); } +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR static Color initialTapHighlightColor() { return Color::tap; } #endif diff --git a/WebCore/rendering/style/StyleRareInheritedData.cpp b/WebCore/rendering/style/StyleRareInheritedData.cpp index cb6edf3..31012a6 100644 --- a/WebCore/rendering/style/StyleRareInheritedData.cpp +++ b/WebCore/rendering/style/StyleRareInheritedData.cpp @@ -29,6 +29,17 @@ namespace WebCore { StyleRareInheritedData::StyleRareInheritedData() : textStrokeWidth(RenderStyle::initialTextStrokeWidth()) +#ifdef ANDROID_CSS_RING + , ringFillColor(RenderStyle::initialRingFillColor()) + , ringInnerWidth(RenderStyle::initialRingInnerWidth()) + , ringOuterWidth(RenderStyle::initialRingOuterWidth()) + , ringOutset(RenderStyle::initialRingOutset()) + , ringPressedInnerColor(RenderStyle::initialRingPressedInnerColor()) + , ringPressedOuterColor(RenderStyle::initialRingPressedOuterColor()) + , ringRadius(RenderStyle::initialRingRadius()) + , ringSelectedInnerColor(RenderStyle::initialRingSelectedInnerColor()) + , ringSelectedOuterColor(RenderStyle::initialRingSelectedOuterColor()) +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR , tapHighlightColor(RenderStyle::initialTapHighlightColor()) #endif @@ -56,6 +67,17 @@ StyleRareInheritedData::StyleRareInheritedData(const StyleRareInheritedData& o) , textStrokeColor(o.textStrokeColor) , textStrokeWidth(o.textStrokeWidth) , textFillColor(o.textFillColor) +#ifdef ANDROID_CSS_RING + , ringFillColor(o.ringFillColor) + , ringInnerWidth(o.ringInnerWidth) + , ringOuterWidth(o.ringOuterWidth) + , ringOutset(o.ringOutset) + , ringPressedInnerColor(o.ringPressedInnerColor) + , ringPressedOuterColor(o.ringPressedOuterColor) + , ringRadius(o.ringRadius) + , ringSelectedInnerColor(o.ringSelectedInnerColor) + , ringSelectedOuterColor(o.ringSelectedOuterColor) +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR , tapHighlightColor(o.tapHighlightColor) #endif @@ -114,6 +136,17 @@ bool StyleRareInheritedData::operator==(const StyleRareInheritedData& o) const && nbspMode == o.nbspMode && khtmlLineBreak == o.khtmlLineBreak && textSizeAdjust == o.textSizeAdjust +#ifdef ANDROID_CSS_RING + && ringFillColor == o.ringFillColor + && ringInnerWidth == o.ringInnerWidth + && ringOuterWidth == o.ringOuterWidth + && ringOutset == o.ringOutset + && ringPressedInnerColor == o.ringPressedInnerColor + && ringPressedOuterColor == o.ringPressedOuterColor + && ringRadius == o.ringRadius + && ringSelectedInnerColor == o.ringSelectedInnerColor + && ringSelectedOuterColor == o.ringSelectedOuterColor +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR && tapHighlightColor == o.tapHighlightColor #endif diff --git a/WebCore/rendering/style/StyleRareInheritedData.h b/WebCore/rendering/style/StyleRareInheritedData.h index f6e3bf4..b32392d 100644 --- a/WebCore/rendering/style/StyleRareInheritedData.h +++ b/WebCore/rendering/style/StyleRareInheritedData.h @@ -55,6 +55,17 @@ public: Color textStrokeColor; float textStrokeWidth; Color textFillColor; +#ifdef ANDROID_CSS_RING + Color ringFillColor; + Length ringInnerWidth; + Length ringOuterWidth; + Length ringOutset; + Color ringPressedInnerColor; + Color ringPressedOuterColor; + Length ringRadius; + Color ringSelectedInnerColor; + Color ringSelectedOuterColor; +#endif #ifdef ANDROID_CSS_TAP_HIGHLIGHT_COLOR Color tapHighlightColor; #endif |