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

Side by Side Diff: Source/WebCore/html/parser/HTMLConstructionSite.cpp

Issue 12091046: Merge 140537 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1364/
Patch Set: Created 7 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 while (hasImpliedEndTag(currentStackItem())) 483 while (hasImpliedEndTag(currentStackItem()))
484 m_openElements.pop(); 484 m_openElements.pop();
485 } 485 }
486 486
487 void HTMLConstructionSite::findFosterSite(HTMLConstructionSiteTask& task) 487 void HTMLConstructionSite::findFosterSite(HTMLConstructionSiteTask& task)
488 { 488 {
489 #if ENABLE(TEMPLATE_ELEMENT) 489 #if ENABLE(TEMPLATE_ELEMENT)
490 // When a node is to be foster parented, the last template element with no t able element is below it in the stack of open elements is the foster parent elem ent (NOT the template's parent!) 490 // When a node is to be foster parented, the last template element with no t able element is below it in the stack of open elements is the foster parent elem ent (NOT the template's parent!)
491 HTMLElementStack::ElementRecord* lastTemplateElement = m_openElements.topmos t(templateTag.localName()); 491 HTMLElementStack::ElementRecord* lastTemplateElement = m_openElements.topmos t(templateTag.localName());
492 if (lastTemplateElement && !m_openElements.inTableScope(tableTag)) { 492 if (lastTemplateElement && !m_openElements.inTableScope(tableTag)) {
493 task.parent = lastTemplateElement->element(); 493 task.parent = toHTMLTemplateElement(lastTemplateElement->element())->con tent();
494 return; 494 return;
495 } 495 }
496
496 #endif 497 #endif
497 498
498 HTMLElementStack::ElementRecord* lastTableElementRecord = m_openElements.top most(tableTag.localName()); 499 HTMLElementStack::ElementRecord* lastTableElementRecord = m_openElements.top most(tableTag.localName());
499 if (lastTableElementRecord) { 500 if (lastTableElementRecord) {
500 Element* lastTableElement = lastTableElementRecord->element(); 501 Element* lastTableElement = lastTableElementRecord->element();
501 ContainerNode* parent = lastTableElement->parentNode(); 502 ContainerNode* parent = lastTableElement->parentNode();
502 // When parsing HTML fragments, we skip step 4.2 ("Let root be a new htm l element with no attributes") for efficiency, 503 // When parsing HTML fragments, we skip step 4.2 ("Let root be a new htm l element with no attributes") for efficiency,
503 // and instead use the DocumentFragment as a root node. So we must treat the root node (DocumentFragment) as if it is a html element here. 504 // and instead use the DocumentFragment as a root node. So we must treat the root node (DocumentFragment) as if it is a html element here.
504 if (parent && (parent->isElementNode() || (m_isParsingFragment && parent == m_openElements.rootNode()))) { 505 if (parent && (parent->isElementNode() || (m_isParsingFragment && parent == m_openElements.rootNode()))) {
505 task.parent = parent; 506 task.parent = parent;
(...skipping 21 matching lines...) Expand all
527 task.child = node; 528 task.child = node;
528 ASSERT(task.parent); 529 ASSERT(task.parent);
529 530
530 if (task.parent->document() != task.child->document()) 531 if (task.parent->document() != task.child->document())
531 task.parent->document()->adoptNode(task.child, ASSERT_NO_EXCEPTION); 532 task.parent->document()->adoptNode(task.child, ASSERT_NO_EXCEPTION);
532 533
533 m_attachmentQueue.append(task); 534 m_attachmentQueue.append(task);
534 } 535 }
535 536
536 } 537 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698