1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef ANDROID_WEBVIEW_BROWSER_AW_LOGIN_DELEGATE_H_
6#define ANDROID_WEBVIEW_BROWSER_AW_LOGIN_DELEGATE_H_
7
8#include "android_webview/browser/aw_http_auth_handler_base.h"
9#include "base/memory/ref_counted.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/strings/string16.h"
12#include "content/public/browser/resource_dispatcher_host_login_delegate.h"
13
14namespace net {
15class AuthChallengeInfo;
16class URLRequest;
17}
18
19namespace android_webview {
20
21class AwLoginDelegate :
22    public content::ResourceDispatcherHostLoginDelegate {
23 public:
24  AwLoginDelegate(net::AuthChallengeInfo* auth_info,
25                  net::URLRequest* request);
26
27  virtual void Proceed(const base::string16& user,
28                       const base::string16& password);
29  virtual void Cancel();
30
31  // from ResourceDispatcherHostLoginDelegate
32  virtual void OnRequestCancelled() OVERRIDE;
33
34 private:
35  virtual ~AwLoginDelegate();
36  void HandleHttpAuthRequestOnUIThread(bool first_auth_attempt);
37  void CancelOnIOThread();
38  void ProceedOnIOThread(const base::string16& user,
39                         const base::string16& password);
40  void DeleteAuthHandlerSoon();
41
42  scoped_ptr<AwHttpAuthHandlerBase> aw_http_auth_handler_;
43  scoped_refptr<net::AuthChallengeInfo> auth_info_;
44  net::URLRequest* request_;
45  int render_process_id_;
46  int render_frame_id_;
47};
48
49}  // namespace android_webview
50
51#endif  // ANDROID_WEBVIEW_BROWSER_AW_LOGIN_DELEGATE_H_
52