summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore')
-rw-r--r--WebCore/Android.derived.mk8
-rw-r--r--WebCore/config.h1
-rw-r--r--WebCore/css/AndroidCSSPropertyNames.in34
-rw-r--r--WebCore/css/CSSComputedStyleDeclaration.cpp35
-rw-r--r--WebCore/css/CSSMutableStyleDeclaration.cpp14
-rw-r--r--WebCore/css/CSSParser.cpp30
-rw-r--r--WebCore/css/CSSPropertyNames.in3
-rw-r--r--WebCore/css/CSSStyleSelector.cpp132
-rw-r--r--WebCore/platform/android/PlatformBridge.h7
-rw-r--r--WebCore/platform/graphics/Color.h7
-rw-r--r--WebCore/platform/graphics/android/android_graphics.cpp65
-rw-r--r--WebCore/platform/graphics/android/android_graphics.h3
-rw-r--r--WebCore/platform/network/android/CookieJarAndroid.cpp16
-rw-r--r--WebCore/rendering/style/RenderStyle.h39
-rw-r--r--WebCore/rendering/style/StyleRareInheritedData.cpp33
-rw-r--r--WebCore/rendering/style/StyleRareInheritedData.h11
16 files changed, 385 insertions, 53 deletions
diff --git a/WebCore/Android.derived.mk b/WebCore/Android.derived.mk
index 7a9611b..2111e6e 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 fc81dff..0575422 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 6bb025d..418251f 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
@@ -1540,6 +1552,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 a084474..cdd6294 100644
--- a/WebCore/css/CSSParser.cpp
+++ b/WebCore/css/CSSParser.cpp
@@ -1816,6 +1816,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 1a79602..d236b45 100644
--- a/WebCore/css/CSSPropertyNames.in
+++ b/WebCore/css/CSSPropertyNames.in
@@ -255,9 +255,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 40b11d9..bd94b68 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -5556,6 +5556,138 @@ 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)
+ if (!primitiveValue)
+ break;
+ 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
+ RefPtr<CSSPrimitiveValue> scaledValue = CSSPrimitiveValue::create(
+ primitiveValue->getFloatValue() * 16,
+ (CSSPrimitiveValue::UnitTypes) type);
+ l = Length(scaledValue->computeLengthIntForLength(style(),
+ m_rootElementStyle, zoomFactor), Fixed);
+ scaledValue.release();
+ } 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)
+ if (!primitiveValue)
+ break;
+ 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
+ RefPtr<CSSPrimitiveValue> scaledValue = CSSPrimitiveValue::create(
+ primitiveValue->getFloatValue() * 16,
+ (CSSPrimitiveValue::UnitTypes) type);
+ l = Length(scaledValue->computeLengthIntForLength(style(),
+ m_rootElementStyle, zoomFactor), Fixed);
+ scaledValue.release();
+ } 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)
+ if (!primitiveValue)
+ break;
+ 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)
+ if (!primitiveValue)
+ break;
+ 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/android/PlatformBridge.h b/WebCore/platform/android/PlatformBridge.h
index e8722e2..4eeaa6c 100644
--- a/WebCore/platform/android/PlatformBridge.h
+++ b/WebCore/platform/android/PlatformBridge.h
@@ -81,6 +81,7 @@ class NPObject;
namespace WebCore {
+class Document;
class FrameView;
class Widget;
@@ -100,9 +101,9 @@ public:
static WTF::Vector<String> getSupportedKeyStrengthList();
static String getSignedPublicKeyAndChallengeString(unsigned index, const String& challenge, const KURL&);
// Cookies
- static void setCookies(const KURL&, const String& value);
- static String cookies(const KURL&);
- static bool cookiesEnabled();
+ static void setCookies(const Document*, const KURL&, const String& value);
+ static String cookies(const Document*, const KURL&);
+ static bool cookiesEnabled(const Document*);
// Plugin
static NPObject* pluginScriptableObject(Widget*);
// Popups
diff --git a/WebCore/platform/graphics/Color.h b/WebCore/platform/graphics/Color.h
index 81480b6..22a8a8f 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 a5dafda..f8032c4 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);
}
@@ -141,8 +133,9 @@ bool CursorRing::setup()
m_rings.append(m_bounds);
}
m_absBounds = m_node->bounds(m_frame);
- m_bounds.inflate(SkScalarCeil(CURSOR_RING_OUTER_DIAMETER));
- m_absBounds.inflate(SkScalarCeil(CURSOR_RING_OUTER_DIAMETER));
+ const CachedColor& colors = m_frame->color(m_node);
+ m_bounds.inflate(SkScalarCeil(colors.outerWidth()));
+ m_absBounds.inflate(SkScalarCeil(colors.outerWidth()));
if (!m_node->hasCursorRing() || (m_node->isPlugin() && m_node->isFocus()))
return false;
m_flavor = NORMAL_FLAVOR;
@@ -161,6 +154,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 46c60e8..09482bd 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/platform/network/android/CookieJarAndroid.cpp b/WebCore/platform/network/android/CookieJarAndroid.cpp
index dd324c5..f3b343e 100644
--- a/WebCore/platform/network/android/CookieJarAndroid.cpp
+++ b/WebCore/platform/network/android/CookieJarAndroid.cpp
@@ -31,25 +31,25 @@
namespace WebCore {
-void setCookies(Document*, const KURL& url, const String& value)
+void setCookies(Document* document, const KURL& url, const String& value)
{
- PlatformBridge::setCookies(url, value);
+ PlatformBridge::setCookies(document, url, value);
}
-String cookies(const Document*, const KURL& url)
+String cookies(const Document* document, const KURL& url)
{
- return PlatformBridge::cookies(url);
+ return PlatformBridge::cookies(document, url);
}
-String cookieRequestHeaderFieldValue(const Document*, const KURL& url)
+String cookieRequestHeaderFieldValue(const Document* document, const KURL& url)
{
// FIXME: include HttpOnly cookie.
- return PlatformBridge::cookies(url);
+ return PlatformBridge::cookies(document, url);
}
-bool cookiesEnabled(const Document*)
+bool cookiesEnabled(const Document* document)
{
- return PlatformBridge::cookiesEnabled();
+ return PlatformBridge::cookiesEnabled(document);
}
}
diff --git a/WebCore/rendering/style/RenderStyle.h b/WebCore/rendering/style/RenderStyle.h
index 234122e..df32d6b 100644
--- a/WebCore/rendering/style/RenderStyle.h
+++ b/WebCore/rendering/style/RenderStyle.h
@@ -716,6 +716,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
@@ -1053,6 +1066,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
@@ -1237,6 +1265,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 6942809..42f2030 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
@@ -115,6 +137,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 74d5fc9..07541d3 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