Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: Source/core/dom/ChildNodeList.cpp

Issue 229213002: Make HTMLCollection / NodeList backward traversal consistent with forward one (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2007, 2008 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2007, 2008 Apple Inc. All rights reserved.
6 * Copyright (C) 2014 Samsung Electronics. All rights reserved. 6 * Copyright (C) 2014 Samsung Electronics. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 26 matching lines...) Expand all
37 Node* ChildNodeList::virtualOwnerNode() const 37 Node* ChildNodeList::virtualOwnerNode() const
38 { 38 {
39 return &ownerNode(); 39 return &ownerNode();
40 } 40 }
41 41
42 ChildNodeList::~ChildNodeList() 42 ChildNodeList::~ChildNodeList()
43 { 43 {
44 m_parent->nodeLists()->removeChildNodeList(this); 44 m_parent->nodeLists()->removeChildNodeList(this);
45 } 45 }
46 46
47 Node* ChildNodeList::itemBefore(const Node* previous) const
48 {
49 return LIKELY(!!previous) ? previous->previousSibling() : rootNode().lastChi ld();
50 }
51
52 Node* ChildNodeList::traverseForwardToOffset(unsigned offset, Node& currentNode, unsigned& currentOffset) const 47 Node* ChildNodeList::traverseForwardToOffset(unsigned offset, Node& currentNode, unsigned& currentOffset) const
53 { 48 {
54 ASSERT(currentOffset < offset); 49 ASSERT(currentOffset < offset);
55 Node* next = &currentNode; 50 Node* next = &currentNode;
56 while ((next = next->nextSibling())) { 51 while ((next = next->nextSibling())) {
57 if (++currentOffset == offset) 52 if (++currentOffset == offset)
58 return next; 53 return next;
59 } 54 }
60 return 0; 55 return 0;
61 } 56 }
62 57
58 Node* ChildNodeList::traverseBackwardToOffset(unsigned offset, Node& currentNode , unsigned& currentOffset) const
59 {
60 ASSERT(currentOffset > offset);
61 Node* previous = &currentNode;
62 while ((previous = previous->previousSibling())) {
63 if (--currentOffset == offset)
64 return previous;
65 }
66 return 0;
67 }
68
63 } // namespace WebCore 69 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698