summaryrefslogtreecommitdiffstats
path: root/net/http/http_auth_handler_ntlm.h
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-15 14:25:50 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-15 14:25:50 +0000
commitfa55e1931013409ddbce59ed39f8b12a351fd0c4 (patch)
tree1ff77c48d22f36173c1fa63ae8acb1faf896aa0d /net/http/http_auth_handler_ntlm.h
parente8da0a0066695284dbf698c9900617b3b159f33b (diff)
downloadchromium_src-fa55e1931013409ddbce59ed39f8b12a351fd0c4.zip
chromium_src-fa55e1931013409ddbce59ed39f8b12a351fd0c4.tar.gz
chromium_src-fa55e1931013409ddbce59ed39f8b12a351fd0c4.tar.bz2
Added factories for HttpAuthHandler.
The driving rationale for this change was to prevent choosing an AuthHandler when it is not supported on the system due to a missing runtime component (such as not being able to locate a gssapi shared library when seeing a Negotiate scheme). It also has the advantage (currently unused) of determining some per-auth-scheme properties only the first time that a challenge for that scheme is seen (such as maximum token length for the SSPI implementation of NTLM). Finally, it may make unit tests easier to generate since the factory can be easily mocked. BUG=34795 TEST=New unit test for HttpAuthHandlerDispatchFactory. Review URL: http://codereview.chromium.org/582007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39065 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_auth_handler_ntlm.h')
-rw-r--r--net/http/http_auth_handler_ntlm.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/net/http/http_auth_handler_ntlm.h b/net/http/http_auth_handler_ntlm.h
index c4b9dab..759d3a2 100644
--- a/net/http/http_auth_handler_ntlm.h
+++ b/net/http/http_auth_handler_ntlm.h
@@ -27,12 +27,24 @@
#include "base/basictypes.h"
#include "base/string16.h"
#include "net/http/http_auth_handler.h"
+#include "net/http/http_auth_handler_factory.h"
namespace net {
// Code for handling HTTP NTLM authentication.
class HttpAuthHandlerNTLM : public HttpAuthHandler {
public:
+ class Factory : public HttpAuthHandlerFactory {
+ public:
+ Factory();
+ virtual ~Factory();
+
+ virtual int CreateAuthHandler(HttpAuth::ChallengeTokenizer* challenge,
+ HttpAuth::Target target,
+ const GURL& origin,
+ scoped_refptr<HttpAuthHandler>* handler);
+ };
+
#if defined(NTLM_PORTABLE)
// A function that generates n random bytes in the output buffer.
typedef void (*GenerateRandomProc)(uint8* output, size_t n);
@@ -81,9 +93,8 @@ class HttpAuthHandlerNTLM : public HttpAuthHandler {
std::string* auth_token);
protected:
- virtual bool Init(std::string::const_iterator challenge_begin,
- std::string::const_iterator challenge_end) {
- return ParseChallenge(challenge_begin, challenge_end);
+ virtual bool Init(HttpAuth::ChallengeTokenizer* tok) {
+ return ParseChallenge(tok);
}
// This function acquires a credentials handle in the SSPI implementation.
@@ -102,8 +113,7 @@ class HttpAuthHandlerNTLM : public HttpAuthHandler {
// Parse the challenge, saving the results into this instance.
// Returns true on success.
- bool ParseChallenge(std::string::const_iterator challenge_begin,
- std::string::const_iterator challenge_end);
+ bool ParseChallenge(HttpAuth::ChallengeTokenizer* tok);
// Given an input token received from the server, generate the next output
// token to be sent to the server.