| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/dom_ui/passwords_exceptions_handler.h" | 5 #include "chrome/browser/dom_ui/passwords_exceptions_handler.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/stl_util-inl.h" |
| 9 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
| 10 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 11 #include "base/values.h" | 12 #include "base/values.h" |
| 12 #include "chrome/browser/pref_service.h" | 13 #include "chrome/browser/pref_service.h" |
| 13 #include "chrome/common/pref_names.h" | 14 #include "chrome/common/pref_names.h" |
| 14 #include "chrome/common/url_constants.h" | 15 #include "chrome/common/url_constants.h" |
| 15 #include "grit/chromium_strings.h" | 16 #include "grit/chromium_strings.h" |
| 16 #include "grit/generated_resources.h" | 17 #include "grit/generated_resources.h" |
| 17 #include "net/base/net_util.h" | 18 #include "net/base/net_util.h" |
| 18 | 19 |
| 19 PasswordsExceptionsHandler::PasswordsExceptionsHandler() | 20 PasswordsExceptionsHandler::PasswordsExceptionsHandler() |
| 20 : ALLOW_THIS_IN_INITIALIZER_LIST(populater_(this)) { | 21 : ALLOW_THIS_IN_INITIALIZER_LIST(populater_(this)), |
| 22 ALLOW_THIS_IN_INITIALIZER_LIST(exception_populater_(this)) { |
| 21 } | 23 } |
| 22 | 24 |
| 23 PasswordsExceptionsHandler::~PasswordsExceptionsHandler() { | 25 PasswordsExceptionsHandler::~PasswordsExceptionsHandler() { |
| 24 } | 26 } |
| 25 | 27 |
| 26 void PasswordsExceptionsHandler::GetLocalizedValues( | 28 void PasswordsExceptionsHandler::GetLocalizedValues( |
| 27 DictionaryValue* localized_strings) { | 29 DictionaryValue* localized_strings) { |
| 28 DCHECK(localized_strings); | 30 DCHECK(localized_strings); |
| 29 | 31 |
| 30 localized_strings->SetString("savedPasswordsExceptionsTitle", | 32 localized_strings->SetString("savedPasswordsExceptionsTitle", |
| 31 l10n_util::GetStringUTF16(IDS_PASSWORDS_EXCEPTIONS_WINDOW_TITLE)); | 33 l10n_util::GetStringUTF16(IDS_PASSWORDS_EXCEPTIONS_WINDOW_TITLE)); |
| 32 localized_strings->SetString("passwordsTabTitle", | 34 localized_strings->SetString("passwordsTabTitle", |
| 33 l10n_util::GetStringUTF16(IDS_PASSWORDS_SHOW_PASSWORDS_TAB_TITLE)); | 35 l10n_util::GetStringUTF16(IDS_PASSWORDS_SHOW_PASSWORDS_TAB_TITLE)); |
| 34 localized_strings->SetString("passwordsExceptionsTabTitle", | 36 localized_strings->SetString("passwordExceptionsTabTitle", |
| 35 l10n_util::GetStringUTF16(IDS_PASSWORDS_EXCEPTIONS_TAB_TITLE)); | 37 l10n_util::GetStringUTF16(IDS_PASSWORDS_EXCEPTIONS_TAB_TITLE)); |
| 36 localized_strings->SetString("passwordsSiteColumn", | 38 localized_strings->SetString("passwordsSiteColumn", |
| 37 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_SITE_COLUMN)); | 39 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_SITE_COLUMN)); |
| 38 localized_strings->SetString("passwordsUsernameColumn", | 40 localized_strings->SetString("passwordsUsernameColumn", |
| 39 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_USERNAME_COLUMN)); | 41 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_USERNAME_COLUMN)); |
| 40 localized_strings->SetString("passwordsRemoveButton", | 42 localized_strings->SetString("passwordsRemoveButton", |
| 41 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_REMOVE_BUTTON)); | 43 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_REMOVE_BUTTON)); |
| 42 localized_strings->SetString("passwordsRemoveAllButton", | 44 localized_strings->SetString("passwordsRemoveAllButton", |
| 43 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_REMOVE_ALL_BUTTON)); | 45 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_REMOVE_ALL_BUTTON)); |
| 44 localized_strings->SetString("passwordsShowButton", | 46 localized_strings->SetString("passwordsShowButton", |
| 45 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_SHOW_BUTTON)); | 47 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_SHOW_BUTTON)); |
| 46 localized_strings->SetString("passwordsHideButton", | 48 localized_strings->SetString("passwordsHideButton", |
| 47 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_HIDE_BUTTON)); | 49 l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_HIDE_BUTTON)); |
| 48 localized_strings->SetString("passwordsRemoveAllTitle", | 50 localized_strings->SetString("passwordsRemoveAllTitle", |
| 49 l10n_util::GetStringUTF16( | 51 l10n_util::GetStringUTF16( |
| 50 IDS_PASSWORDS_PAGE_VIEW_CAPTION_DELETE_ALL_PASSWORDS)); | 52 IDS_PASSWORDS_PAGE_VIEW_CAPTION_DELETE_ALL_PASSWORDS)); |
| 51 localized_strings->SetString("passwordsRemoveAllWarning", | 53 localized_strings->SetString("passwordsRemoveAllWarning", |
| 52 l10n_util::GetStringUTF16( | 54 l10n_util::GetStringUTF16( |
| 53 IDS_PASSWORDS_PAGE_VIEW_TEXT_DELETE_ALL_PASSWORDS)); | 55 IDS_PASSWORDS_PAGE_VIEW_TEXT_DELETE_ALL_PASSWORDS)); |
| 54 } | 56 } |
| 55 | 57 |
| 56 void PasswordsExceptionsHandler::Initialize() { | 58 void PasswordsExceptionsHandler::Initialize() { |
| 57 profile_ = dom_ui_->GetProfile(); | 59 profile_ = dom_ui_->GetProfile(); |
| 58 } | 60 } |
| 59 | 61 |
| 60 void PasswordsExceptionsHandler::RegisterMessages() { | 62 void PasswordsExceptionsHandler::RegisterMessages() { |
| 61 DCHECK(dom_ui_); | 63 DCHECK(dom_ui_); |
| 62 | 64 |
| 63 dom_ui_->RegisterMessageCallback( | 65 dom_ui_->RegisterMessageCallback("loadLists", |
| 64 "loadSavedPasswords", | 66 NewCallback(this, &PasswordsExceptionsHandler::LoadLists)); |
| 65 NewCallback(this, &PasswordsExceptionsHandler::LoadSavedPasswords)); | 67 dom_ui_->RegisterMessageCallback("removeSavedPassword", |
| 66 dom_ui_->RegisterMessageCallback( | 68 NewCallback(this, &PasswordsExceptionsHandler::RemoveSavedPassword)); |
| 67 "removeAutofillable", | 69 dom_ui_->RegisterMessageCallback("removePasswordException", |
| 68 NewCallback(this, &PasswordsExceptionsHandler::RemoveEntry)); | 70 NewCallback(this, &PasswordsExceptionsHandler::RemovePasswordException)); |
| 69 dom_ui_->RegisterMessageCallback( | 71 dom_ui_->RegisterMessageCallback("removeAllSavedPasswords", |
| 70 "showSelectedPassword", | 72 NewCallback(this, &PasswordsExceptionsHandler::RemoveAllSavedPasswords)); |
| 73 dom_ui_->RegisterMessageCallback("removeAllPasswordExceptions", NewCallback( |
| 74 this, &PasswordsExceptionsHandler::RemoveAllPasswordExceptions)); |
| 75 dom_ui_->RegisterMessageCallback("showSelectedPassword", |
| 71 NewCallback(this, &PasswordsExceptionsHandler::ShowSelectedPassword)); | 76 NewCallback(this, &PasswordsExceptionsHandler::ShowSelectedPassword)); |
| 72 } | 77 } |
| 73 | 78 |
| 74 PasswordStore* PasswordsExceptionsHandler::GetPasswordStore() { | 79 PasswordStore* PasswordsExceptionsHandler::GetPasswordStore() { |
| 75 return profile_->GetPasswordStore(Profile::EXPLICIT_ACCESS); | 80 return profile_->GetPasswordStore(Profile::EXPLICIT_ACCESS); |
| 76 } | 81 } |
| 77 | 82 |
| 78 void PasswordsExceptionsHandler::LoadSavedPasswords(const ListValue* args) { | 83 void PasswordsExceptionsHandler::LoadLists(const ListValue* args) { |
| 84 languages_ = UTF8ToWide( |
| 85 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)); |
| 79 populater_.Populate(); | 86 populater_.Populate(); |
| 87 exception_populater_.Populate(); |
| 80 } | 88 } |
| 81 | 89 |
| 82 void PasswordsExceptionsHandler::RemoveEntry(const ListValue* args) { | 90 void PasswordsExceptionsHandler::RemoveSavedPassword(const ListValue* args) { |
| 91 std::string string_value = WideToUTF8(ExtractStringValue(args));; |
| 83 int index; | 92 int index; |
| 84 CHECK(ExtractIntegerValue(args, &index)); | 93 base::StringToInt(string_value, &index); |
| 85 | 94 |
| 86 GetPasswordStore()->RemoveLogin(*password_list_[index]); | 95 GetPasswordStore()->RemoveLogin(*password_list_[index]); |
| 87 delete password_list_[index]; | 96 delete password_list_[index]; |
| 88 password_list_.erase(password_list_.begin() + index); | 97 password_list_.erase(password_list_.begin() + index); |
| 89 SetPasswordList(); | 98 SetPasswordList(); |
| 90 } | 99 } |
| 91 | 100 |
| 101 void PasswordsExceptionsHandler::RemovePasswordException(const ListValue* args)
{ |
| 102 std::string string_value = WideToUTF8(ExtractStringValue(args));; |
| 103 int index; |
| 104 base::StringToInt(string_value, &index); |
| 105 |
| 106 GetPasswordStore()->RemoveLogin(*password_exception_list_[index]); |
| 107 delete password_exception_list_[index]; |
| 108 password_exception_list_.erase(password_exception_list_.begin() + index); |
| 109 SetPasswordExceptionList(); |
| 110 } |
| 111 |
| 112 void PasswordsExceptionsHandler::RemoveAllSavedPasswords( |
| 113 const ListValue* args) { |
| 114 PasswordStore* store = GetPasswordStore(); |
| 115 for (size_t i = 0; i < password_list_.size(); ++i) |
| 116 store->RemoveLogin(*password_list_[i]); |
| 117 STLDeleteElements(&password_list_); |
| 118 SetPasswordList(); |
| 119 } |
| 120 |
| 121 void PasswordsExceptionsHandler::RemoveAllPasswordExceptions( |
| 122 const ListValue* args) { |
| 123 PasswordStore* store = GetPasswordStore(); |
| 124 for (size_t i = 0; i < password_exception_list_.size(); ++i) |
| 125 store->RemoveLogin(*password_exception_list_[i]); |
| 126 STLDeleteElements(&password_exception_list_); |
| 127 SetPasswordExceptionList(); |
| 128 } |
| 129 |
| 92 void PasswordsExceptionsHandler::ShowSelectedPassword(const ListValue* args) { | 130 void PasswordsExceptionsHandler::ShowSelectedPassword(const ListValue* args) { |
| 131 std::string string_value = WideToUTF8(ExtractStringValue(args));; |
| 93 int index; | 132 int index; |
| 94 CHECK(ExtractIntegerValue(args, &index)); | 133 base::StringToInt(string_value, &index); |
| 95 | 134 |
| 96 std::string pass = UTF16ToUTF8(password_list_[index]->password_value); | 135 std::string pass = UTF16ToUTF8(password_list_[index]->password_value); |
| 97 scoped_ptr<Value> password_string(Value::CreateStringValue(pass)); | 136 scoped_ptr<Value> password_string(Value::CreateStringValue(pass)); |
| 98 dom_ui_->CallJavascriptFunction( | 137 dom_ui_->CallJavascriptFunction( |
| 99 L"PasswordsExceptions.selectedPasswordCallback", *password_string.get()); | 138 L"PasswordsExceptions.selectedPasswordCallback", *password_string.get()); |
| 100 } | 139 } |
| 101 | 140 |
| 102 void PasswordsExceptionsHandler::SetPasswordList() { | 141 void PasswordsExceptionsHandler::SetPasswordList() { |
| 103 ListValue autofillableLogins; | 142 ListValue entries; |
| 104 std::wstring languages = | |
| 105 UTF8ToWide(profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)); | |
| 106 for (size_t i = 0; i < password_list_.size(); ++i) { | 143 for (size_t i = 0; i < password_list_.size(); ++i) { |
| 107 ListValue* entry = new ListValue(); | 144 ListValue* entry = new ListValue(); |
| 108 entry->Append(new StringValue( | 145 entry->Append(new StringValue( |
| 109 WideToUTF8(net::FormatUrl(password_list_[i]->origin, languages)))); | 146 WideToUTF8(net::FormatUrl(password_list_[i]->origin, languages_)))); |
| 110 entry->Append(new StringValue( | 147 entry->Append(new StringValue( |
| 111 UTF16ToUTF8(password_list_[i]->username_value))); | 148 UTF16ToUTF8(password_list_[i]->username_value))); |
| 112 autofillableLogins.Append(entry); | 149 entries.Append(entry); |
| 113 } | 150 } |
| 114 | 151 |
| 115 dom_ui_->CallJavascriptFunction( | 152 dom_ui_->CallJavascriptFunction( |
| 116 L"PasswordsExceptions.setAutofillableLogins", autofillableLogins); | 153 L"PasswordsExceptions.setSavedPasswordsList", entries); |
| 154 } |
| 155 |
| 156 void PasswordsExceptionsHandler::SetPasswordExceptionList() { |
| 157 ListValue entries; |
| 158 for (size_t i = 0; i < password_exception_list_.size(); ++i) { |
| 159 entries.Append(new StringValue( |
| 160 WideToUTF8(net::FormatUrl( |
| 161 password_exception_list_[i]->origin, languages_)))); |
| 162 } |
| 163 |
| 164 dom_ui_->CallJavascriptFunction( |
| 165 L"PasswordsExceptions.setPasswordExceptionsList", entries); |
| 117 } | 166 } |
| 118 | 167 |
| 119 void PasswordsExceptionsHandler::PasswordListPopulater::Populate() { | 168 void PasswordsExceptionsHandler::PasswordListPopulater::Populate() { |
| 120 DCHECK(!pending_login_query_); | 169 DCHECK(!pending_login_query_); |
| 121 PasswordStore* store = page_->GetPasswordStore(); | 170 PasswordStore* store = page_->GetPasswordStore(); |
| 122 pending_login_query_ = store->GetAutofillableLogins(this); | 171 pending_login_query_ = store->GetAutofillableLogins(this); |
| 123 } | 172 } |
| 124 | 173 |
| 125 void PasswordsExceptionsHandler::PasswordListPopulater:: | 174 void PasswordsExceptionsHandler::PasswordListPopulater:: |
| 126 OnPasswordStoreRequestDone(int handle, | 175 OnPasswordStoreRequestDone(int handle, |
| 127 const std::vector<webkit_glue::PasswordForm*>& result) { | 176 const std::vector<webkit_glue::PasswordForm*>& result) { |
| 128 DCHECK_EQ(pending_login_query_, handle); | 177 DCHECK_EQ(pending_login_query_, handle); |
| 129 pending_login_query_ = 0; | 178 pending_login_query_ = 0; |
| 130 page_->password_list_ = result; | 179 page_->password_list_ = result; |
| 131 page_->SetPasswordList(); | 180 page_->SetPasswordList(); |
| 132 } | 181 } |
| 182 |
| 183 void PasswordsExceptionsHandler::PasswordExceptionListPopulater::Populate() { |
| 184 DCHECK(!pending_login_query_); |
| 185 PasswordStore* store = page_->GetPasswordStore(); |
| 186 pending_login_query_ = store->GetBlacklistLogins(this); |
| 187 } |
| 188 |
| 189 void PasswordsExceptionsHandler::PasswordExceptionListPopulater:: |
| 190 OnPasswordStoreRequestDone(int handle, |
| 191 const std::vector<webkit_glue::PasswordForm*>& result) { |
| 192 DCHECK_EQ(pending_login_query_, handle); |
| 193 pending_login_query_ = 0; |
| 194 page_->password_exception_list_ = result; |
| 195 page_->SetPasswordExceptionList(); |
| 196 } |
| OLD | NEW |