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

Unified Diff: Source/core/dom/DOMURLUtils.cpp

Issue 143313002: Implement URLSearchParams. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Handle dependency between URLUtils interfaces and URLSearchParams Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/dom/DOMURLUtils.cpp
diff --git a/Source/core/dom/DOMURLUtils.cpp b/Source/core/dom/DOMURLUtils.cpp
index 7e1fa195c5af5d86fe00115f540654c8e164e65c..7a58044af984215171064bd71451f5e5f207be7b 100644
--- a/Source/core/dom/DOMURLUtils.cpp
+++ b/Source/core/dom/DOMURLUtils.cpp
@@ -31,6 +31,12 @@
namespace WebCore {
+void DOMURLUtils::update(DOMURLUtils* impl)
+{
+ KURL url = impl->url();
Inactive 2014/01/21 15:25:58 We should probably ASSERT to make sure impl is not
sof 2014/01/21 21:16:47 When the context makes it unmistakably clear that
+ setSearchParams(impl, url.query());
+}
+
void DOMURLUtils::setHref(DOMURLUtils* impl, const String& value)
{
impl->setInput(value);
@@ -122,6 +128,12 @@ void DOMURLUtils::setSearch(DOMURLUtils* impl, const String& value)
if (!url.isValid())
return;
url.setQuery(value);
+
+ if (!value.isEmpty() && value[0] == '?')
+ setSearchParams(impl, value.substring(1));
+ else
+ setSearchParams(impl, value);
+
impl->setURL(url);
}
@@ -139,4 +151,45 @@ void DOMURLUtils::setHash(DOMURLUtils* impl, const String& value)
impl->setURL(url);
}
+DOMURLSearchParams* DOMURLUtils::searchParams(DOMURLUtils* impl, bool& isNull)
+{
+ if (!impl->m_searchParams)
+ createSearchParams(impl, impl->url().query());
+ isNull = false;
+ return impl->m_searchParams.get();
+}
+
+void DOMURLUtils::createSearchParams(DOMURLUtils* impl, const String& queryString)
+{
+ if (!impl->m_searchParams) {
+ impl->m_searchParams = adoptPtr(DOMURLSearchParams::create(queryString).get());
+ impl->m_searchParams->setURLObject(impl);
+ } else {
+ setSearchParams(impl, queryString);
+ }
+}
+
+void DOMURLUtils::setSearchParams(DOMURLUtils* impl, const String& queryString)
+{
+ if (!impl->m_searchParams)
+ return;
+
+ ASSERT(impl->m_searchParams->urlObject() == impl);
+ impl->m_searchParams->setInput(queryString);
+}
+
+void DOMURLUtils::setSearchParams(DOMURLUtils* impl, DOMURLSearchParams* searchParams)
+{
+ if (!searchParams)
+ return;
+
+ if (searchParams->urlObject())
+ impl->m_searchParams = adoptPtr(DOMURLSearchParams::create(searchParams).get());
+ else
+ impl->m_searchParams = adoptPtr(searchParams);
+
+ ASSERT(!impl->m_searchParams->urlObject());
+ impl->m_searchParams->setURLObject(impl);
+}
+
} // namespace WebCore

Powered by Google App Engine
This is Rietveld 408576698