| Index: Source/core/css/resolver/StyleResolver.cpp
 | 
| diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
 | 
| index 74409ec01cca1d9e8d8e58d4e13f5fa4704dd5e1..4cc6d8aad31e4b590bec7c9a73dc24c79e815408 100644
 | 
| --- a/Source/core/css/resolver/StyleResolver.cpp
 | 
| +++ b/Source/core/css/resolver/StyleResolver.cpp
 | 
| @@ -520,7 +520,7 @@ Node* StyleResolver::locateCousinList(Element* parent, unsigned& visitedNodeCoun
 | 
|      RenderStyle* parentStyle = parent->renderStyle();
 | 
|      unsigned subcount = 0;
 | 
|      Node* thisCousin = parent;
 | 
| -    Node* currentNode = parent->previousSibling();
 | 
| +    Node* currentNode = parent->nextSibling();
 | 
|  
 | 
|      // Reserve the tries for this level. This effectively makes sure that the algorithm
 | 
|      // will never go deeper than cStyleSearchLevelThreshold levels into recursion.
 | 
| @@ -538,7 +538,7 @@ Node* StyleResolver::locateCousinList(Element* parent, unsigned& visitedNodeCoun
 | 
|              }
 | 
|              if (subcount >= cStyleSearchThreshold)
 | 
|                  return 0;
 | 
| -            currentNode = currentNode->previousSibling();
 | 
| +            currentNode = currentNode->nextSibling();
 | 
|          }
 | 
|          currentNode = locateCousinList(thisCousin->parentElement(), visitedNodeCount);
 | 
|          thisCousin = currentNode;
 | 
| @@ -737,7 +737,7 @@ bool StyleResolver::canShareStyleWithElement(Element* element) const
 | 
|  
 | 
|  inline Element* StyleResolver::findSiblingForStyleSharing(Node* node, unsigned& count) const
 | 
|  {
 | 
| -    for (; node; node = node->previousSibling()) {
 | 
| +    for (; node; node = node->nextSibling()) {
 | 
|          if (!node->isStyledElement())
 | 
|              continue;
 | 
|          if (canShareStyleWithElement(toElement(node)))
 | 
| @@ -791,11 +791,11 @@ RenderStyle* StyleResolver::locateSharedStyle()
 | 
|      // FIXME: This shouldn't be a member variable. The style sharing code could be factored out of StyleResolver.
 | 
|      state.setElementAffectedByClassRules(state.element() && state.element()->hasClass() && classNamesAffectedByRules(state.element()->classNames()));
 | 
|  
 | 
| -    // Check previous siblings and their cousins.
 | 
| +    // Check next siblings and their cousins.
 | 
|      unsigned count = 0;
 | 
|      unsigned visitedNodeCount = 0;
 | 
|      Element* shareElement = 0;
 | 
| -    Node* cousinList = state.styledElement()->previousSibling();
 | 
| +    Node* cousinList = state.styledElement()->nextSibling();
 | 
|      while (cousinList) {
 | 
|          shareElement = findSiblingForStyleSharing(cousinList, count);
 | 
|          if (shareElement)
 | 
| @@ -997,8 +997,8 @@ static inline bool isAtShadowBoundary(const Element* element)
 | 
|      return parentNode && parentNode->isShadowRoot();
 | 
|  }
 | 
|  
 | 
| -PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderStyle* defaultParent,
 | 
| -    StyleSharingBehavior sharingBehavior, RuleMatchingBehavior matchingBehavior, RenderRegion* regionForStyling)
 | 
| +PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderStyle* defaultParent, StyleSharingBehavior sharingBehavior,
 | 
| +    RuleMatchingBehavior matchingBehavior, RenderRegion* regionForStyling, int childIndex)
 | 
|  {
 | 
|      // Once an element has a renderer, we don't try to destroy it, since otherwise the renderer
 | 
|      // will vanish if a style recalc happens during loading.
 | 
| @@ -1013,7 +1013,7 @@ PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderS
 | 
|      }
 | 
|  
 | 
|      StyleResolverState& state = m_state;
 | 
| -    state.initForStyleResolve(document(), element, defaultParent, regionForStyling);
 | 
| +    state.initForStyleResolve(document(), element, childIndex, defaultParent, regionForStyling);
 | 
|      if (sharingBehavior == AllowStyleSharing && !state.distributedToInsertionPoint()) {
 | 
|          RenderStyle* sharedStyle = locateSharedStyle();
 | 
|          if (sharedStyle) {
 | 
| @@ -1204,7 +1204,7 @@ PassRefPtr<RenderStyle> StyleResolver::pseudoStyleForElement(Element* e, const P
 | 
|  
 | 
|      StyleResolverState& state = m_state;
 | 
|  
 | 
| -    state.initForStyleResolve(document(), e, parentStyle);
 | 
| +    state.initForStyleResolve(document(), e, 0, parentStyle);
 | 
|  
 | 
|      if (pseudoStyleRequest.allowsInheritance(state.parentStyle())) {
 | 
|          state.setStyle(RenderStyle::create());
 | 
| @@ -1704,7 +1704,7 @@ PassRefPtr<CSSRuleList> StyleResolver::pseudoStyleRulesForElement(Element* e, Ps
 | 
|      if (!e || !e->document()->haveStylesheetsLoaded())
 | 
|          return 0;
 | 
|  
 | 
| -    m_state.initForStyleResolve(document(), e, 0);
 | 
| +    m_state.initForStyleResolve(document(), e);
 | 
|  
 | 
|      ElementRuleCollector collector(this, m_state);
 | 
|      collector.setMode(SelectorChecker::CollectingRules);
 | 
| @@ -2051,7 +2051,7 @@ void StyleResolver::applyMatchedProperties(const MatchResult& matchResult, const
 | 
|  
 | 
|  void StyleResolver::applyPropertyToStyle(CSSPropertyID id, CSSValue* value, RenderStyle* style)
 | 
|  {
 | 
| -    m_state.initForStyleResolve(document(), 0, style);
 | 
| +    m_state.initForStyleResolve(document(), 0, 0, style);
 | 
|      m_state.setStyle(style);
 | 
|      applyPropertyToCurrentStyle(id, value);
 | 
|  }
 | 
| 
 |