| OLD | NEW | 
|---|
| 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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 75     return tagName == tableTag | 75     return tagName == tableTag | 
| 76         || tagName == tbodyTag | 76         || tagName == tbodyTag | 
| 77         || tagName == tfootTag | 77         || tagName == tfootTag | 
| 78         || tagName == theadTag | 78         || tagName == theadTag | 
| 79         || tagName == trTag; | 79         || tagName == trTag; | 
| 80 } | 80 } | 
| 81 | 81 | 
| 82 } // namespace | 82 } // namespace | 
| 83 | 83 | 
| 84 template<typename ChildType> | 84 template<typename ChildType> | 
| 85 PassRefPtr<ChildType> HTMLConstructionSite::attach(ContainerNode* parent, PassRe
     fPtr<ChildType> prpChild) | 85 PassRefPtr<ChildType> HTMLConstructionSite::attach(ContainerNode* rawParent, Pas
     sRefPtr<ChildType> prpChild) | 
| 86 { | 86 { | 
| 87     RefPtr<ChildType> child = prpChild; | 87     RefPtr<ChildType> child = prpChild; | 
|  | 88     RefPtr<ContainerNode> parent = rawParent; | 
| 88 | 89 | 
| 89     // FIXME: It's confusing that HTMLConstructionSite::attach does the magic | 90     // FIXME: It's confusing that HTMLConstructionSite::attach does the magic | 
| 90     // redirection to the foster parent but HTMLConstructionSite::attachAtSite | 91     // redirection to the foster parent but HTMLConstructionSite::attachAtSite | 
| 91     // doesn't.  It feels like we're missing a concept somehow. | 92     // doesn't. It feels like we're missing a concept somehow. | 
| 92     if (shouldFosterParent()) { | 93     if (shouldFosterParent()) { | 
| 93         fosterParent(child.get()); | 94         fosterParent(child.get()); | 
| 94         ASSERT(child->attached() || !child->parentNode() || !child->parentNode()
     ->attached()); | 95         ASSERT(child->attached() || !child->parentNode() || !child->parentNode()
     ->attached()); | 
| 95         return child.release(); | 96         return child.release(); | 
| 96     } | 97     } | 
| 97 | 98 | 
| 98     parent->parserAddChild(child); | 99     parent->parserAddChild(child); | 
| 99 | 100 | 
| 100     // An event handler (DOM Mutation, beforeload, et al.) could have removed | 101     // An event handler (DOM Mutation, beforeload, et al.) could have removed | 
| 101     // the child, in which case we shouldn't try attaching it. | 102     // the child, in which case we shouldn't try attaching it. | 
| 102     if (!child->parentNode()) | 103     if (!child->parentNode()) | 
| 103         return child.release(); | 104         return child.release(); | 
| 104 | 105 | 
| 105     // It's slightly unfortunate that we need to hold a reference to child |  | 
| 106     // here to call attach().  We should investigate whether we can rely on |  | 
| 107     // |parent| to hold a ref at this point.  In the common case (at least |  | 
| 108     // for elements), however, we'll get to use this ref in the stack of |  | 
| 109     // open elements. |  | 
| 110     if (parent->attached() && !child->attached()) | 106     if (parent->attached() && !child->attached()) | 
| 111         child->attach(); | 107         child->attach(); | 
| 112     return child.release(); | 108     return child.release(); | 
| 113 } | 109 } | 
| 114 | 110 | 
| 115 void HTMLConstructionSite::attachAtSite(const AttachmentSite& site, PassRefPtr<N
     ode> prpChild) | 111 void HTMLConstructionSite::attachAtSite(const AttachmentSite& site, PassRefPtr<N
     ode> prpChild) | 
| 116 { | 112 { | 
| 117     // FIXME: It's unfortunate that we need to hold a reference to child | 113     // FIXME: It's unfortunate that we need to hold a reference to child | 
| 118     // here to call attach().  We should investigate whether we can rely on | 114     // here to call attach().  We should investigate whether we can rely on | 
| 119     // |site.parent| to hold a ref at this point. | 115     // |site.parent| to hold a ref at this point. | 
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 495 } | 491 } | 
| 496 | 492 | 
| 497 void HTMLConstructionSite::fosterParent(Node* node) | 493 void HTMLConstructionSite::fosterParent(Node* node) | 
| 498 { | 494 { | 
| 499     AttachmentSite site; | 495     AttachmentSite site; | 
| 500     findFosterSite(site); | 496     findFosterSite(site); | 
| 501     attachAtSite(site, node); | 497     attachAtSite(site, node); | 
| 502 } | 498 } | 
| 503 | 499 | 
| 504 } | 500 } | 
| OLD | NEW | 
|---|