OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/browsing_data/browsing_data_remover_test_util.h" | 5 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h" |
6 #include "chrome/browser/ui/webui/options/options_ui_browsertest.h" | 6 #include "chrome/browser/ui/webui/options/options_ui_browsertest.h" |
7 #include "chrome/common/url_constants.h" | 7 #include "chrome/common/url_constants.h" |
8 #include "content/public/test/browser_test_utils.h" | 8 #include "content/public/test/browser_test_utils.h" |
9 | 9 |
10 namespace options { | 10 namespace options { |
11 | 11 |
12 class ClearBrowserDataBrowserTest : public OptionsUIBrowserTest { | 12 class ClearBrowserDataBrowserTest : public OptionsUIBrowserTest { |
13 protected: | 13 protected: |
14 void ClickElement(const std::string& selector) { | 14 void ClickElement(const std::string& selector) { |
15 bool element_enabled = false; | 15 bool element_enabled = false; |
16 ASSERT_NO_FATAL_FAILURE(GetElementEnabledState(selector, &element_enabled)); | 16 ASSERT_NO_FATAL_FAILURE(GetElementEnabledState(selector, &element_enabled)); |
17 ASSERT_TRUE(element_enabled); | 17 ASSERT_TRUE(element_enabled); |
18 ASSERT_TRUE(content::ExecuteScript( | 18 ASSERT_TRUE(content::ExecuteScript( |
19 GetSettingsFrame(), | 19 GetSettingsFrame(), |
20 "document.querySelector('" + selector + "').click();")); | 20 "document.querySelector('" + selector + "').click();")); |
21 } | 21 } |
22 | 22 |
23 bool IsElementEnabled(const std::string& selector) { | 23 bool IsElementEnabled(const std::string& selector) { |
24 bool element_enabled = false; | 24 bool element_enabled = false; |
25 GetElementEnabledState(selector, &element_enabled); | 25 GetElementEnabledState(selector, &element_enabled); |
26 return element_enabled; | 26 return element_enabled; |
27 } | 27 } |
28 | 28 |
| 29 bool IsElementInFocus(const std::string& selector) { |
| 30 bool element_in_focus = false; |
| 31 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 32 GetSettingsFrame(), |
| 33 "window.domAutomationController.send(document.querySelector('" + |
| 34 selector + "') == document.activeElement);", |
| 35 &element_in_focus)); |
| 36 return element_in_focus; |
| 37 } |
| 38 |
29 private: | 39 private: |
30 void GetElementEnabledState( | 40 void GetElementEnabledState( |
31 const std::string& selector, | 41 const std::string& selector, |
32 bool* enabled) { | 42 bool* enabled) { |
33 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 43 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
34 GetSettingsFrame(), | 44 GetSettingsFrame(), |
35 "window.domAutomationController.send(!document.querySelector('" + | 45 "window.domAutomationController.send(!document.querySelector('" + |
36 selector + "').disabled);", | 46 selector + "').disabled);", |
37 enabled)); | 47 enabled)); |
38 } | 48 } |
39 }; | 49 }; |
40 | 50 |
41 IN_PROC_BROWSER_TEST_F(ClearBrowserDataBrowserTest, | 51 IN_PROC_BROWSER_TEST_F(ClearBrowserDataBrowserTest, |
42 CommitButtonDisabledWhileDeletionInProgress) { | 52 CommitButtonDisabledWhileDeletionInProgress) { |
| 53 const char kTimePeriodSelectorId[] = "#clear-browser-data-time-period"; |
43 const char kCommitButtonId[] = "#clear-browser-data-commit"; | 54 const char kCommitButtonId[] = "#clear-browser-data-commit"; |
44 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; | 55 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; |
45 | 56 |
46 // Navigate to the Clear Browsing Data dialog to ensure that the commit button | 57 // Navigate to the Clear Browsing Data dialog to ensure that the commit button |
47 // is initially enabled, usable, and gets disabled after having been pressed. | 58 // is initially enabled, usable, and gets disabled after having been pressed. |
| 59 // Also verify that the time period combo-box gets the initial focus. |
48 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); | 60 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); |
| 61 EXPECT_TRUE(IsElementInFocus(kTimePeriodSelectorId)); |
49 ASSERT_NO_FATAL_FAILURE(ClickElement(kCommitButtonId)); | 62 ASSERT_NO_FATAL_FAILURE(ClickElement(kCommitButtonId)); |
50 EXPECT_FALSE(IsElementEnabled(kCommitButtonId)); | 63 EXPECT_FALSE(IsElementEnabled(kCommitButtonId)); |
51 | 64 |
52 completion_inhibitor.BlockUntilNearCompletion(); | 65 completion_inhibitor.BlockUntilNearCompletion(); |
53 | 66 |
54 // Simulate a reload while the previous removal is still running, and verify | 67 // Simulate a reload while the previous removal is still running, and verify |
55 // that the button is still disabled. | 68 // that the button is still disabled. |
56 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); | 69 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); |
57 EXPECT_FALSE(IsElementEnabled(kCommitButtonId)); | 70 EXPECT_FALSE(IsElementEnabled(kCommitButtonId)); |
58 | 71 |
59 completion_inhibitor.ContinueToCompletion(); | 72 completion_inhibitor.ContinueToCompletion(); |
60 | 73 |
61 // However, the button should be enabled again once the process has finished. | 74 // However, the button should be enabled again once the process has finished. |
62 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); | 75 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); |
63 EXPECT_TRUE(IsElementEnabled(kCommitButtonId)); | 76 EXPECT_TRUE(IsElementEnabled(kCommitButtonId)); |
64 } | 77 } |
65 | 78 |
66 } // namespace options | 79 } // namespace options |
OLD | NEW |