summaryrefslogtreecommitdiffstats
path: root/chrome/browser/dom_ui/passwords_exceptions_handler.cc
diff options
context:
space:
mode:
authorsargrass@google.com <sargrass@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-20 23:19:16 +0000
committersargrass@google.com <sargrass@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-20 23:19:16 +0000
commitd4e3ac8dcfc9d5cef0cb2e762ee3415d214844b8 (patch)
tree68dd5ad6f0c3520e24b73f2e7fd54cb1a6e40a19 /chrome/browser/dom_ui/passwords_exceptions_handler.cc
parentd40c5648de999219a68dd769755ade380a62400d (diff)
downloadchromium_src-d4e3ac8dcfc9d5cef0cb2e762ee3415d214844b8.zip
chromium_src-d4e3ac8dcfc9d5cef0cb2e762ee3415d214844b8.tar.gz
chromium_src-d4e3ac8dcfc9d5cef0cb2e762ee3415d214844b8.tar.bz2
Implement Password Exceptions Tab.
Separate the password exceptions list. BUG=49093 TEST=None Review URL: http://codereview.chromium.org/3177023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56931 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/dom_ui/passwords_exceptions_handler.cc')
-rw-r--r--chrome/browser/dom_ui/passwords_exceptions_handler.cc104
1 files changed, 84 insertions, 20 deletions
diff --git a/chrome/browser/dom_ui/passwords_exceptions_handler.cc b/chrome/browser/dom_ui/passwords_exceptions_handler.cc
index 44888bf..ea027bb 100644
--- a/chrome/browser/dom_ui/passwords_exceptions_handler.cc
+++ b/chrome/browser/dom_ui/passwords_exceptions_handler.cc
@@ -6,6 +6,7 @@
#include "app/l10n_util.h"
#include "base/callback.h"
+#include "base/stl_util-inl.h"
#include "base/string_number_conversions.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
@@ -17,7 +18,8 @@
#include "net/base/net_util.h"
PasswordsExceptionsHandler::PasswordsExceptionsHandler()
- : ALLOW_THIS_IN_INITIALIZER_LIST(populater_(this)) {
+ : ALLOW_THIS_IN_INITIALIZER_LIST(populater_(this)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(exception_populater_(this)) {
}
PasswordsExceptionsHandler::~PasswordsExceptionsHandler() {
@@ -31,7 +33,7 @@ void PasswordsExceptionsHandler::GetLocalizedValues(
l10n_util::GetStringUTF16(IDS_PASSWORDS_EXCEPTIONS_WINDOW_TITLE));
localized_strings->SetString("passwordsTabTitle",
l10n_util::GetStringUTF16(IDS_PASSWORDS_SHOW_PASSWORDS_TAB_TITLE));
- localized_strings->SetString("passwordsExceptionsTabTitle",
+ localized_strings->SetString("passwordExceptionsTabTitle",
l10n_util::GetStringUTF16(IDS_PASSWORDS_EXCEPTIONS_TAB_TITLE));
localized_strings->SetString("passwordsSiteColumn",
l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_VIEW_SITE_COLUMN));
@@ -60,14 +62,17 @@ void PasswordsExceptionsHandler::Initialize() {
void PasswordsExceptionsHandler::RegisterMessages() {
DCHECK(dom_ui_);
- dom_ui_->RegisterMessageCallback(
- "loadSavedPasswords",
- NewCallback(this, &PasswordsExceptionsHandler::LoadSavedPasswords));
- dom_ui_->RegisterMessageCallback(
- "removeAutofillable",
- NewCallback(this, &PasswordsExceptionsHandler::RemoveEntry));
- dom_ui_->RegisterMessageCallback(
- "showSelectedPassword",
+ dom_ui_->RegisterMessageCallback("loadLists",
+ NewCallback(this, &PasswordsExceptionsHandler::LoadLists));
+ dom_ui_->RegisterMessageCallback("removeSavedPassword",
+ NewCallback(this, &PasswordsExceptionsHandler::RemoveSavedPassword));
+ dom_ui_->RegisterMessageCallback("removePasswordException",
+ NewCallback(this, &PasswordsExceptionsHandler::RemovePasswordException));
+ dom_ui_->RegisterMessageCallback("removeAllSavedPasswords",
+ NewCallback(this, &PasswordsExceptionsHandler::RemoveAllSavedPasswords));
+ dom_ui_->RegisterMessageCallback("removeAllPasswordExceptions", NewCallback(
+ this, &PasswordsExceptionsHandler::RemoveAllPasswordExceptions));
+ dom_ui_->RegisterMessageCallback("showSelectedPassword",
NewCallback(this, &PasswordsExceptionsHandler::ShowSelectedPassword));
}
@@ -75,13 +80,17 @@ PasswordStore* PasswordsExceptionsHandler::GetPasswordStore() {
return profile_->GetPasswordStore(Profile::EXPLICIT_ACCESS);
}
-void PasswordsExceptionsHandler::LoadSavedPasswords(const ListValue* args) {
+void PasswordsExceptionsHandler::LoadLists(const ListValue* args) {
+ languages_ = UTF8ToWide(
+ profile_->GetPrefs()->GetString(prefs::kAcceptLanguages));
populater_.Populate();
+ exception_populater_.Populate();
}
-void PasswordsExceptionsHandler::RemoveEntry(const ListValue* args) {
+void PasswordsExceptionsHandler::RemoveSavedPassword(const ListValue* args) {
+ std::string string_value = WideToUTF8(ExtractStringValue(args));;
int index;
- CHECK(ExtractIntegerValue(args, &index));
+ base::StringToInt(string_value, &index);
GetPasswordStore()->RemoveLogin(*password_list_[index]);
delete password_list_[index];
@@ -89,9 +98,39 @@ void PasswordsExceptionsHandler::RemoveEntry(const ListValue* args) {
SetPasswordList();
}
+void PasswordsExceptionsHandler::RemovePasswordException(const ListValue* args) {
+ std::string string_value = WideToUTF8(ExtractStringValue(args));;
+ int index;
+ base::StringToInt(string_value, &index);
+
+ GetPasswordStore()->RemoveLogin(*password_exception_list_[index]);
+ delete password_exception_list_[index];
+ password_exception_list_.erase(password_exception_list_.begin() + index);
+ SetPasswordExceptionList();
+}
+
+void PasswordsExceptionsHandler::RemoveAllSavedPasswords(
+ const ListValue* args) {
+ PasswordStore* store = GetPasswordStore();
+ for (size_t i = 0; i < password_list_.size(); ++i)
+ store->RemoveLogin(*password_list_[i]);
+ STLDeleteElements(&password_list_);
+ SetPasswordList();
+}
+
+void PasswordsExceptionsHandler::RemoveAllPasswordExceptions(
+ const ListValue* args) {
+ PasswordStore* store = GetPasswordStore();
+ for (size_t i = 0; i < password_exception_list_.size(); ++i)
+ store->RemoveLogin(*password_exception_list_[i]);
+ STLDeleteElements(&password_exception_list_);
+ SetPasswordExceptionList();
+}
+
void PasswordsExceptionsHandler::ShowSelectedPassword(const ListValue* args) {
+ std::string string_value = WideToUTF8(ExtractStringValue(args));;
int index;
- CHECK(ExtractIntegerValue(args, &index));
+ base::StringToInt(string_value, &index);
std::string pass = UTF16ToUTF8(password_list_[index]->password_value);
scoped_ptr<Value> password_string(Value::CreateStringValue(pass));
@@ -100,20 +139,30 @@ void PasswordsExceptionsHandler::ShowSelectedPassword(const ListValue* args) {
}
void PasswordsExceptionsHandler::SetPasswordList() {
- ListValue autofillableLogins;
- std::wstring languages =
- UTF8ToWide(profile_->GetPrefs()->GetString(prefs::kAcceptLanguages));
+ ListValue entries;
for (size_t i = 0; i < password_list_.size(); ++i) {
ListValue* entry = new ListValue();
entry->Append(new StringValue(
- WideToUTF8(net::FormatUrl(password_list_[i]->origin, languages))));
+ WideToUTF8(net::FormatUrl(password_list_[i]->origin, languages_))));
entry->Append(new StringValue(
UTF16ToUTF8(password_list_[i]->username_value)));
- autofillableLogins.Append(entry);
+ entries.Append(entry);
+ }
+
+ dom_ui_->CallJavascriptFunction(
+ L"PasswordsExceptions.setSavedPasswordsList", entries);
+}
+
+void PasswordsExceptionsHandler::SetPasswordExceptionList() {
+ ListValue entries;
+ for (size_t i = 0; i < password_exception_list_.size(); ++i) {
+ entries.Append(new StringValue(
+ WideToUTF8(net::FormatUrl(
+ password_exception_list_[i]->origin, languages_))));
}
dom_ui_->CallJavascriptFunction(
- L"PasswordsExceptions.setAutofillableLogins", autofillableLogins);
+ L"PasswordsExceptions.setPasswordExceptionsList", entries);
}
void PasswordsExceptionsHandler::PasswordListPopulater::Populate() {
@@ -130,3 +179,18 @@ void PasswordsExceptionsHandler::PasswordListPopulater::
page_->password_list_ = result;
page_->SetPasswordList();
}
+
+void PasswordsExceptionsHandler::PasswordExceptionListPopulater::Populate() {
+ DCHECK(!pending_login_query_);
+ PasswordStore* store = page_->GetPasswordStore();
+ pending_login_query_ = store->GetBlacklistLogins(this);
+}
+
+void PasswordsExceptionsHandler::PasswordExceptionListPopulater::
+ OnPasswordStoreRequestDone(int handle,
+ const std::vector<webkit_glue::PasswordForm*>& result) {
+ DCHECK_EQ(pending_login_query_, handle);
+ pending_login_query_ = 0;
+ page_->password_exception_list_ = result;
+ page_->SetPasswordExceptionList();
+}