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

Unified Diff: chrome/browser/password_manager/native_backend_gnome_x_unittest.cc

Issue 269813012: [Password Manager] Remove PSL matching for non-HTML forms (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/password_manager/native_backend_gnome_x_unittest.cc
diff --git a/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc b/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc
index 13905592a384c9e30992b1ea3206658cee8d84d5..628bb20faf01aefd433b6f97a5979d115f7600e3 100644
--- a/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc
+++ b/chrome/browser/password_manager/native_backend_gnome_x_unittest.cc
@@ -324,6 +324,11 @@ class NativeBackendGnomeTest : public testing::Test {
form_isc_.password_value = UTF8ToUTF16("ihazabukkit");
form_isc_.submit_element = UTF8ToUTF16("login");
form_isc_.signon_realm = "http://www.isc.org/";
+
+ other_auth_.origin = GURL("http://www.example.com/");
+ other_auth_.username_value = UTF8ToUTF16("username");
+ other_auth_.password_value = UTF8ToUTF16("pass");
+ other_auth_.signon_realm = "http://www.example.com/Realm";
}
virtual void TearDown() {
@@ -407,6 +412,7 @@ class NativeBackendGnomeTest : public testing::Test {
// derived from |credentials|.)
bool CheckCredentialAvailability(const PasswordForm& credentials,
const GURL& url,
+ const PasswordForm::Scheme& scheme,
PasswordForm* result) {
NativeBackendGnome backend(321);
backend.Init();
@@ -421,6 +427,13 @@ class NativeBackendGnomeTest : public testing::Test {
PasswordForm target_form;
target_form.origin = url;
target_form.signon_realm = url.spec();
+ if (scheme != PasswordForm::SCHEME_HTML) {
+ // For non-HTML forms, the realm used for authentication
+ // (http://tools.ietf.org/html/rfc1945#section-10.2) is appended to the
+ // signon_realm. Just use a default value for now.
+ target_form.signon_realm.append("Realm");
+ target_form.scheme = scheme;
+ }
std::vector<PasswordForm*> form_list;
BrowserThread::PostTask(
BrowserThread::DB,
@@ -435,6 +448,7 @@ class NativeBackendGnomeTest : public testing::Test {
EXPECT_EQ(1u, mock_keyring_items.size());
if (mock_keyring_items.size() > 0)
CheckMockKeyringItem(&mock_keyring_items[0], credentials, "chrome-321");
+ mock_keyring_items.clear();
if (form_list.empty())
return false;
@@ -564,6 +578,21 @@ class NativeBackendGnomeTest : public testing::Test {
STLDeleteElements(&form_list);
}
+ void CheckMatchingWithScheme(const PasswordForm::Scheme& scheme) {
+ other_auth_.scheme = scheme;
+
+ // Don't match a non-HTML form with an HTML form.
+ EXPECT_FALSE(CheckCredentialAvailability(
+ other_auth_, GURL("http://www.example.com"),
+ PasswordForm::SCHEME_HTML, NULL));
+ // Don't match an HTML form with non-HTML auth form.
+ EXPECT_FALSE(CheckCredentialAvailability(
+ form_google_, GURL("http://www.google.com/"), scheme, NULL));
+ // Don't match two different non-HTML auth forms with different origin.
+ EXPECT_FALSE(CheckCredentialAvailability(
+ other_auth_, GURL("http://first.example.com"), scheme, NULL));
+ }
+
base::MessageLoopForUI message_loop_;
content::TestBrowserThread ui_thread_;
content::TestBrowserThread db_thread_;
@@ -572,6 +601,7 @@ class NativeBackendGnomeTest : public testing::Test {
PasswordForm form_google_;
PasswordForm form_facebook_;
PasswordForm form_isc_;
+ PasswordForm other_auth_;
};
TEST_F(NativeBackendGnomeTest, BasicAddLogin) {
@@ -623,7 +653,8 @@ TEST_F(NativeBackendGnomeTest, PSLMatchingPositive) {
const GURL kMobileURL("http://m.facebook.com/");
password_manager::PSLMatchingHelper helper;
ASSERT_TRUE(helper.IsMatchingEnabled());
- EXPECT_TRUE(CheckCredentialAvailability(form_facebook_, kMobileURL, &result));
+ EXPECT_TRUE(CheckCredentialAvailability(
+ form_facebook_, kMobileURL, PasswordForm::SCHEME_HTML, &result));
EXPECT_EQ(kMobileURL, result.origin);
EXPECT_EQ(kMobileURL.spec(), result.signon_realm);
}
@@ -634,7 +665,8 @@ TEST_F(NativeBackendGnomeTest, PSLMatchingNegativeDomainMismatch) {
password_manager::PSLMatchingHelper helper;
ASSERT_TRUE(helper.IsMatchingEnabled());
EXPECT_FALSE(CheckCredentialAvailability(
- form_facebook_, GURL("http://m-facebook.com/"), NULL));
+ form_facebook_, GURL("http://m-facebook.com/"),
+ PasswordForm::SCHEME_HTML, NULL));
}
// Test PSL matching is off for domains excluded from it.
@@ -642,7 +674,19 @@ TEST_F(NativeBackendGnomeTest, PSLMatchingDisabledDomains) {
password_manager::PSLMatchingHelper helper;
ASSERT_TRUE(helper.IsMatchingEnabled());
EXPECT_FALSE(CheckCredentialAvailability(
- form_google_, GURL("http://one.google.com/"), NULL));
+ form_google_, GURL("http://one.google.com/"),
+ PasswordForm::SCHEME_HTML, NULL));
+}
+
+// Make sure PSL matches aren't available for non-HTML forms.
+TEST_F(NativeBackendGnomeTest, PSLMatchingDisabledForNonHTMLForms) {
+ password_manager::PSLMatchingHelper helper;
+ ASSERT_TRUE(helper.IsMatchingEnabled());
+
+ CheckMatchingWithScheme(PasswordForm::SCHEME_BASIC);
+ CheckMatchingWithScheme(PasswordForm::SCHEME_DIGEST);
+ CheckMatchingWithScheme(PasswordForm::SCHEME_OTHER);
+
}
TEST_F(NativeBackendGnomeTest, PSLUpdatingStrictUpdateLogin) {

Powered by Google App Engine
This is Rietveld 408576698