aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/URLSearchParams.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript/jsc/bindings/URLSearchParams.cpp')
-rw-r--r--src/javascript/jsc/bindings/URLSearchParams.cpp164
1 files changed, 0 insertions, 164 deletions
diff --git a/src/javascript/jsc/bindings/URLSearchParams.cpp b/src/javascript/jsc/bindings/URLSearchParams.cpp
deleted file mode 100644
index 0ce9554c7..000000000
--- a/src/javascript/jsc/bindings/URLSearchParams.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "URLSearchParams.h"
-
-#include "DOMURL.h"
-#include "wtf/URLParser.h"
-
-namespace WebCore {
-
-URLSearchParams::URLSearchParams(const String& init, DOMURL* associatedURL)
- : m_associatedURL(associatedURL)
- , m_pairs(init.startsWith('?') ? WTF::URLParser::parseURLEncodedForm(StringView(init).substring(1)) : WTF::URLParser::parseURLEncodedForm(init))
-{
-}
-
-URLSearchParams::URLSearchParams(const Vector<KeyValuePair<String, String>>& pairs)
- : m_pairs(pairs)
-{
-}
-
-ExceptionOr<Ref<URLSearchParams>> URLSearchParams::create(std::variant<Vector<Vector<String>>, Vector<KeyValuePair<String, String>>, String>&& variant)
-{
- auto visitor = WTF::makeVisitor([&](const Vector<Vector<String>>& vector) -> ExceptionOr<Ref<URLSearchParams>> {
- Vector<KeyValuePair<String, String>> pairs;
- for (const auto& pair : vector) {
- if (pair.size() != 2)
- return Exception { TypeError };
- pairs.append({pair[0], pair[1]});
- }
- return adoptRef(*new URLSearchParams(WTFMove(pairs))); }, [&](const Vector<KeyValuePair<String, String>>& pairs) -> ExceptionOr<Ref<URLSearchParams>> { return adoptRef(*new URLSearchParams(pairs)); }, [&](const String& string) -> ExceptionOr<Ref<URLSearchParams>> { return adoptRef(*new URLSearchParams(string, nullptr)); });
- return std::visit(visitor, variant);
-}
-
-String URLSearchParams::get(const String& name) const
-{
- for (const auto& pair : m_pairs) {
- if (pair.key == name)
- return pair.value;
- }
- return String();
-}
-
-bool URLSearchParams::has(const String& name) const
-{
- for (const auto& pair : m_pairs) {
- if (pair.key == name)
- return true;
- }
- return false;
-}
-
-void URLSearchParams::sort()
-{
- std::stable_sort(m_pairs.begin(), m_pairs.end(), [](const auto& a, const auto& b) {
- return WTF::codePointCompareLessThan(a.key, b.key);
- });
- updateURL();
-}
-
-void URLSearchParams::set(const String& name, const String& value)
-{
- for (auto& pair : m_pairs) {
- if (pair.key != name)
- continue;
- if (pair.value != value)
- pair.value = value;
- bool skippedFirstMatch = false;
- m_pairs.removeAllMatching([&](const auto& pair) {
- if (pair.key == name) {
- if (skippedFirstMatch)
- return true;
- skippedFirstMatch = true;
- }
- return false;
- });
- updateURL();
- return;
- }
- m_pairs.append({ name, value });
- updateURL();
-}
-
-void URLSearchParams::append(const String& name, const String& value)
-{
- m_pairs.append({ name, value });
- updateURL();
-}
-
-Vector<String> URLSearchParams::getAll(const String& name) const
-{
- Vector<String> values;
- values.reserveInitialCapacity(m_pairs.size());
- for (const auto& pair : m_pairs) {
- if (pair.key == name)
- values.uncheckedAppend(pair.value);
- }
- values.shrinkToFit();
- return values;
-}
-
-void URLSearchParams::remove(const String& name)
-{
- m_pairs.removeAllMatching([&](const auto& pair) {
- return pair.key == name;
- });
- updateURL();
-}
-
-String URLSearchParams::toString() const
-{
- return WTF::URLParser::serialize(m_pairs);
-}
-
-void URLSearchParams::updateURL()
-{
- if (m_associatedURL)
- m_associatedURL->setQuery(WTF::URLParser::serialize(m_pairs));
-}
-
-void URLSearchParams::updateFromAssociatedURL()
-{
- ASSERT(m_associatedURL);
- String search = m_associatedURL->search();
- m_pairs = search.startsWith('?') ? WTF::URLParser::parseURLEncodedForm(StringView(search).substring(1)) : WTF::URLParser::parseURLEncodedForm(search);
-}
-
-std::optional<KeyValuePair<String, String>> URLSearchParams::Iterator::next()
-{
- auto& pairs = m_target->pairs();
- if (m_index >= pairs.size())
- return std::nullopt;
-
- auto& pair = pairs[m_index++];
- return KeyValuePair<String, String> { pair.key, pair.value };
-}
-
-URLSearchParams::Iterator::Iterator(URLSearchParams& params)
- : m_target(params)
-{
-}
-
-}