Chromium Code Reviews| Index: Source/core/css/resolver/StyleResolver.cpp |
| diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp |
| index 87e23ed306e135e387b2d810eef1cf2e700852d8..e1aafbd93c1539bbe961dd61b885008b8d0d4ba0 100644 |
| --- a/Source/core/css/resolver/StyleResolver.cpp |
| +++ b/Source/core/css/resolver/StyleResolver.cpp |
| @@ -9,6 +9,7 @@ |
| * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
| * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| * Copyright (C) 2012 Google Inc. All rights reserved. |
| + * Copyright (C) 2013 Opera Software ASA. All rights reserved. |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| @@ -2695,6 +2696,31 @@ void StyleResolver::applyProperty(CSSPropertyID id, CSSValue* value) |
| break; |
| // CSS3 Properties |
| + case CSSPropertyNavDown: |
| + case CSSPropertyNavLeft: |
| + case CSSPropertyNavRight: |
| + case CSSPropertyNavUp: { |
| + NavDirSetter setter = getNavDirSetterForProperty(id); |
| + |
| + if (isInitial) { |
| + (m_state.style()->*setter)(StyleNavigationValue()); |
| + } else if (primitiveValue) { |
| + (m_state.style()->*setter)(StyleNavigationValue(primitiveValue->getStringValue())); |
| + } else if (value->isValueList()) { |
| + AtomicString vals[2]; |
| + CSSValueListIterator iterator = value; |
| + |
| + for (int i = 0; i < 2 && iterator.hasMore(); iterator.advance()) { |
| + CSSValue* item = iterator.value(); |
| + if (!item->isPrimitiveValue()) |
| + continue; |
| + vals[i++] = (static_cast<CSSPrimitiveValue*>(item))->getStringValue(); |
| + } |
| + |
| + (m_state.style()->*setter)(StyleNavigationValue(vals[0], vals[1])); |
|
esprehn
2013/06/20 19:45:10
You should do this the other way around instead of
Krzysztof Olczyk
2013/07/22 14:14:16
Done.
|
| + } |
| + return; |
| + } |
| case CSSPropertyTextShadow: |
| case CSSPropertyBoxShadow: |
| case CSSPropertyWebkitBoxShadow: { |
| @@ -3540,6 +3566,24 @@ void StyleResolver::loadPendingShaders() |
| m_state.setHasPendingShaders(false); |
| } |
| +StyleResolver::NavDirSetter StyleResolver::getNavDirSetterForProperty(CSSPropertyID id) |
| +{ |
| + switch (id) { |
| + case CSSPropertyNavDown: |
| + return &RenderStyle::setNavDown; |
| + case CSSPropertyNavLeft: |
| + return &RenderStyle::setNavLeft; |
| + case CSSPropertyNavRight: |
| + return &RenderStyle::setNavRight; |
| + case CSSPropertyNavUp: |
| + return &RenderStyle::setNavUp; |
| + default: |
| + ASSERT_NOT_REACHED(); |
| + return 0; |
| + } |
| +} |
| + |
| + |
| PassRefPtr<StyleImage> StyleResolver::loadPendingImage(StylePendingImage* pendingImage) |
| { |
| CachedResourceLoader* cachedResourceLoader = m_state.document()->cachedResourceLoader(); |