Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: chrome/browser/ui/android/login_prompt_android.cc

Issue 1421013003: [Merge in M47] Do not involve PasswordManagerDriver in filling HTTP-auth forms; also check realm (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2526
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/login/login_prompt.h" 5 #include "chrome/browser/ui/login/login_prompt.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/ui/android/chrome_http_auth_handler.h" 11 #include "chrome/browser/ui/android/chrome_http_auth_handler.h"
12 #include "chrome/browser/ui/android/window_android_helper.h" 12 #include "chrome/browser/ui/android/window_android_helper.h"
13 #include "chrome/browser/ui/login/login_prompt.h"
14 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
15 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
16 #include "net/base/auth.h" 15 #include "net/base/auth.h"
17 #include "ui/android/window_android.h" 16 #include "ui/android/window_android.h"
18 17
19 using content::BrowserThread; 18 using content::BrowserThread;
20 using net::URLRequest; 19 using net::URLRequest;
21 using net::AuthChallengeInfo; 20 using net::AuthChallengeInfo;
22 21
23 class LoginHandlerAndroid : public LoginHandler { 22 class LoginHandlerAndroid : public LoginHandler {
24 public: 23 public:
25 LoginHandlerAndroid(AuthChallengeInfo* auth_info, URLRequest* request) 24 LoginHandlerAndroid(AuthChallengeInfo* auth_info, URLRequest* request)
26 : LoginHandler(auth_info, request) { 25 : LoginHandler(auth_info, request) {
27 } 26 }
28 27
29 // LoginHandler methods: 28 // LoginHandler methods:
30 29
31 void OnAutofillDataAvailable(const base::string16& username, 30 void OnAutofillDataAvailableInternal(
32 const base::string16& password) override { 31 const base::string16& username,
32 const base::string16& password) override {
33 DCHECK_CURRENTLY_ON(BrowserThread::UI); 33 DCHECK_CURRENTLY_ON(BrowserThread::UI);
34 DCHECK(chrome_http_auth_handler_.get() != NULL); 34 DCHECK(chrome_http_auth_handler_.get() != NULL);
35 chrome_http_auth_handler_->OnAutofillDataAvailable( 35 chrome_http_auth_handler_->OnAutofillDataAvailable(
36 username, password); 36 username, password);
37 } 37 }
38 void OnLoginModelDestroying() override {} 38 void OnLoginModelDestroying() override {}
39 39
40 void BuildViewForPasswordManager(password_manager::PasswordManager* manager, 40 void BuildView(const base::string16& explanation,
41 const base::string16& explanation) override { 41 LoginModelData* login_model_data) override {
42 DCHECK_CURRENTLY_ON(BrowserThread::UI); 42 DCHECK_CURRENTLY_ON(BrowserThread::UI);
43 43
44 // Get pointer to TabAndroid 44 // Get pointer to TabAndroid
45 content::WebContents* web_contents = GetWebContentsForLogin(); 45 content::WebContents* web_contents = GetWebContentsForLogin();
46 CHECK(web_contents); 46 CHECK(web_contents);
47 WindowAndroidHelper* window_helper = WindowAndroidHelper::FromWebContents( 47 WindowAndroidHelper* window_helper = WindowAndroidHelper::FromWebContents(
48 web_contents); 48 web_contents);
49 49
50 // Notify WindowAndroid that HTTP authentication is required. 50 // Notify WindowAndroid that HTTP authentication is required.
51 if (window_helper->GetWindowAndroid()) { 51 if (window_helper->GetWindowAndroid()) {
52 chrome_http_auth_handler_.reset(new ChromeHttpAuthHandler(explanation)); 52 chrome_http_auth_handler_.reset(new ChromeHttpAuthHandler(explanation));
53 chrome_http_auth_handler_->Init(); 53 chrome_http_auth_handler_->Init();
54 chrome_http_auth_handler_->SetObserver(this); 54 chrome_http_auth_handler_->SetObserver(this);
55 chrome_http_auth_handler_->ShowDialog( 55 chrome_http_auth_handler_->ShowDialog(
56 window_helper->GetWindowAndroid()->GetJavaObject().obj()); 56 window_helper->GetWindowAndroid()->GetJavaObject().obj());
57 57
58 // Register to receive a callback to OnAutofillDataAvailable(). 58 if (login_model_data)
59 SetModel(manager); 59 SetModel(*login_model_data);
60 else
61 ResetModel();
62
60 NotifyAuthNeeded(); 63 NotifyAuthNeeded();
61 } else { 64 } else {
62 CancelAuth(); 65 CancelAuth();
63 LOG(WARNING) << "HTTP Authentication failed because TabAndroid is " 66 LOG(WARNING) << "HTTP Authentication failed because TabAndroid is "
64 "missing"; 67 "missing";
65 } 68 }
66 } 69 }
67 70
68 protected: 71 protected:
69 ~LoginHandlerAndroid() override {} 72 ~LoginHandlerAndroid() override {}
70 73
71 void CloseDialog() override {} 74 void CloseDialog() override {}
72 75
73 private: 76 private:
74 scoped_ptr<ChromeHttpAuthHandler> chrome_http_auth_handler_; 77 scoped_ptr<ChromeHttpAuthHandler> chrome_http_auth_handler_;
75 }; 78 };
76 79
77 // static 80 // static
78 LoginHandler* LoginHandler::Create(net::AuthChallengeInfo* auth_info, 81 LoginHandler* LoginHandler::Create(net::AuthChallengeInfo* auth_info,
79 net::URLRequest* request) { 82 net::URLRequest* request) {
80 return new LoginHandlerAndroid(auth_info, request); 83 return new LoginHandlerAndroid(auth_info, request);
81 } 84 }
OLDNEW
« no previous file with comments | « chrome/browser/password_manager/password_manager_browsertest.cc ('k') | chrome/browser/ui/cocoa/login_prompt_cocoa.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698