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

Side by Side Diff: Source/core/svg/SVGUseElement.cpp

Issue 935283002: Rename {Author,UserAgent}ShadowRoot to {Open,Closed}ShadowRoot. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix inspector tests Created 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/svg/SVGElement.cpp ('k') | Source/core/testing/Internals.h » ('j') | 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) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org> 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org>
3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
4 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. 4 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved.
5 * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 5 * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
6 * Copyright (C) 2012 University of Szeged 6 * Copyright (C) 2012 University of Szeged
7 * Copyright (C) 2012 Renata Hodovan <reni@webkit.org> 7 * Copyright (C) 2012 Renata Hodovan <reni@webkit.org>
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 addToPropertyMap(m_x); 60 addToPropertyMap(m_x);
61 addToPropertyMap(m_y); 61 addToPropertyMap(m_y);
62 addToPropertyMap(m_width); 62 addToPropertyMap(m_width);
63 addToPropertyMap(m_height); 63 addToPropertyMap(m_height);
64 } 64 }
65 65
66 PassRefPtrWillBeRawPtr<SVGUseElement> SVGUseElement::create(Document& document) 66 PassRefPtrWillBeRawPtr<SVGUseElement> SVGUseElement::create(Document& document)
67 { 67 {
68 // Always build a user agent #shadow-root for SVGUseElement. 68 // Always build a user agent #shadow-root for SVGUseElement.
69 RefPtrWillBeRawPtr<SVGUseElement> use = adoptRefWillBeNoop(new SVGUseElement (document)); 69 RefPtrWillBeRawPtr<SVGUseElement> use = adoptRefWillBeNoop(new SVGUseElement (document));
70 use->ensureUserAgentShadowRoot(); 70 use->ensureClosedShadowRoot();
71 return use.release(); 71 return use.release();
72 } 72 }
73 73
74 SVGUseElement::~SVGUseElement() 74 SVGUseElement::~SVGUseElement()
75 { 75 {
76 setDocumentResource(0); 76 setDocumentResource(0);
77 #if !ENABLE(OILPAN) 77 #if !ENABLE(OILPAN)
78 clearResourceReferences(); 78 clearResourceReferences();
79 #endif 79 #endif
80 } 80 }
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 m_needsShadowTreeRecreation = true; 322 m_needsShadowTreeRecreation = true;
323 document().scheduleUseShadowTreeUpdate(*this); 323 document().scheduleUseShadowTreeUpdate(*this);
324 } 324 }
325 325
326 void SVGUseElement::clearResourceReferences() 326 void SVGUseElement::clearResourceReferences()
327 { 327 {
328 if (m_targetElementInstance) 328 if (m_targetElementInstance)
329 m_targetElementInstance = nullptr; 329 m_targetElementInstance = nullptr;
330 330
331 // FIXME: We should try to optimize this, to at least allow partial reclones . 331 // FIXME: We should try to optimize this, to at least allow partial reclones .
332 if (ShadowRoot* shadowTreeRootElement = userAgentShadowRoot()) 332 if (ShadowRoot* shadowTreeRootElement = closedShadowRoot())
333 shadowTreeRootElement->removeChildren(OmitSubtreeModifiedEvent); 333 shadowTreeRootElement->removeChildren(OmitSubtreeModifiedEvent);
334 334
335 m_needsShadowTreeRecreation = false; 335 m_needsShadowTreeRecreation = false;
336 document().unscheduleUseShadowTreeUpdate(*this); 336 document().unscheduleUseShadowTreeUpdate(*this);
337 337
338 removeAllOutgoingReferences(); 338 removeAllOutgoingReferences();
339 } 339 }
340 340
341 void SVGUseElement::buildPendingResource() 341 void SVGUseElement::buildPendingResource()
342 { 342 {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 return; 397 return;
398 398
399 // Do not allow self-referencing. 399 // Do not allow self-referencing.
400 // 'target' may be null, if it's a non SVG namespaced element. 400 // 'target' may be null, if it's a non SVG namespaced element.
401 if (!target || target == this) 401 if (!target || target == this)
402 return; 402 return;
403 403
404 // Set up root SVG element in shadow tree. 404 // Set up root SVG element in shadow tree.
405 RefPtrWillBeRawPtr<Element> newChild = target->cloneElementWithoutChildren() ; 405 RefPtrWillBeRawPtr<Element> newChild = target->cloneElementWithoutChildren() ;
406 m_targetElementInstance = toSVGElement(newChild.get()); 406 m_targetElementInstance = toSVGElement(newChild.get());
407 ShadowRoot* shadowTreeRootElement = userAgentShadowRoot(); 407 ShadowRoot* shadowTreeRootElement = closedShadowRoot();
408 shadowTreeRootElement->appendChild(newChild.release()); 408 shadowTreeRootElement->appendChild(newChild.release());
409 409
410 // Clone the target subtree into the shadow tree, not handling <use> and <sy mbol> yet. 410 // Clone the target subtree into the shadow tree, not handling <use> and <sy mbol> yet.
411 411
412 // SVG specification does not say a word about <use> & cycles. My view on th is is: just ignore it! 412 // SVG specification does not say a word about <use> & cycles. My view on th is is: just ignore it!
413 // Non-appearing <use> content is easier to debug, then half-appearing conte nt. 413 // Non-appearing <use> content is easier to debug, then half-appearing conte nt.
414 if (!buildShadowTree(target, m_targetElementInstance.get(), false)) { 414 if (!buildShadowTree(target, m_targetElementInstance.get(), false)) {
415 clearResourceReferences(); 415 clearResourceReferences();
416 return; 416 return;
417 } 417 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 || isSVGEllipseElement(element) 457 || isSVGEllipseElement(element)
458 || isSVGPolygonElement(element) 458 || isSVGPolygonElement(element)
459 || isSVGPolylineElement(element) 459 || isSVGPolylineElement(element)
460 || isSVGTextElement(element); 460 || isSVGTextElement(element);
461 } 461 }
462 462
463 void SVGUseElement::toClipPath(Path& path) 463 void SVGUseElement::toClipPath(Path& path)
464 { 464 {
465 ASSERT(path.isEmpty()); 465 ASSERT(path.isEmpty());
466 466
467 Node* n = userAgentShadowRoot()->firstChild(); 467 Node* n = closedShadowRoot()->firstChild();
468 if (!n || !n->isSVGElement()) 468 if (!n || !n->isSVGElement())
469 return; 469 return;
470 SVGElement& element = toSVGElement(*n); 470 SVGElement& element = toSVGElement(*n);
471 471
472 if (element.isSVGGraphicsElement()) { 472 if (element.isSVGGraphicsElement()) {
473 if (!isDirectReference(element)) { 473 if (!isDirectReference(element)) {
474 // Spec: Indirect references are an error (14.3.5) 474 // Spec: Indirect references are an error (14.3.5)
475 document().accessSVGExtensions().reportError("Not allowed to use ind irect reference in <clip-path>"); 475 document().accessSVGExtensions().reportError("Not allowed to use ind irect reference in <clip-path>");
476 } else { 476 } else {
477 toSVGGraphicsElement(element).toClipPath(path); 477 toSVGGraphicsElement(element).toClipPath(path);
478 // FIXME: Avoid manual resolution of x/y here. Its potentially harmf ul. 478 // FIXME: Avoid manual resolution of x/y here. Its potentially harmf ul.
479 SVGLengthContext lengthContext(this); 479 SVGLengthContext lengthContext(this);
480 path.translate(FloatSize(m_x->currentValue()->value(lengthContext), m_y->currentValue()->value(lengthContext))); 480 path.translate(FloatSize(m_x->currentValue()->value(lengthContext), m_y->currentValue()->value(lengthContext)));
481 path.transform(calculateAnimatedLocalTransform()); 481 path.transform(calculateAnimatedLocalTransform());
482 } 482 }
483 } 483 }
484 } 484 }
485 485
486 LayoutObject* SVGUseElement::rendererClipChild() const 486 LayoutObject* SVGUseElement::rendererClipChild() const
487 { 487 {
488 if (Node* n = userAgentShadowRoot()->firstChild()) { 488 if (Node* n = closedShadowRoot()->firstChild()) {
489 if (n->isSVGElement() && isDirectReference(toSVGElement(*n))) 489 if (n->isSVGElement() && isDirectReference(toSVGElement(*n)))
490 return n->renderer(); 490 return n->renderer();
491 } 491 }
492 492
493 return 0; 493 return 0;
494 } 494 }
495 495
496 bool SVGUseElement::buildShadowTree(SVGElement* target, SVGElement* targetInstan ce, bool foundUse) 496 bool SVGUseElement::buildShadowTree(SVGElement* target, SVGElement* targetInstan ce, bool foundUse)
497 { 497 {
498 ASSERT(target); 498 ASSERT(target);
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 787
788 if (m_resource) 788 if (m_resource)
789 m_resource->removeClient(this); 789 m_resource->removeClient(this);
790 790
791 m_resource = resource; 791 m_resource = resource;
792 if (m_resource) 792 if (m_resource)
793 m_resource->addClient(this); 793 m_resource->addClient(this);
794 } 794 }
795 795
796 } 796 }
OLDNEW
« no previous file with comments | « Source/core/svg/SVGElement.cpp ('k') | Source/core/testing/Internals.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698