2
* Copyright (C) 2010 Google, Inc. All Rights Reserved.
3
* Copyright (C) 2012 Apple Inc. All rights reserved.
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
14
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
18
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
#include <wtf/url/api/URLString.h>
33
#include <wtf/url/src/URLSegments.h>
38
class URLQueryCharsetConverter;
40
// ParsedURL represents a valid URL decomposed by components.
43
enum ParsedURLStringTag { ParsedURLString };
46
WTF_EXPORT_PRIVATE explicit ParsedURL(const String&, ParsedURLStringTag);
48
WTF_EXPORT_PRIVATE explicit ParsedURL(const String&, URLQueryCharsetConverter*);
49
WTF_EXPORT_PRIVATE explicit ParsedURL(const ParsedURL& base, const String& relative, URLQueryCharsetConverter*);
51
WTF_EXPORT_PRIVATE ParsedURL isolatedCopy() const;
53
bool isValid() const { return !m_spec.string().isNull(); }
55
// Return a URL component or a null String if the component is undefined for the URL.
56
WTF_EXPORT_PRIVATE String scheme() const;
57
WTF_EXPORT_PRIVATE bool hasStandardScheme() const;
59
WTF_EXPORT_PRIVATE String username() const;
60
WTF_EXPORT_PRIVATE String password() const;
61
WTF_EXPORT_PRIVATE String host() const;
63
WTF_EXPORT_PRIVATE bool hasPort() const;
64
WTF_EXPORT_PRIVATE String port() const;
65
WTF_EXPORT_PRIVATE void replacePort(unsigned short newPort);
66
WTF_EXPORT_PRIVATE void removePort();
68
WTF_EXPORT_PRIVATE String path() const;
69
WTF_EXPORT_PRIVATE String query() const;
71
WTF_EXPORT_PRIVATE bool hasFragment() const;
72
WTF_EXPORT_PRIVATE String fragment() const;
73
WTF_EXPORT_PRIVATE ParsedURL withoutFragment() const;
76
WTF_EXPORT_PRIVATE String baseAsString() const;
78
const URLString& spec() const { return m_spec; }
81
WTF_EXPORT_PRIVATE void print() const;
85
inline String segment(const URLComponent&) const;
88
URLSegments m_segments;