2 * Copyright (C) 2007 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, 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 COMPUTER, 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.
27 #include "WebKitDLL.h"
28 #include "WebURLCredential.h"
31 #include <WebCore/BString.h>
33 using namespace WebCore;
35 // WebURLCredential ----------------------------------------------------------------
37 WebURLCredential::WebURLCredential(const Credential& credential)
39 , m_credential(credential)
42 gClassNameCount.add("WebURLCredential");
45 WebURLCredential::~WebURLCredential()
48 gClassNameCount.remove("WebURLCredential");
51 WebURLCredential* WebURLCredential::createInstance()
53 WebURLCredential* instance = new WebURLCredential(Credential());
58 WebURLCredential* WebURLCredential::createInstance(const Credential& credential)
60 WebURLCredential* instance = new WebURLCredential(credential);
65 // IUnknown -------------------------------------------------------------------
67 HRESULT STDMETHODCALLTYPE WebURLCredential::QueryInterface(REFIID riid, void** ppvObject)
70 if (IsEqualGUID(riid, IID_IUnknown))
71 *ppvObject = static_cast<IUnknown*>(this);
72 else if (IsEqualGUID(riid, __uuidof(WebURLCredential)))
73 *ppvObject = static_cast<WebURLCredential*>(this);
74 else if (IsEqualGUID(riid, IID_IWebURLCredential))
75 *ppvObject = static_cast<IWebURLCredential*>(this);
83 ULONG STDMETHODCALLTYPE WebURLCredential::AddRef(void)
88 ULONG STDMETHODCALLTYPE WebURLCredential::Release(void)
90 ULONG newRef = --m_refCount;
97 // IWebURLCredential -------------------------------------------------------------------
98 HRESULT STDMETHODCALLTYPE WebURLCredential::hasPassword(
99 /* [out, retval] */ BOOL* result)
101 *result = m_credential.hasPassword();
105 HRESULT STDMETHODCALLTYPE WebURLCredential::initWithUser(
106 /* [in] */ BSTR user,
107 /* [in] */ BSTR password,
108 /* [in] */ WebURLCredentialPersistence persistence)
110 CredentialPersistence corePersistence = CredentialPersistenceNone;
111 switch (persistence) {
112 case WebURLCredentialPersistenceNone:
114 case WebURLCredentialPersistenceForSession:
115 corePersistence = CredentialPersistenceForSession;
117 case WebURLCredentialPersistencePermanent:
118 corePersistence = CredentialPersistencePermanent;
121 ASSERT_NOT_REACHED();
125 m_credential = Credential(String(user, SysStringLen(user)), String(password, SysStringLen(password)), corePersistence);
129 HRESULT STDMETHODCALLTYPE WebURLCredential::password(
130 /* [out, retval] */ BSTR* password)
132 BString str = m_credential.password();
133 *password = str.release();
137 HRESULT STDMETHODCALLTYPE WebURLCredential::persistence(
138 /* [out, retval] */ WebURLCredentialPersistence* result)
140 switch (m_credential.persistence()) {
141 case CredentialPersistenceNone:
142 *result = WebURLCredentialPersistenceNone;
144 case CredentialPersistenceForSession:
145 *result = WebURLCredentialPersistenceForSession;
147 case CredentialPersistencePermanent:
148 *result = WebURLCredentialPersistencePermanent;
151 ASSERT_NOT_REACHED();
157 HRESULT STDMETHODCALLTYPE WebURLCredential::user(
158 /* [out, retval] */ BSTR* result)
160 BString str = m_credential.user();
161 *result = str.release();
165 const WebCore::Credential& WebURLCredential::credential() const