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

Side by Side Diff: chrome/browser/ui/webui/options/clear_browser_data_browsertest.cc

Issue 275483005: Fix initial focus, and the way elements are disabled on the 'Clear browsing data' dialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed OR condition, added test. Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/prefs/pref_service.h"
5 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h" 6 #include "chrome/browser/browsing_data/browsing_data_remover_test_util.h"
7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h"
6 #include "chrome/browser/ui/webui/options/options_ui_browsertest.h" 9 #include "chrome/browser/ui/webui/options/options_ui_browsertest.h"
7 #include "chrome/common/url_constants.h" 10 #include "chrome/common/url_constants.h"
8 #include "content/public/test/browser_test_utils.h" 11 #include "content/public/test/browser_test_utils.h"
9 12
10 namespace options { 13 namespace options {
11 14
12 class ClearBrowserDataBrowserTest : public OptionsUIBrowserTest { 15 class ClearBrowserDataBrowserTest : public OptionsUIBrowserTest {
13 protected: 16 protected:
14 void ClickElement(const std::string& selector) { 17 void ClickElement(const std::string& selector) {
15 bool element_enabled = false; 18 bool element_enabled = false;
16 ASSERT_NO_FATAL_FAILURE(GetElementEnabledState(selector, &element_enabled)); 19 ASSERT_NO_FATAL_FAILURE(GetElementEnabledState(selector, &element_enabled));
17 ASSERT_TRUE(element_enabled); 20 ASSERT_TRUE(element_enabled);
18 ASSERT_TRUE(content::ExecuteScript( 21 ASSERT_TRUE(content::ExecuteScript(
19 GetSettingsFrame(), 22 GetSettingsFrame(),
20 "document.querySelector('" + selector + "').click();")); 23 "document.querySelector('" + selector + "').click();"));
21 } 24 }
22 25
23 bool IsElementEnabled(const std::string& selector) { 26 bool IsElementEnabled(const std::string& selector) {
24 bool element_enabled = false; 27 bool element_enabled = false;
25 GetElementEnabledState(selector, &element_enabled); 28 GetElementEnabledState(selector, &element_enabled);
26 return element_enabled; 29 return element_enabled;
27 } 30 }
28 31
32 bool IsElementInFocus(const std::string& selector) {
33 bool element_in_focus = false;
34 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
35 GetSettingsFrame(),
36 "window.domAutomationController.send(document.querySelector('" +
37 selector + "') == document.activeElement);",
38 &element_in_focus));
39 return element_in_focus;
40 }
41
29 private: 42 private:
30 void GetElementEnabledState( 43 void GetElementEnabledState(
31 const std::string& selector, 44 const std::string& selector,
32 bool* enabled) { 45 bool* enabled) {
33 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 46 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
34 GetSettingsFrame(), 47 GetSettingsFrame(),
35 "window.domAutomationController.send(!document.querySelector('" + 48 "window.domAutomationController.send(!document.querySelector('" +
36 selector + "').disabled);", 49 selector + "').disabled);",
37 enabled)); 50 enabled));
38 } 51 }
39 }; 52 };
40 53
41 IN_PROC_BROWSER_TEST_F(ClearBrowserDataBrowserTest, 54 IN_PROC_BROWSER_TEST_F(ClearBrowserDataBrowserTest,
42 CommitButtonDisabledWhileDeletionInProgress) { 55 CommitButtonDisabledWhileDeletionInProgress) {
56 const char kTimePeriodSelectorId[] = "#clear-browser-data-time-period";
43 const char kCommitButtonId[] = "#clear-browser-data-commit"; 57 const char kCommitButtonId[] = "#clear-browser-data-commit";
44 BrowsingDataRemoverCompletionInhibitor completion_inhibitor; 58 BrowsingDataRemoverCompletionInhibitor completion_inhibitor;
45 59
46 // Navigate to the Clear Browsing Data dialog to ensure that the commit button 60 // 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. 61 // is initially enabled, usable, and gets disabled after having been pressed.
62 // Furthermore, verify that the time period combo-box gets the initial focus.
48 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); 63 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage);
64 EXPECT_TRUE(IsElementInFocus(kTimePeriodSelectorId));
49 ASSERT_NO_FATAL_FAILURE(ClickElement(kCommitButtonId)); 65 ASSERT_NO_FATAL_FAILURE(ClickElement(kCommitButtonId));
50 EXPECT_FALSE(IsElementEnabled(kCommitButtonId)); 66 EXPECT_FALSE(IsElementEnabled(kCommitButtonId));
51 67
52 completion_inhibitor.BlockUntilNearCompletion(); 68 completion_inhibitor.BlockUntilNearCompletion();
53 69
54 // Simulate a reload while the previous removal is still running, and verify 70 // Simulate a reload while the previous removal is still running, and verify
55 // that the button is still disabled. 71 // that the button is still disabled.
56 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); 72 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage);
57 EXPECT_FALSE(IsElementEnabled(kCommitButtonId)); 73 EXPECT_FALSE(IsElementEnabled(kCommitButtonId));
58 74
59 completion_inhibitor.ContinueToCompletion(); 75 completion_inhibitor.ContinueToCompletion();
60 76
61 // However, the button should be enabled again once the process has finished. 77 // However, the button should be enabled again once the process has finished.
62 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage); 78 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage);
63 EXPECT_TRUE(IsElementEnabled(kCommitButtonId)); 79 EXPECT_TRUE(IsElementEnabled(kCommitButtonId));
64 } 80 }
65 81
82 IN_PROC_BROWSER_TEST_F(ClearBrowserDataBrowserTest,
83 CommitButtonDisabledWhenNoDataTypesSelected) {
84 const char kCommitButtonId[] = "#clear-browser-data-commit";
85 const char* kDataTypes[] = {"browser.clear_data.browsing_history",
86 "browser.clear_data.download_history",
87 "browser.clear_data.cache",
88 "browser.clear_data.cookies",
89 "browser.clear_data.passwords",
90 "browser.clear_data.form_data",
91 "browser.clear_data.hosted_apps_data",
92 "browser.clear_data.content_licenses"};
93
94 // Navigate to the Clear Browsing Data dialog to ensure that the commit button
95 // is disabled if clearing is not requested for any of the data types.
96 PrefService* prefs = browser()->profile()->GetPrefs();
97 for (size_t i = 0; i < arraysize(kDataTypes); ++i)
Dan Beam 2014/05/30 21:11:07 nit: curlies
engedy 2014/05/31 14:25:56 Done.
98 prefs->SetBoolean(kDataTypes[i], false);
Dan Beam 2014/05/30 21:11:07 nit: \n
engedy 2014/05/31 14:25:56 Done.
99 NavigateToSettingsSubpage(chrome::kClearBrowserDataSubPage);
100 EXPECT_FALSE(IsElementEnabled(kCommitButtonId));
101
102 // However, expect the commit button to be re-enabled if any of the data types
103 // gets selected to be cleared.
104 for (size_t i = 0; i < arraysize(kDataTypes); ++i) {
105 prefs->SetBoolean(kDataTypes[i], true);
106 EXPECT_TRUE(IsElementEnabled(kCommitButtonId));
107 prefs->SetBoolean(kDataTypes[i], false);
108 }
109 }
110
66 } // namespace options 111 } // namespace options
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698