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

Side by Side Diff: chrome/browser/chromeos/drive/download_handler_unittest.cc

Issue 16321002: Rewrite DownloadHandlerTest using DummyFileSystem. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comment Created 7 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/drive/mock_file_system.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/chromeos/drive/download_handler.h" 5 #include "chrome/browser/chromeos/drive/download_handler.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "chrome/browser/chromeos/drive/dummy_file_system.h"
9 #include "chrome/browser/chromeos/drive/file_system_util.h" 10 #include "chrome/browser/chromeos/drive/file_system_util.h"
10 #include "chrome/browser/chromeos/drive/file_write_helper.h" 11 #include "chrome/browser/chromeos/drive/file_write_helper.h"
11 #include "chrome/browser/chromeos/drive/mock_file_system.h"
12 #include "chrome/browser/google_apis/test_util.h" 12 #include "chrome/browser/google_apis/test_util.h"
13 #include "content/public/test/mock_download_item.h" 13 #include "content/public/test/mock_download_item.h"
14 #include "content/public/test/mock_download_manager.h" 14 #include "content/public/test/mock_download_manager.h"
15 #include "content/public/test/test_browser_thread.h" 15 #include "content/public/test/test_browser_thread.h"
16 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 using ::testing::Return;
20 using ::testing::SaveArg;
21 using ::testing::_;
22
23 namespace drive { 19 namespace drive {
24 20
25 namespace { 21 namespace {
26 22
27 // Copies |file_path| to |out_file_path|, is used as a 23 // Flags to control the state of the test file system.
28 // SubstituteDriveDownloadPathCallback. 24 enum DownloadPathState {
29 void CopySubstituteDriveDownloadPathResult(base::FilePath* out_file_path, 25 // Simulates the state that requested path just simply exists.
30 const base::FilePath& file_path) { 26 PATH_EXISTS,
31 *out_file_path = file_path; 27 // Simulates the state that requested path fails to be accessed.
32 } 28 PATH_INVALID,
29 // Simulates the state that the requested path does not exist.
30 PATH_NOT_EXIST,
31 // Simulates the state that the path does not exist nor be able to be created.
32 PATH_NOT_EXIST_AND_CREATE_FAIL,
33 };
33 34
34 // Copies |value| to |out|, is used as a content::CheckForFileExistenceCallback. 35 // Test file system for verifying the behavior of DownloadHandler, by simulating
35 void CopyCheckForFileExistenceResult(bool* out, bool value) { 36 // various responses from FileSystem.
36 *out = value; 37 class DownloadHandlerTestFileSystem : public DummyFileSystem {
37 } 38 public:
39 DownloadHandlerTestFileSystem() : state_(PATH_INVALID) {}
40
41 void set_download_path_state(DownloadPathState state) { state_ = state; }
42
43 // FileSystemInterface overrides.
44 virtual void GetResourceEntryByPath(
45 const base::FilePath& file_path,
46 const GetResourceEntryCallback& callback) OVERRIDE {
47 if (state_ == PATH_EXISTS) {
48 callback.Run(FILE_ERROR_OK, make_scoped_ptr(new ResourceEntry));
49 return;
50 }
51 callback.Run(
52 state_ == PATH_INVALID ? FILE_ERROR_FAILED : FILE_ERROR_NOT_FOUND,
53 scoped_ptr<ResourceEntry>());
54 }
55
56 virtual void CreateDirectory(
57 const base::FilePath& directory_path,
58 bool is_exclusive,
59 bool is_recursive,
60 const FileOperationCallback& callback) OVERRIDE {
61 callback.Run(state_ == PATH_NOT_EXIST ? FILE_ERROR_OK : FILE_ERROR_FAILED);
62 }
63
64 private:
65 DownloadPathState state_;
66 };
38 67
39 } // namespace 68 } // namespace
40 69
41 class DownloadHandlerTest : public testing::Test { 70 class DownloadHandlerTest : public testing::Test {
42 public: 71 public:
43 DownloadHandlerTest() 72 DownloadHandlerTest()
44 : ui_thread_(content::BrowserThread::UI, &message_loop_), 73 : ui_thread_(content::BrowserThread::UI, &message_loop_),
45 download_manager_(new content::MockDownloadManager) {} 74 download_manager_(new content::MockDownloadManager) {}
46 75
47 virtual void SetUp() OVERRIDE { 76 virtual void SetUp() OVERRIDE {
48 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 77 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
49 78
50 // Set expectations for download item. 79 // Set expectations for download item.
51 EXPECT_CALL(download_item_, GetState()) 80 EXPECT_CALL(download_item_, GetState())
52 .WillRepeatedly(Return(content::DownloadItem::IN_PROGRESS)); 81 .WillRepeatedly(testing::Return(content::DownloadItem::IN_PROGRESS));
53 82
54 // Set expectations for file system to save argument callbacks. 83 file_write_helper_.reset(new FileWriteHelper(&test_file_system_));
55 EXPECT_CALL(file_system_, GetResourceEntryByPath(_, _))
56 .WillRepeatedly(SaveArg<1>(&get_entry_info_callback_));
57 EXPECT_CALL(file_system_, CreateDirectory(_, _, _, _))
58 .WillRepeatedly(SaveArg<3>(&create_directory_callback_));
59
60 file_write_helper_.reset(new FileWriteHelper(&file_system_));
61 download_handler_.reset( 84 download_handler_.reset(
62 new DownloadHandler(file_write_helper_.get(), &file_system_)); 85 new DownloadHandler(file_write_helper_.get(), &test_file_system_));
63 download_handler_->Initialize(download_manager_.get(), temp_dir_.path()); 86 download_handler_->Initialize(download_manager_.get(), temp_dir_.path());
64 } 87 }
65 88
66 virtual void TearDown() OVERRIDE {
67 }
68
69 protected: 89 protected:
70 base::ScopedTempDir temp_dir_; 90 base::ScopedTempDir temp_dir_;
71 base::MessageLoopForUI message_loop_; 91 base::MessageLoopForUI message_loop_;
72 content::TestBrowserThread ui_thread_; 92 content::TestBrowserThread ui_thread_;
73 scoped_ptr<content::MockDownloadManager> download_manager_; 93 scoped_ptr<content::MockDownloadManager> download_manager_;
74 MockFileSystem file_system_; 94 DownloadHandlerTestFileSystem test_file_system_;
75 scoped_ptr<FileWriteHelper> file_write_helper_; 95 scoped_ptr<FileWriteHelper> file_write_helper_;
76 scoped_ptr<DownloadHandler> download_handler_; 96 scoped_ptr<DownloadHandler> download_handler_;
77 content::MockDownloadItem download_item_; 97 content::MockDownloadItem download_item_;
78
79 // Argument callbacks passed to the file system.
80 GetResourceEntryCallback get_entry_info_callback_;
81 FileOperationCallback create_directory_callback_;
82 }; 98 };
83 99
84 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathNonDrivePath) { 100 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathNonDrivePath) {
85 const base::FilePath non_drive_path(FILE_PATH_LITERAL("/foo/bar")); 101 const base::FilePath non_drive_path(FILE_PATH_LITERAL("/foo/bar"));
86 ASSERT_FALSE(util::IsUnderDriveMountPoint(non_drive_path)); 102 ASSERT_FALSE(util::IsUnderDriveMountPoint(non_drive_path));
87 103
88 // Call SubstituteDriveDownloadPath() 104 // Call SubstituteDriveDownloadPath()
89 base::FilePath substituted_path; 105 base::FilePath substituted_path;
90 download_handler_->SubstituteDriveDownloadPath( 106 download_handler_->SubstituteDriveDownloadPath(
91 non_drive_path, 107 non_drive_path,
92 &download_item_, 108 &download_item_,
93 base::Bind(&CopySubstituteDriveDownloadPathResult, &substituted_path)); 109 google_apis::test_util::CreateCopyResultCallback(&substituted_path));
94 google_apis::test_util::RunBlockingPoolTask(); 110 google_apis::test_util::RunBlockingPoolTask();
95 111
96 // Check the result. 112 // Check the result.
97 EXPECT_EQ(non_drive_path, substituted_path); 113 EXPECT_EQ(non_drive_path, substituted_path);
98 EXPECT_FALSE(download_handler_->IsDriveDownload(&download_item_)); 114 EXPECT_FALSE(download_handler_->IsDriveDownload(&download_item_));
99 } 115 }
100 116
101 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPath) { 117 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPath) {
102 const base::FilePath drive_path = 118 const base::FilePath drive_path =
103 util::GetDriveMountPointPath().AppendASCII("test.dat"); 119 util::GetDriveMountPointPath().AppendASCII("test.dat");
104 120
121 // Test the case that the download target directory already exists.
122 test_file_system_.set_download_path_state(PATH_EXISTS);
123
105 // Call SubstituteDriveDownloadPath() 124 // Call SubstituteDriveDownloadPath()
106 base::FilePath substituted_path; 125 base::FilePath substituted_path;
107 download_handler_->SubstituteDriveDownloadPath( 126 download_handler_->SubstituteDriveDownloadPath(
108 drive_path, 127 drive_path,
109 &download_item_, 128 &download_item_,
110 base::Bind(&CopySubstituteDriveDownloadPathResult, &substituted_path)); 129 google_apis::test_util::CreateCopyResultCallback(&substituted_path));
111 google_apis::test_util::RunBlockingPoolTask();
112
113 // Return result of GetResourceEntryByPath(), destination directory found.
114 scoped_ptr<ResourceEntry> entry(new ResourceEntry);
115 ASSERT_FALSE(get_entry_info_callback_.is_null());
116 get_entry_info_callback_.Run(FILE_ERROR_OK, entry.Pass());
117 google_apis::test_util::RunBlockingPoolTask(); 130 google_apis::test_util::RunBlockingPoolTask();
118 131
119 // Check the result. 132 // Check the result.
120 EXPECT_TRUE(temp_dir_.path().IsParent(substituted_path)); 133 EXPECT_TRUE(temp_dir_.path().IsParent(substituted_path));
121 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_)); 134 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_));
122 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_)); 135 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_));
123 } 136 }
124 137
125 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathGetEntryFailure) { 138 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathGetEntryFailure) {
126 const base::FilePath drive_path = 139 const base::FilePath drive_path =
127 util::GetDriveMountPointPath().AppendASCII("test.dat"); 140 util::GetDriveMountPointPath().AppendASCII("test.dat");
128 141
142 // Test the case that access to the download target directory failed for some
143 // reason.
144 test_file_system_.set_download_path_state(PATH_INVALID);
145
129 // Call SubstituteDriveDownloadPath() 146 // Call SubstituteDriveDownloadPath()
130 base::FilePath substituted_path; 147 base::FilePath substituted_path;
131 download_handler_->SubstituteDriveDownloadPath( 148 download_handler_->SubstituteDriveDownloadPath(
132 drive_path, 149 drive_path,
133 &download_item_, 150 &download_item_,
134 base::Bind(&CopySubstituteDriveDownloadPathResult, &substituted_path)); 151 google_apis::test_util::CreateCopyResultCallback(&substituted_path));
135 google_apis::test_util::RunBlockingPoolTask();
136
137 // Return result of GetResourceEntryByPath(), failing for some reason.
138 ASSERT_FALSE(get_entry_info_callback_.is_null());
139 get_entry_info_callback_.Run(FILE_ERROR_FAILED,
140 scoped_ptr<ResourceEntry>());
141 google_apis::test_util::RunBlockingPoolTask(); 152 google_apis::test_util::RunBlockingPoolTask();
142 153
143 // Check the result. 154 // Check the result.
144 EXPECT_TRUE(substituted_path.empty()); 155 EXPECT_TRUE(substituted_path.empty());
145 } 156 }
146 157
147 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathCreateDirectory) { 158 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathCreateDirectory) {
148 const base::FilePath drive_path = 159 const base::FilePath drive_path =
149 util::GetDriveMountPointPath().AppendASCII("test.dat"); 160 util::GetDriveMountPointPath().AppendASCII("test.dat");
150 161
162 // Test the case that access to the download target directory does not exist,
163 // and thus will be created in DownloadHandler.
164 test_file_system_.set_download_path_state(PATH_NOT_EXIST);
165
151 // Call SubstituteDriveDownloadPath() 166 // Call SubstituteDriveDownloadPath()
152 base::FilePath substituted_path; 167 base::FilePath substituted_path;
153 download_handler_->SubstituteDriveDownloadPath( 168 download_handler_->SubstituteDriveDownloadPath(
154 drive_path, 169 drive_path,
155 &download_item_, 170 &download_item_,
156 base::Bind(&CopySubstituteDriveDownloadPathResult, &substituted_path)); 171 google_apis::test_util::CreateCopyResultCallback(&substituted_path));
157 google_apis::test_util::RunBlockingPoolTask();
158
159 // Return result of GetResourceEntryByPath(), destination directory not found.
160 ASSERT_FALSE(get_entry_info_callback_.is_null());
161 get_entry_info_callback_.Run(FILE_ERROR_NOT_FOUND,
162 scoped_ptr<ResourceEntry>());
163 google_apis::test_util::RunBlockingPoolTask();
164
165 // Return result of CreateDirecotry().
166 ASSERT_FALSE(create_directory_callback_.is_null());
167 create_directory_callback_.Run(FILE_ERROR_OK);
168 google_apis::test_util::RunBlockingPoolTask(); 172 google_apis::test_util::RunBlockingPoolTask();
169 173
170 // Check the result. 174 // Check the result.
171 EXPECT_TRUE(temp_dir_.path().IsParent(substituted_path)); 175 EXPECT_TRUE(temp_dir_.path().IsParent(substituted_path));
172 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_)); 176 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_));
173 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_)); 177 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_));
174 } 178 }
175 179
176 TEST_F(DownloadHandlerTest, 180 TEST_F(DownloadHandlerTest,
177 SubstituteDriveDownloadPathCreateDirectoryFailure) { 181 SubstituteDriveDownloadPathCreateDirectoryFailure) {
178 const base::FilePath drive_path = 182 const base::FilePath drive_path =
179 util::GetDriveMountPointPath().AppendASCII("test.dat"); 183 util::GetDriveMountPointPath().AppendASCII("test.dat");
180 184
185 // Test the case that access to the download target directory does not exist,
186 // and creation fails for some reason.
187 test_file_system_.set_download_path_state(PATH_NOT_EXIST_AND_CREATE_FAIL);
188
181 // Call SubstituteDriveDownloadPath() 189 // Call SubstituteDriveDownloadPath()
182 base::FilePath substituted_path; 190 base::FilePath substituted_path;
183 download_handler_->SubstituteDriveDownloadPath( 191 download_handler_->SubstituteDriveDownloadPath(
184 drive_path, 192 drive_path,
185 &download_item_, 193 &download_item_,
186 base::Bind(&CopySubstituteDriveDownloadPathResult, &substituted_path)); 194 google_apis::test_util::CreateCopyResultCallback(&substituted_path));
187 google_apis::test_util::RunBlockingPoolTask();
188
189 // Return result of GetResourceEntryByPath(), destination directory not found.
190 ASSERT_FALSE(get_entry_info_callback_.is_null());
191 get_entry_info_callback_.Run(FILE_ERROR_NOT_FOUND,
192 scoped_ptr<ResourceEntry>());
193 google_apis::test_util::RunBlockingPoolTask();
194
195 // Return result of CreateDirecotry().
196 ASSERT_FALSE(create_directory_callback_.is_null());
197 create_directory_callback_.Run(FILE_ERROR_FAILED);
198 google_apis::test_util::RunBlockingPoolTask(); 195 google_apis::test_util::RunBlockingPoolTask();
199 196
200 // Check the result. 197 // Check the result.
201 EXPECT_TRUE(substituted_path.empty()); 198 EXPECT_TRUE(substituted_path.empty());
202 } 199 }
203 200
204 // content::SavePackage calls SubstituteDriveDownloadPath before creating 201 // content::SavePackage calls SubstituteDriveDownloadPath before creating
205 // DownloadItem. 202 // DownloadItem.
206 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathForSavePackage) { 203 TEST_F(DownloadHandlerTest, SubstituteDriveDownloadPathForSavePackage) {
207 const base::FilePath drive_path = 204 const base::FilePath drive_path =
208 util::GetDriveMountPointPath().AppendASCII("test.dat"); 205 util::GetDriveMountPointPath().AppendASCII("test.dat");
206 test_file_system_.set_download_path_state(PATH_EXISTS);
209 207
210 // Call SubstituteDriveDownloadPath() 208 // Call SubstituteDriveDownloadPath()
211 base::FilePath substituted_path; 209 base::FilePath substituted_path;
212 download_handler_->SubstituteDriveDownloadPath( 210 download_handler_->SubstituteDriveDownloadPath(
213 drive_path, 211 drive_path,
214 NULL, // DownloadItem is not available at this moment. 212 NULL, // DownloadItem is not available at this moment.
215 base::Bind(&CopySubstituteDriveDownloadPathResult, &substituted_path)); 213 google_apis::test_util::CreateCopyResultCallback(&substituted_path));
216 google_apis::test_util::RunBlockingPoolTask();
217
218 // Return result of GetResourceEntryByPath(), destination directory found.
219 scoped_ptr<ResourceEntry> entry(new ResourceEntry);
220 ASSERT_FALSE(get_entry_info_callback_.is_null());
221 get_entry_info_callback_.Run(FILE_ERROR_OK, entry.Pass());
222 google_apis::test_util::RunBlockingPoolTask(); 214 google_apis::test_util::RunBlockingPoolTask();
223 215
224 // Check the result of SubstituteDriveDownloadPath(). 216 // Check the result of SubstituteDriveDownloadPath().
225 EXPECT_TRUE(temp_dir_.path().IsParent(substituted_path)); 217 EXPECT_TRUE(temp_dir_.path().IsParent(substituted_path));
226 218
227 // |download_item_| is not a drive download yet. 219 // |download_item_| is not a drive download yet.
228 EXPECT_FALSE(download_handler_->IsDriveDownload(&download_item_)); 220 EXPECT_FALSE(download_handler_->IsDriveDownload(&download_item_));
229 221
230 // Call SetDownloadParams(). 222 // Call SetDownloadParams().
231 download_handler_->SetDownloadParams(drive_path, &download_item_); 223 download_handler_->SetDownloadParams(drive_path, &download_item_);
232 224
233 // |download_item_| is a drive download now. 225 // |download_item_| is a drive download now.
234 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_)); 226 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_));
235 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_)); 227 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_));
236 } 228 }
237 229
238 TEST_F(DownloadHandlerTest, CheckForFileExistence) { 230 TEST_F(DownloadHandlerTest, CheckForFileExistence) {
239 const base::FilePath drive_path = 231 const base::FilePath drive_path =
240 util::GetDriveMountPointPath().AppendASCII("test.dat"); 232 util::GetDriveMountPointPath().AppendASCII("test.dat");
241 233
242 // Make |download_item_| a drive download. 234 // Make |download_item_| a drive download.
243 download_handler_->SetDownloadParams(drive_path, &download_item_); 235 download_handler_->SetDownloadParams(drive_path, &download_item_);
244 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_)); 236 ASSERT_TRUE(download_handler_->IsDriveDownload(&download_item_));
245 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_)); 237 EXPECT_EQ(drive_path, download_handler_->GetTargetPath(&download_item_));
246 238
239 // Test for the case when the path exists.
240 test_file_system_.set_download_path_state(PATH_EXISTS);
241
247 // Call CheckForFileExistence. 242 // Call CheckForFileExistence.
248 bool file_exists = false; 243 bool file_exists = false;
249 download_handler_->CheckForFileExistence( 244 download_handler_->CheckForFileExistence(
250 &download_item_, 245 &download_item_,
251 base::Bind(&CopyCheckForFileExistenceResult, &file_exists)); 246 google_apis::test_util::CreateCopyResultCallback(&file_exists));
252 google_apis::test_util::RunBlockingPoolTask();
253
254 // Return result of GetResourceEntryByPath(), file exists.
255 {
256 scoped_ptr<ResourceEntry> entry(new ResourceEntry);
257 ASSERT_FALSE(get_entry_info_callback_.is_null());
258 get_entry_info_callback_.Run(FILE_ERROR_OK, entry.Pass());
259 }
260 google_apis::test_util::RunBlockingPoolTask(); 247 google_apis::test_util::RunBlockingPoolTask();
261 248
262 // Check the result. 249 // Check the result.
263 EXPECT_TRUE(file_exists); 250 EXPECT_TRUE(file_exists);
264 251
265 // Reset callback to call CheckForFileExistence again. 252 // Test for the case when the path does not exist.
266 get_entry_info_callback_.Reset(); 253 test_file_system_.set_download_path_state(PATH_NOT_EXIST);
267 254
268 // Call CheckForFileExistence again. 255 // Call CheckForFileExistence again.
269 download_handler_->CheckForFileExistence( 256 download_handler_->CheckForFileExistence(
270 &download_item_, 257 &download_item_,
271 base::Bind(&CopyCheckForFileExistenceResult, &file_exists)); 258 google_apis::test_util::CreateCopyResultCallback(&file_exists));
272 google_apis::test_util::RunBlockingPoolTask();
273
274 // Return result of GetResourceEntryByPath(), file does not exist.
275 ASSERT_FALSE(get_entry_info_callback_.is_null());
276 get_entry_info_callback_.Run(FILE_ERROR_NOT_FOUND,
277 scoped_ptr<ResourceEntry>());
278 google_apis::test_util::RunBlockingPoolTask(); 259 google_apis::test_util::RunBlockingPoolTask();
279 260
280 // Check the result. 261 // Check the result.
281 EXPECT_FALSE(file_exists); 262 EXPECT_FALSE(file_exists);
282 } 263 }
283 264
284 } // namespace drive 265 } // namespace drive
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/drive/mock_file_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698