1/*
2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "config.h"
27#include "CredentialBase.h"
28
29#include "Credential.h"
30
31namespace WebCore {
32
33// Need to enforce empty, non-null strings due to the pickiness of the String == String operator
34// combined with the semantics of the String(NSString*) constructor
35CredentialBase::CredentialBase()
36 : m_user(emptyString())
37 , m_password(emptyString())
38 , m_persistence(CredentialPersistenceNone)
39{
40}
41
42// Need to enforce empty, non-null strings due to the pickiness of the String == String operator
43// combined with the semantics of the String(NSString*) constructor
44CredentialBase::CredentialBase(const String& user, const String& password, CredentialPersistence persistence)
45 : m_user(user.length() ? user : emptyString())
46 , m_password(password.length() ? password : emptyString())
47 , m_persistence(persistence)
48{
49}
50
51CredentialBase::CredentialBase(const Credential& original, CredentialPersistence persistence)
52 : m_user(original.user())
53 , m_password(original.password())
54 , m_persistence(persistence)
55{
56}
57
58bool CredentialBase::isEmpty() const
59{
60 return m_user.isEmpty() && m_password.isEmpty();
61}
62
63const String& CredentialBase::user() const
64{
65 return m_user;
66}
67
68const String& CredentialBase::password() const
69{
70 return m_password;
71}
72
73bool CredentialBase::hasPassword() const
74{
75 return !m_password.isEmpty();
76}
77
78CredentialPersistence CredentialBase::persistence() const
79{
80 return m_persistence;
81}
82
83bool CredentialBase::compare(const Credential& a, const Credential& b)
84{
85 // Check persistence first since all credential types
86 // have the persistence property.
87 if (a.persistence() != b.persistence())
88 return false;
89 if (a.user() != b.user())
90 return false;
91 if (a.password() != b.password())
92 return false;
93
94 return Credential::platformCompare(a, b);
95}
96
97}
98