| OLD | NEW |
| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/command_line.h" | |
| 8 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 9 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 10 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 11 #include "chrome/browser/autofill/autofill_manager.h" | 10 #include "chrome/browser/autofill/autofill_manager.h" |
| 12 #include "chrome/browser/autofill/data_driven_test.h" | 11 #include "chrome/browser/autofill/data_driven_test.h" |
| 13 #include "chrome/browser/autofill/form_structure.h" | 12 #include "chrome/browser/autofill/form_structure.h" |
| 14 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
| 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 14 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 16 #include "chrome/common/chrome_switches.h" | |
| 17 #include "chrome/test/base/in_process_browser_test.h" | 15 #include "chrome/test/base/in_process_browser_test.h" |
| 18 #include "chrome/test/base/ui_test_utils.h" | 16 #include "chrome/test/base/ui_test_utils.h" |
| 19 #include "googleurl/src/gurl.h" | 17 #include "googleurl/src/gurl.h" |
| 20 | 18 |
| 21 namespace { | 19 namespace { |
| 22 | 20 |
| 23 const base::FilePath::CharType kTestName[] = FILE_PATH_LITERAL("heuristics"); | 21 const base::FilePath::CharType kTestName[] = FILE_PATH_LITERAL("heuristics"); |
| 24 | 22 |
| 25 // Convert the |html| snippet to a data URI. | 23 // Convert the |html| snippet to a data URI. |
| 26 GURL HTMLToDataURI(const std::string& html) { | 24 GURL HTMLToDataURI(const std::string& html) { |
| 27 return GURL(std::string("data:text/html;charset=utf-8,") + html); | 25 return GURL(std::string("data:text/html;charset=utf-8,") + html); |
| 28 } | 26 } |
| 29 | 27 |
| 30 } // namespace | 28 } // namespace |
| 31 | 29 |
| 32 // A data-driven test for verifying Autofill heuristics. Each input is an HTML | 30 // A data-driven test for verifying Autofill heuristics. Each input is an HTML |
| 33 // file that contains one or more forms. The corresponding output file lists the | 31 // file that contains one or more forms. The corresponding output file lists the |
| 34 // heuristically detected type for eachfield. | 32 // heuristically detected type for eachfield. |
| 35 class FormStructureBrowserTest : public InProcessBrowserTest, | 33 class FormStructureBrowserTest : public InProcessBrowserTest, |
| 36 public DataDrivenTest { | 34 public DataDrivenTest { |
| 37 protected: | 35 protected: |
| 38 FormStructureBrowserTest(); | 36 FormStructureBrowserTest(); |
| 39 virtual ~FormStructureBrowserTest(); | 37 virtual ~FormStructureBrowserTest(); |
| 40 | 38 |
| 41 // InProcessBrowserTest: | |
| 42 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; | |
| 43 | |
| 44 // DataDrivenTest: | 39 // DataDrivenTest: |
| 45 virtual void GenerateResults(const std::string& input, | 40 virtual void GenerateResults(const std::string& input, |
| 46 std::string* output) OVERRIDE; | 41 std::string* output) OVERRIDE; |
| 47 | 42 |
| 48 // Serializes the given |forms| into a string. | 43 // Serializes the given |forms| into a string. |
| 49 std::string FormStructuresToString(const std::vector<FormStructure*>& forms); | 44 std::string FormStructuresToString(const std::vector<FormStructure*>& forms); |
| 50 | 45 |
| 51 private: | 46 private: |
| 52 DISALLOW_COPY_AND_ASSIGN(FormStructureBrowserTest); | 47 DISALLOW_COPY_AND_ASSIGN(FormStructureBrowserTest); |
| 53 }; | 48 }; |
| 54 | 49 |
| 55 FormStructureBrowserTest::FormStructureBrowserTest() { | 50 FormStructureBrowserTest::FormStructureBrowserTest() { |
| 56 } | 51 } |
| 57 | 52 |
| 58 FormStructureBrowserTest::~FormStructureBrowserTest() { | 53 FormStructureBrowserTest::~FormStructureBrowserTest() { |
| 59 } | 54 } |
| 60 | 55 |
| 61 void FormStructureBrowserTest::SetUpCommandLine(CommandLine* command_line) { | |
| 62 // Include new field types and heuristics in the regression test. | |
| 63 command_line->AppendSwitch(switches::kEnableNewAutofillHeuristics); | |
| 64 } | |
| 65 | |
| 66 void FormStructureBrowserTest::GenerateResults(const std::string& input, | 56 void FormStructureBrowserTest::GenerateResults(const std::string& input, |
| 67 std::string* output) { | 57 std::string* output) { |
| 68 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), | 58 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(browser(), |
| 69 HTMLToDataURI(input))); | 59 HTMLToDataURI(input))); |
| 70 | 60 |
| 71 AutofillManager* autofill_manager = AutofillManager::FromWebContents( | 61 AutofillManager* autofill_manager = AutofillManager::FromWebContents( |
| 72 browser()->tab_strip_model()->GetActiveWebContents()); | 62 browser()->tab_strip_model()->GetActiveWebContents()); |
| 73 ASSERT_NE(static_cast<AutofillManager*>(NULL), autofill_manager); | 63 ASSERT_NE(static_cast<AutofillManager*>(NULL), autofill_manager); |
| 74 std::vector<FormStructure*> forms = autofill_manager->form_structures_.get(); | 64 std::vector<FormStructure*> forms = autofill_manager->form_structures_.get(); |
| 75 *output = FormStructureBrowserTest::FormStructuresToString(forms); | 65 *output = FormStructureBrowserTest::FormStructuresToString(forms); |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 } | 254 } |
| 265 | 255 |
| 266 IN_PROC_BROWSER_TEST_F(FormStructureBrowserTest, | 256 IN_PROC_BROWSER_TEST_F(FormStructureBrowserTest, |
| 267 MAYBE_DataDrivenHeuristics(20)) { | 257 MAYBE_DataDrivenHeuristics(20)) { |
| 268 const base::FilePath::CharType kFileNamePattern[] = | 258 const base::FilePath::CharType kFileNamePattern[] = |
| 269 FILE_PATH_LITERAL("20_*.html"); | 259 FILE_PATH_LITERAL("20_*.html"); |
| 270 RunDataDrivenTest(GetInputDirectory(kTestName), | 260 RunDataDrivenTest(GetInputDirectory(kTestName), |
| 271 GetOutputDirectory(kTestName), | 261 GetOutputDirectory(kTestName), |
| 272 kFileNamePattern); | 262 kFileNamePattern); |
| 273 } | 263 } |
| OLD | NEW |