| Index: Source/core/page/FrameTree.cpp
|
| diff --git a/Source/core/page/FrameTree.cpp b/Source/core/page/FrameTree.cpp
|
| index eb283341c28667bb661977067de491ae0abcf974..ba484fed8f5815e721338fb61f635661cfb2fd31 100644
|
| --- a/Source/core/page/FrameTree.cpp
|
| +++ b/Source/core/page/FrameTree.cpp
|
| @@ -116,9 +116,18 @@ LocalFrame* FrameTree::lastChild() const
|
| return toLocalFrame(m_thisFrame->loader().client()->lastChild());
|
| }
|
|
|
| +bool FrameTree::uniqueNameExists(const AtomicString& name) const
|
| +{
|
| + for (LocalFrame* frame = top(); frame; frame = frame->tree().traverseNext()) {
|
| + if (frame->tree().uniqueName() == name)
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| AtomicString FrameTree::uniqueChildName(const AtomicString& requestedName) const
|
| {
|
| - if (!requestedName.isEmpty() && !child(requestedName) && requestedName != "_blank")
|
| + if (!requestedName.isEmpty() && !uniqueNameExists(requestedName) && requestedName != "_blank")
|
| return requestedName;
|
|
|
| // Create a repeatable name for a child about to be added to us. The name must be
|
| @@ -184,7 +193,7 @@ LocalFrame* FrameTree::scopedChild(const AtomicString& name) const
|
| return 0;
|
|
|
| for (LocalFrame* child = firstChild(); child; child = child->tree().nextSibling())
|
| - if (child->tree().uniqueName() == name && child->inScope(scope))
|
| + if (child->tree().name() == name && child->inScope(scope))
|
| return child;
|
| return 0;
|
| }
|
| @@ -226,7 +235,7 @@ unsigned FrameTree::childCount() const
|
| LocalFrame* FrameTree::child(const AtomicString& name) const
|
| {
|
| for (LocalFrame* child = firstChild(); child; child = child->tree().nextSibling())
|
| - if (child->tree().uniqueName() == name)
|
| + if (child->tree().name() == name)
|
| return child;
|
| return 0;
|
| }
|
| @@ -248,7 +257,7 @@ LocalFrame* FrameTree::find(const AtomicString& name) const
|
|
|
| // Search subtree starting with this frame first.
|
| for (LocalFrame* frame = m_thisFrame; frame; frame = frame->tree().traverseNext(m_thisFrame))
|
| - if (frame->tree().uniqueName() == name)
|
| + if (frame->tree().name() == name)
|
| return frame;
|
|
|
| // Search the entire tree for this page next.
|
| @@ -259,7 +268,7 @@ LocalFrame* FrameTree::find(const AtomicString& name) const
|
| return 0;
|
|
|
| for (LocalFrame* frame = page->mainFrame(); frame; frame = frame->tree().traverseNext())
|
| - if (frame->tree().uniqueName() == name)
|
| + if (frame->tree().name() == name)
|
| return frame;
|
|
|
| // Search the entire tree of each of the other pages in this namespace.
|
| @@ -270,7 +279,7 @@ LocalFrame* FrameTree::find(const AtomicString& name) const
|
| Page* otherPage = *it;
|
| if (otherPage != page) {
|
| for (LocalFrame* frame = otherPage->mainFrame(); frame; frame = frame->tree().traverseNext()) {
|
| - if (frame->tree().uniqueName() == name)
|
| + if (frame->tree().name() == name)
|
| return frame;
|
| }
|
| }
|
|
|