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

Side by Side Diff: chrome/browser/browsing_data_remover_unittest.cc

Issue 7129018: Time-based removal of temporary file systems via BrowsingDataRemover (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_remover.h" 5 #include "chrome/browser/browsing_data_remover.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/platform_file.h" 8 #include "base/platform_file.h"
9 #include "chrome/browser/history/history.h" 9 #include "chrome/browser/history/history.h"
10 #include "chrome/test/testing_profile.h" 10 #include "chrome/test/testing_profile.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webkit/fileapi/file_system_context.h" 12 #include "webkit/fileapi/file_system_context.h"
13 #include "webkit/fileapi/file_system_operation_context.h" 13 #include "webkit/fileapi/file_system_operation_context.h"
14 #include "webkit/fileapi/file_system_file_util.h" 14 #include "webkit/fileapi/file_system_file_util.h"
15 #include "webkit/fileapi/file_system_path_manager.h" 15 #include "webkit/fileapi/file_system_path_manager.h"
16 #include "webkit/fileapi/file_system_test_helper.h"
16 #include "webkit/fileapi/sandbox_mount_point_provider.h" 17 #include "webkit/fileapi/sandbox_mount_point_provider.h"
17 18
18 namespace { 19 namespace {
19 20
20 const char kTestkOrigin1[] = "http://host1:1/"; 21 const char kTestkOrigin1[] = "http://host1:1/";
21 const char kTestkOrigin2[] = "http://host2:1/"; 22 const char kTestkOrigin2[] = "http://host2:1/";
22 const char kTestkOrigin3[] = "http://host3:1/"; 23 const char kTestkOrigin3[] = "http://host3:1/";
23 24
24 const GURL kOrigin1(kTestkOrigin1); 25 const GURL kOrigin1(kTestkOrigin1);
25 const GURL kOrigin2(kTestkOrigin2); 26 const GURL kOrigin2(kTestkOrigin2);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 sandbox_->ValidateFileSystemRootAndGetURL( 110 sandbox_->ValidateFileSystemRootAndGetURL(
110 origin, type, false, NewCallback(this, 111 origin, type, false, NewCallback(this,
111 &RemoveFileSystemTester::FindFileSystemPathCallback)); 112 &RemoveFileSystemTester::FindFileSystemPathCallback));
112 BlockUntilNotified(); 113 BlockUntilNotified();
113 return found_file_system_; 114 return found_file_system_;
114 } 115 }
115 116
116 virtual void PopulateTestFileSystemData(TestingProfile* profile) { 117 virtual void PopulateTestFileSystemData(TestingProfile* profile) {
117 // Set up kOrigin1 with a temporary file system, kOrigin2 with a persistent 118 // Set up kOrigin1 with a temporary file system, kOrigin2 with a persistent
118 // file system, and kOrigin3 with both. 119 // file system, and kOrigin3 with both.
119 sandbox_ = profile->GetFileSystemContext()->path_manager()-> 120 profile_ = profile;
121 sandbox_ = profile_->GetFileSystemContext()->path_manager()->
120 sandbox_provider(); 122 sandbox_provider();
121 123
122 CreateDirectoryForOriginAndType(kOrigin1, 124 CreateDirectoryForOriginAndType(kOrigin1,
123 fileapi::kFileSystemTypeTemporary); 125 fileapi::kFileSystemTypeTemporary);
124 CreateDirectoryForOriginAndType(kOrigin2, 126 CreateDirectoryForOriginAndType(kOrigin2,
125 fileapi::kFileSystemTypePersistent); 127 fileapi::kFileSystemTypePersistent);
126 CreateDirectoryForOriginAndType(kOrigin3, 128 CreateDirectoryForOriginAndType(kOrigin3,
127 fileapi::kFileSystemTypeTemporary); 129 fileapi::kFileSystemTypeTemporary);
128 CreateDirectoryForOriginAndType(kOrigin3, 130 CreateDirectoryForOriginAndType(kOrigin3,
129 fileapi::kFileSystemTypePersistent); 131 fileapi::kFileSystemTypePersistent);
130 132
133 FilePath temp("tempfile.tmp");
134 TouchTestFileForOriginAndType(kOrigin1, fileapi::kFileSystemTypeTemporary,
135 temp, base::Time::Now());
136 TouchTestFileForOriginAndType(kOrigin2, fileapi::kFileSystemTypePersistent,
137 temp, base::Time::Now());
138 TouchTestFileForOriginAndType(kOrigin3, fileapi::kFileSystemTypePersistent,
139 temp, base::Time::Now());
140 TouchTestFileForOriginAndType(kOrigin3, fileapi::kFileSystemTypeTemporary,
141 temp, base::Time::Now());
142
131 EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin1, 143 EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin1,
132 fileapi::kFileSystemTypePersistent)); 144 fileapi::kFileSystemTypePersistent));
133 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin1, 145 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin1,
134 fileapi::kFileSystemTypeTemporary)); 146 fileapi::kFileSystemTypeTemporary));
135 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin2, 147 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin2,
136 fileapi::kFileSystemTypePersistent)); 148 fileapi::kFileSystemTypePersistent));
137 EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin2, 149 EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin2,
138 fileapi::kFileSystemTypeTemporary)); 150 fileapi::kFileSystemTypeTemporary));
139 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3, 151 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3,
140 fileapi::kFileSystemTypePersistent)); 152 fileapi::kFileSystemTypePersistent));
141 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3, 153 EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3,
142 fileapi::kFileSystemTypeTemporary)); 154 fileapi::kFileSystemTypeTemporary));
143 } 155 }
144 156
145 void CreateDirectoryForOriginAndType(const GURL& origin, 157 void CreateDirectoryForOriginAndType(const GURL& origin,
146 fileapi::FileSystemType type) { 158 fileapi::FileSystemType type) {
159 fileapi::FileSystemTestOriginHelper helper(origin, type);
160 helper.SetUp(profile_->GetFileSystemContext(),
161 sandbox_->GetFileSystemFileUtil());
147 FilePath target = sandbox_->ValidateFileSystemRootAndGetPathOnFileThread( 162 FilePath target = sandbox_->ValidateFileSystemRootAndGetPathOnFileThread(
148 origin, type, FilePath(), true); 163 origin, type, FilePath(), true);
149 EXPECT_TRUE(file_util::DirectoryExists(target)); 164 EXPECT_TRUE(file_util::DirectoryExists(target));
150 } 165 }
151 166
167 void TouchTestFileForOriginAndType(const GURL& origin,
168 fileapi::FileSystemType type,
169 const FilePath& path,
170 const base::Time& modified) {
171 // We can use a raw pointer here for the same reason that `sandbox_` can be
172 // a raw pointer: everything is destroyed when the profile destroys the
173 // FileSystemContext in which they each live.
174 fileapi::FileSystemFileUtil* file_util = sandbox_->GetFileSystemFileUtil();
175
176 // The operation context, though, we'll have to destroy ourselves.
177 scoped_ptr<fileapi::FileSystemOperationContext>
178 op_context(new fileapi::FileSystemOperationContext(
179 profile_->GetFileSystemContext(), file_util));
180 op_context->set_src_origin_url(origin);
181 op_context->set_src_type(type);
182
183 bool created;
184 base::PlatformFileError status = file_util->EnsureFileExists(
185 op_context.get(), path, &created);
186 EXPECT_EQ(base::PLATFORM_FILE_OK, status);
187 EXPECT_TRUE(created);
188 }
189
152 private: 190 private:
191 // We own neither of these pointers; we shouldn't destroy them.
153 fileapi::SandboxMountPointProvider* sandbox_; 192 fileapi::SandboxMountPointProvider* sandbox_;
193 TestingProfile* profile_;
154 bool found_file_system_; 194 bool found_file_system_;
155 195
156 DISALLOW_COPY_AND_ASSIGN(RemoveFileSystemTester); 196 DISALLOW_COPY_AND_ASSIGN(RemoveFileSystemTester);
157 }; 197 };
158 198
159 class BrowsingDataRemoverTest : public testing::Test { 199 class BrowsingDataRemoverTest : public testing::Test {
160 public: 200 public:
161 BrowsingDataRemoverTest() 201 BrowsingDataRemoverTest()
162 : ui_thread_(BrowserThread::UI, &message_loop_), 202 : ui_thread_(BrowserThread::UI, &message_loop_),
163 db_thread_(BrowserThread::DB, &message_loop_), 203 db_thread_(BrowserThread::DB, &message_loop_),
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2, 297 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2,
258 fileapi::kFileSystemTypePersistent)); 298 fileapi::kFileSystemTypePersistent));
259 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2, 299 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2,
260 fileapi::kFileSystemTypeTemporary)); 300 fileapi::kFileSystemTypeTemporary));
261 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3, 301 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3,
262 fileapi::kFileSystemTypePersistent)); 302 fileapi::kFileSystemTypePersistent));
263 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3, 303 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3,
264 fileapi::kFileSystemTypeTemporary)); 304 fileapi::kFileSystemTypeTemporary));
265 } 305 }
266 306
307 TEST_F(BrowsingDataRemoverTest, RemoveFileSystemsForLastHour) {
308 scoped_ptr<RemoveFileSystemTester> tester(new RemoveFileSystemTester());
309
310 tester->PopulateTestFileSystemData(GetProfile());
311
312 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR,
313 base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
314
315 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin1,
316 fileapi::kFileSystemTypePersistent));
317 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin1,
318 fileapi::kFileSystemTypeTemporary));
319 EXPECT_TRUE(tester->FileSystemContainsOriginAndType(kOrigin2,
320 fileapi::kFileSystemTypePersistent));
321 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2,
322 fileapi::kFileSystemTypeTemporary));
323 EXPECT_TRUE(tester->FileSystemContainsOriginAndType(kOrigin3,
324 fileapi::kFileSystemTypePersistent));
325 EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3,
326 fileapi::kFileSystemTypeTemporary));
327 }
328
267 } // namespace 329 } // namespace
OLDNEW
« chrome/browser/browsing_data_remover.cc ('K') | « chrome/browser/browsing_data_remover.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698