| 
									
										
										
										
											2021-09-28 02:11:55 +03:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibJS/Runtime/Array.h>
 | 
					
						
							|  |  |  | #include <LibJS/Runtime/IteratorOperations.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Bindings/URLSearchParamsIteratorWrapper.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Bindings/Wrapper.h>
 | 
					
						
							|  |  |  | #include <LibWeb/URL/URLSearchParamsIterator.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::URL { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | JS::Object* URLSearchParamsIterator::next() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     auto& global_object = wrapper()->global_object(); | 
					
						
							|  |  |  |     auto& vm = global_object.vm(); | 
					
						
							| 
									
										
										
										
											2022-08-16 00:20:49 +01:00
										 |  |  |     auto& realm = *global_object.associated_realm(); | 
					
						
							| 
									
										
										
										
											2021-09-28 02:11:55 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (m_index >= m_url_search_params.m_list.size()) | 
					
						
							| 
									
										
										
										
											2022-08-21 15:56:27 +01:00
										 |  |  |         return create_iterator_result_object(vm, JS::js_undefined(), true); | 
					
						
							| 
									
										
										
										
											2021-09-28 02:11:55 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     auto& entry = m_url_search_params.m_list[m_index++]; | 
					
						
							|  |  |  |     if (m_iteration_kind == JS::Object::PropertyKind::Key) | 
					
						
							| 
									
										
										
										
											2022-08-21 15:56:27 +01:00
										 |  |  |         return create_iterator_result_object(vm, JS::js_string(vm, entry.name), false); | 
					
						
							| 
									
										
										
										
											2021-09-28 02:11:55 +03:00
										 |  |  |     else if (m_iteration_kind == JS::Object::PropertyKind::Value) | 
					
						
							| 
									
										
										
										
											2022-08-21 15:56:27 +01:00
										 |  |  |         return create_iterator_result_object(vm, JS::js_string(vm, entry.value), false); | 
					
						
							| 
									
										
										
										
											2021-09-28 02:11:55 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-21 15:56:27 +01:00
										 |  |  |     return create_iterator_result_object(vm, JS::Array::create_from(realm, { JS::js_string(vm, entry.name), JS::js_string(vm, entry.value) }), false); | 
					
						
							| 
									
										
										
										
											2021-09-28 02:11:55 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void URLSearchParamsIterator::visit_edges(JS::Cell::Visitor& visitor) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     visitor.visit(m_url_search_params.wrapper()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |