OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #import <Cocoa/Cocoa.h> | |
6 | |
7 #include "base/scoped_nsobject.h" | |
8 #include "chrome/browser/browsing_data_remover.h" | |
9 #include "chrome/browser/prefs/pref_service.h" | |
10 #include "chrome/browser/profiles/profile.h" | |
11 #include "chrome/browser/ui/cocoa/browser_test_helper.h" | |
12 #import "chrome/browser/ui/cocoa/clear_browsing_data_controller.h" | |
13 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" | |
14 #include "chrome/common/pref_names.h" | |
15 #include "testing/gtest/include/gtest/gtest.h" | |
16 #include "testing/platform_test.h" | |
17 #import "third_party/ocmock/OCMock/OCMock.h" | |
18 | |
19 namespace { | |
20 | |
21 class ClearBrowsingDataControllerTest : public CocoaTest { | |
22 public: | |
23 virtual void SetUp() { | |
24 CocoaTest::SetUp(); | |
25 // Set up some interesting prefs: | |
26 PrefService* prefs = helper_.profile()->GetPrefs(); | |
27 prefs->SetBoolean(prefs::kDeleteBrowsingHistory, true); | |
28 prefs->SetBoolean(prefs::kDeleteDownloadHistory, false); | |
29 prefs->SetBoolean(prefs::kDeleteCache, true); | |
30 prefs->SetBoolean(prefs::kDeleteCookies, false); | |
31 prefs->SetBoolean(prefs::kDeletePasswords, true); | |
32 prefs->SetBoolean(prefs::kDeleteFormData, false); | |
33 prefs->SetInteger(prefs::kDeleteTimePeriod, | |
34 BrowsingDataRemover::FOUR_WEEKS); | |
35 controller_ = | |
36 [ClearBrowsingDataController controllerForProfile:helper_.profile()]; | |
37 } | |
38 | |
39 virtual void TearDown() { | |
40 [controller_ closeDialog]; | |
41 CocoaTest::TearDown(); | |
42 } | |
43 | |
44 BrowserTestHelper helper_; | |
45 ClearBrowsingDataController* controller_; | |
46 }; | |
47 | |
48 TEST_F(ClearBrowsingDataControllerTest, InitialState) { | |
49 // Check properties match the prefs set above: | |
50 EXPECT_TRUE([controller_ clearBrowsingHistory]); | |
51 EXPECT_FALSE([controller_ clearDownloadHistory]); | |
52 EXPECT_TRUE([controller_ emptyCache]); | |
53 EXPECT_FALSE([controller_ deleteCookies]); | |
54 EXPECT_TRUE([controller_ clearSavedPasswords]); | |
55 EXPECT_FALSE([controller_ clearFormData]); | |
56 EXPECT_EQ(BrowsingDataRemover::FOUR_WEEKS, | |
57 [controller_ timePeriod]); | |
58 } | |
59 | |
60 TEST_F(ClearBrowsingDataControllerTest, InitialRemoveMask) { | |
61 // Check that the remove-mask matches the initial properties: | |
62 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY | | |
63 BrowsingDataRemover::REMOVE_CACHE | | |
64 BrowsingDataRemover::REMOVE_PASSWORDS, | |
65 [controller_ removeMask]); | |
66 } | |
67 | |
68 TEST_F(ClearBrowsingDataControllerTest, ModifiedRemoveMask) { | |
69 // Invert all properties and check that the remove-mask is still correct: | |
70 [controller_ setClearBrowsingHistory:false]; | |
71 [controller_ setClearDownloadHistory:true]; | |
72 [controller_ setEmptyCache:false]; | |
73 [controller_ setDeleteCookies:true]; | |
74 [controller_ setClearSavedPasswords:false]; | |
75 [controller_ setClearFormData:true]; | |
76 | |
77 EXPECT_EQ(BrowsingDataRemover::REMOVE_DOWNLOADS | | |
78 BrowsingDataRemover::REMOVE_COOKIES | | |
79 BrowsingDataRemover::REMOVE_FORM_DATA, | |
80 [controller_ removeMask]); | |
81 } | |
82 | |
83 TEST_F(ClearBrowsingDataControllerTest, EmptyRemoveMask) { | |
84 // Clear all properties and check that the remove-mask is zero: | |
85 [controller_ setClearBrowsingHistory:false]; | |
86 [controller_ setClearDownloadHistory:false]; | |
87 [controller_ setEmptyCache:false]; | |
88 [controller_ setDeleteCookies:false]; | |
89 [controller_ setClearSavedPasswords:false]; | |
90 [controller_ setClearFormData:false]; | |
91 | |
92 EXPECT_EQ(0, | |
93 [controller_ removeMask]); | |
94 } | |
95 | |
96 TEST_F(ClearBrowsingDataControllerTest, PersistToPrefs) { | |
97 // Change some settings and store to prefs: | |
98 [controller_ setClearBrowsingHistory:false]; | |
99 [controller_ setClearDownloadHistory:true]; | |
100 [controller_ persistToPrefs]; | |
101 | |
102 // Test that the modified settings were stored to prefs: | |
103 PrefService* prefs = helper_.profile()->GetPrefs(); | |
104 EXPECT_FALSE(prefs->GetBoolean(prefs::kDeleteBrowsingHistory)); | |
105 EXPECT_TRUE(prefs->GetBoolean(prefs::kDeleteDownloadHistory)); | |
106 | |
107 // Make sure the rest of the prefs didn't change: | |
108 EXPECT_TRUE(prefs->GetBoolean(prefs::kDeleteCache)); | |
109 EXPECT_FALSE(prefs->GetBoolean(prefs::kDeleteCookies)); | |
110 EXPECT_TRUE(prefs->GetBoolean(prefs::kDeletePasswords)); | |
111 EXPECT_FALSE(prefs->GetBoolean(prefs::kDeleteFormData)); | |
112 EXPECT_EQ(BrowsingDataRemover::FOUR_WEEKS, | |
113 prefs->GetInteger(prefs::kDeleteTimePeriod)); | |
114 } | |
115 | |
116 TEST_F(ClearBrowsingDataControllerTest, SameControllerForProfile) { | |
117 ClearBrowsingDataController* controller = | |
118 [ClearBrowsingDataController controllerForProfile:helper_.profile()]; | |
119 EXPECT_EQ(controller_, controller); | |
120 } | |
121 | |
122 TEST_F(ClearBrowsingDataControllerTest, DataRemoverDidFinish) { | |
123 id observer = [OCMockObject observerMock]; | |
124 // Don't use |controller_| as the object because it will free itself twice | |
125 // because both |-dataRemoverDidFinish| and TearDown() call |-closeDialog|. | |
126 ClearBrowsingDataController* controller = | |
127 [[ClearBrowsingDataController alloc] initWithProfile:helper_.profile()]; | |
128 | |
129 NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; | |
130 [center addMockObserver:observer | |
131 name:kClearBrowsingDataControllerDidDelete | |
132 object:controller]; | |
133 | |
134 int mask = [controller removeMask]; | |
135 NSDictionary* expectedInfo = | |
136 [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:mask] | |
137 forKey:kClearBrowsingDataControllerRemoveMask]; | |
138 [[observer expect] | |
139 notificationWithName:kClearBrowsingDataControllerDidDelete | |
140 object:controller | |
141 userInfo:expectedInfo]; | |
142 | |
143 // This calls |-closeDialog| and cleans the controller up. | |
144 [controller dataRemoverDidFinish]; | |
145 | |
146 [observer verify]; | |
147 } | |
148 | |
149 } // namespace | |
OLD | NEW |