• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 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. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef AuthenticationChallengeProxy_h
27 #define AuthenticationChallengeProxy_h
28 
29 #include "APIObject.h"
30 #include <WebCore/AuthenticationChallenge.h>
31 #include <wtf/PassRefPtr.h>
32 
33 namespace CoreIPC {
34     class ArgumentDecoder;
35     class Connection;
36     class MessageID;
37 }
38 
39 namespace WebKit {
40 
41 class AuthenticationDecisionListener;
42 class WebCredential;
43 class WebProcessProxy;
44 class WebProtectionSpace;
45 
46 class AuthenticationChallengeProxy : public APIObject {
47 public:
48     static const Type APIType = TypeAuthenticationChallenge;
49 
create(const WebCore::AuthenticationChallenge & authenticationChallenge,uint64_t challengeID,WebProcessProxy * process)50     static PassRefPtr<AuthenticationChallengeProxy> create(const WebCore::AuthenticationChallenge& authenticationChallenge, uint64_t challengeID, WebProcessProxy* process)
51     {
52         return adoptRef(new AuthenticationChallengeProxy(authenticationChallenge, challengeID, process));
53     }
54 
55     ~AuthenticationChallengeProxy();
56 
57     void useCredential(WebCredential*);
58     void cancel();
59 
listener()60     AuthenticationDecisionListener* listener() const { return m_listener.get(); }
61     WebCredential* proposedCredential() const;
62     WebProtectionSpace* protectionSpace() const;
previousFailureCount()63     int previousFailureCount() const { return m_coreAuthenticationChallenge.previousFailureCount(); }
64 
65 private:
66     AuthenticationChallengeProxy(const WebCore::AuthenticationChallenge&, uint64_t challengeID, WebProcessProxy*);
67 
type()68     virtual Type type() const { return APIType; }
69 
70     WebCore::AuthenticationChallenge m_coreAuthenticationChallenge;
71     uint64_t m_challengeID;
72     RefPtr<WebProcessProxy> m_process;
73     RefPtr<AuthenticationDecisionListener> m_listener;
74     mutable RefPtr<WebCredential> m_webCredential;
75     mutable RefPtr<WebProtectionSpace> m_webProtectionSpace;
76 };
77 
78 } // namespace WebKit
79 
80 #endif // WebAuthenticationChallengeProxy_h
81