mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 11:22:45 +00:00 
			
		
		
		
	LibWeb: Implement Element.removeAttributeNS
This commit is contained in:
		
							parent
							
								
									7a26a889cb
								
							
						
					
					
						commit
						3910efb80b
					
				
					 5 changed files with 59 additions and 1 deletions
				
			
		
							
								
								
									
										12
									
								
								Tests/LibWeb/Text/expected/DOM/Element-removeAttributeNS.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Tests/LibWeb/Text/expected/DOM/Element-removeAttributeNS.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
|      Original values | ||||
| xlink:href getAttributeNS = 'test' | ||||
| href getAttribute = 'test' | ||||
| Non-matching namespace | ||||
| xlink:href getAttributeNS = 'test' | ||||
| href getAttribute = 'test' | ||||
| Non-matching name | ||||
| xlink:href getAttributeNS = 'test' | ||||
| href getAttribute = 'test' | ||||
| Matching | ||||
| xlink:href getAttributeNS = 'null' | ||||
| href getAttribute = 'null' | ||||
							
								
								
									
										37
									
								
								Tests/LibWeb/Text/input/DOM/Element-removeAttributeNS.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Tests/LibWeb/Text/input/DOM/Element-removeAttributeNS.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| <script src="../include.js"></script> | ||||
| <svg xmlns="http://www.w3.org/2000/svg"> | ||||
|     <script id="with-xlink-href" xlink:href="test"></script> | ||||
|     <script id="no-xlink-href" href="test"></script> | ||||
| </svg> | ||||
| <script id="svg-script-element"> | ||||
|     test(() => { | ||||
|         const namespace = "http://www.w3.org/1999/xlink" | ||||
|         const xlinkNS = document.getElementById("with-xlink-href"); | ||||
|         const noNS = document.getElementById("no-xlink-href"); | ||||
| 
 | ||||
|         println("Original values"); | ||||
|         println(`xlink:href getAttributeNS = '${xlinkNS.getAttributeNS(namespace, "href")}'`); | ||||
|         println(`href getAttribute = '${noNS.getAttribute("href")}'`); | ||||
| 
 | ||||
|         println("Non-matching namespace"); | ||||
|         xlinkNS.removeAttributeNS(null, "href"); | ||||
|         noNS.removeAttributeNS(namespace, "href"); | ||||
| 
 | ||||
|         println(`xlink:href getAttributeNS = '${xlinkNS.getAttributeNS(namespace, "href")}'`); | ||||
|         println(`href getAttribute = '${noNS.getAttribute("href")}'`); | ||||
| 
 | ||||
|         println("Non-matching name"); | ||||
|         xlinkNS.removeAttributeNS(namespace, "thing"); | ||||
|         noNS.removeAttributeNS(null, "thing"); | ||||
| 
 | ||||
|         println(`xlink:href getAttributeNS = '${xlinkNS.getAttributeNS(namespace, "href")}'`); | ||||
|         println(`href getAttribute = '${noNS.getAttribute("href")}'`); | ||||
| 
 | ||||
|         println("Matching"); | ||||
|         xlinkNS.removeAttributeNS(namespace, "href"); | ||||
|         noNS.removeAttributeNS(null, "href"); | ||||
| 
 | ||||
|         println(`xlink:href getAttributeNS = '${xlinkNS.getAttributeNS(namespace, "href")}'`); | ||||
|         println(`href getAttribute = '${noNS.getAttribute("href")}'`); | ||||
|     }); | ||||
| </script> | ||||
|  | @ -305,6 +305,13 @@ void Element::remove_attribute(FlyString const& name) | |||
|     m_attributes->remove_attribute(name); | ||||
| } | ||||
| 
 | ||||
| // https://dom.spec.whatwg.org/#dom-element-removeattributens
 | ||||
| void Element::remove_attribute_ns(Optional<FlyString> const& namespace_, FlyString const& name) | ||||
| { | ||||
|     // The removeAttributeNS(namespace, localName) method steps are to remove an attribute given namespace, localName, and this, and then return undefined.
 | ||||
|     m_attributes->remove_attribute_ns(namespace_, name); | ||||
| } | ||||
| 
 | ||||
| // https://dom.spec.whatwg.org/#dom-element-hasattribute
 | ||||
| bool Element::has_attribute(FlyString const& name) const | ||||
| { | ||||
|  |  | |||
|  | @ -112,6 +112,7 @@ public: | |||
| 
 | ||||
|     void append_attribute(Attr&); | ||||
|     void remove_attribute(FlyString const& name); | ||||
|     void remove_attribute_ns(Optional<FlyString> const& namespace_, FlyString const& name); | ||||
| 
 | ||||
|     WebIDL::ExceptionOr<bool> toggle_attribute(FlyString const& name, Optional<bool> force); | ||||
|     size_t attribute_list_size() const; | ||||
|  |  | |||
|  | @ -35,7 +35,8 @@ interface Element : Node { | |||
|     [CEReactions] Attr? setAttributeNode(Attr attr); | ||||
|     [CEReactions] Attr? setAttributeNodeNS(Attr attr); | ||||
| 
 | ||||
|     [CEReactions] undefined removeAttribute(DOMString qualifiedName); | ||||
|     [CEReactions] undefined removeAttribute([FlyString] DOMString qualifiedName); | ||||
|     [CEReactions] undefined removeAttributeNS([FlyString] DOMString? namespace, [FlyString] DOMString localName); | ||||
|     [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force); | ||||
|     boolean hasAttribute(DOMString qualifiedName); | ||||
|     boolean hasAttributeNS([FlyString] DOMString? namespace, [FlyString] DOMString localName); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Shannon Booth
						Shannon Booth