| Index: chrome/browser/autofill/autofill_manager_unittest.cc
|
| diff --git a/chrome/browser/autofill/autofill_manager_unittest.cc b/chrome/browser/autofill/autofill_manager_unittest.cc
|
| index 7d78a9bc60d18f24a84728f2e3e9ec8251810ed0..d0cb0b394b09ae400d30d238e01e355f2a633cbc 100644
|
| --- a/chrome/browser/autofill/autofill_manager_unittest.cc
|
| +++ b/chrome/browser/autofill/autofill_manager_unittest.cc
|
| @@ -20,6 +20,8 @@
|
| #include "chrome/browser/renderer_host/test/test_render_view_host.h"
|
| #include "chrome/browser/tab_contents/test_tab_contents.h"
|
| #include "chrome/common/ipc_test_sink.h"
|
| +#include "chrome/common/notification_source.h"
|
| +#include "chrome/common/notification_service.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "googleurl/src/gurl.h"
|
| @@ -129,6 +131,11 @@ class TestAutoFillManager : public AutoFillManager {
|
| test_personal_data_->AddProfile(profile);
|
| }
|
|
|
| + size_t NumFormStructures() const { return form_structures()->size(); }
|
| + const FormStructure* GetFormStructureAtIndex(size_t index) const {
|
| + return (*form_structures())[index];
|
| + }
|
| +
|
| private:
|
| TestPersonalDataManager* test_personal_data_;
|
|
|
| @@ -1245,3 +1252,66 @@ TEST_F(AutoFillManagerTest, AuxiliaryProfilesReset) {
|
| #endif
|
| }
|
|
|
| +// Make sure that we properly respond to language detected notifications.
|
| +TEST_F(AutoFillManagerTest, LanguageDetectedNotification) {
|
| + FormData form1;
|
| + CreateTestFormData(&form1);
|
| + form1.name = ASCIIToUTF16("MyForm1");
|
| + form1.origin = GURL("http://myform.co.uk/form.html");
|
| + form1.action = GURL("http://myform.co.uk/submit.html");
|
| + form1.locale = "xx";
|
| +
|
| + FormData form2;
|
| + CreateTestFormData(&form2);
|
| + form2.name = ASCIIToUTF16("MyForm2");
|
| + form2.origin = GURL("http://myform.fr/form.html");
|
| + form2.action = GURL("http://myform.fr/submit.html");
|
| + form2.locale = "xx";
|
| +
|
| + // Set up our FormStructures.
|
| + std::vector<FormData> forms;
|
| + forms.push_back(form1);
|
| + autofill_manager_->FormsSeen(forms);
|
| +
|
| + // We should not yet have tried to detect the locale.
|
| + ASSERT_EQ(1U, autofill_manager_->NumFormStructures());
|
| + EXPECT_EQ("xx", autofill_manager_->GetFormStructureAtIndex(0)->locale());
|
| +
|
| + TabContents* tab_contents = autofill_manager_->tab_contents();
|
| + autofill_manager_->Observe(NotificationType::TAB_LANGUAGE_DETERMINED,
|
| + Source<TabContents>(tab_contents),
|
| + NotificationService::NoDetails());
|
| +
|
| + // Now we should have detected the locale.
|
| + ASSERT_EQ(1U, autofill_manager_->NumFormStructures());
|
| + EXPECT_EQ("en-GB", autofill_manager_->GetFormStructureAtIndex(0)->locale());
|
| +
|
| + forms.clear();
|
| + forms.push_back(form2);
|
| + autofill_manager_->FormsSeen(forms);
|
| +
|
| + // We should detect the locale of this new form immediately.
|
| + ASSERT_EQ(2U, autofill_manager_->NumFormStructures());
|
| + EXPECT_EQ("en-GB", autofill_manager_->GetFormStructureAtIndex(0)->locale());
|
| + EXPECT_EQ("fr-FR", autofill_manager_->GetFormStructureAtIndex(1)->locale());
|
| +
|
| + forms.clear();
|
| + forms.push_back(form1);
|
| + forms.push_back(form2);
|
| + autofill_manager_->Reset();
|
| + autofill_manager_->FormsSeen(forms);
|
| +
|
| + // We should not yet have tried to detect the locale.
|
| + ASSERT_EQ(2U, autofill_manager_->NumFormStructures());
|
| + EXPECT_EQ("xx", autofill_manager_->GetFormStructureAtIndex(0)->locale());
|
| + EXPECT_EQ("xx", autofill_manager_->GetFormStructureAtIndex(1)->locale());
|
| +
|
| + autofill_manager_->Observe(NotificationType::TAB_LANGUAGE_DETERMINED,
|
| + Source<TabContents>(tab_contents),
|
| + NotificationService::NoDetails());
|
| +
|
| + // Now we should have detected both locales.
|
| + ASSERT_EQ(2U, autofill_manager_->NumFormStructures());
|
| + EXPECT_EQ("en-GB", autofill_manager_->GetFormStructureAtIndex(0)->locale());
|
| + EXPECT_EQ("fr-FR", autofill_manager_->GetFormStructureAtIndex(1)->locale());
|
| +}
|
|
|