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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_file_system.cc

Issue 10072003: gdata: Change permissions of cache persistent directory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 | no next file » | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/gdata/gdata_file_system.h" 5 #include "chrome/browser/chromeos/gdata/gdata_file_system.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <sys/stat.h>
8 9
9 #include <utility> 10 #include <utility>
10 11
11 #include "base/bind.h" 12 #include "base/bind.h"
12 #include "base/chromeos/chromeos_version.h" 13 #include "base/chromeos/chromeos_version.h"
13 #include "base/eintr_wrapper.h" 14 #include "base/eintr_wrapper.h"
14 #include "base/file_util.h" 15 #include "base/file_util.h"
15 #include "base/json/json_file_value_serializer.h" 16 #include "base/json/json_file_value_serializer.h"
16 #include "base/json/json_reader.h" 17 #include "base/json/json_reader.h"
17 #include "base/json/json_writer.h" 18 #include "base/json/json_writer.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 << ": \"" << strerror(errno) 198 << ": \"" << strerror(errno)
198 << "\", " << error; 199 << "\", " << error;
199 } else { 200 } else {
200 DVLOG(1) << "Created dir " << paths_to_create[i].value(); 201 DVLOG(1) << "Created dir " << paths_to_create[i].value();
201 } 202 }
202 } 203 }
203 204
204 return error; 205 return error;
205 } 206 }
206 207
208 // Changes the permissions of |file_path| to |permissions|.
209 // Returns the platform error code of the operation.
210 base::PlatformFileError ChangeFilePermissions(const FilePath& file_path,
211 mode_t permissions) {
212 base::PlatformFileError error = base::PLATFORM_FILE_OK;
213
214 if (HANDLE_EINTR(chmod(file_path.value().c_str(), permissions)) != 0) {
215 error = SystemToPlatformError(errno);
216 PLOG(ERROR) << "Error changing permissions of " << file_path.value();
217 } else {
218 DVLOG(1) << "Changed permissions of " << file_path.value();
219 }
220
221 return error;
222 }
223
207 // Modifies cache state of file on IO thread pool, which involves: 224 // Modifies cache state of file on IO thread pool, which involves:
208 // - moving or copying file (per |file_operation_type|) from |source_path| to 225 // - moving or copying file (per |file_operation_type|) from |source_path| to
209 // |dest_path| if they're different 226 // |dest_path| if they're different
210 // - deleting symlink if |symlink_path| is not empty 227 // - deleting symlink if |symlink_path| is not empty
211 // - creating symlink if |symlink_path| is not empty and |create_symlink| is 228 // - creating symlink if |symlink_path| is not empty and |create_symlink| is
212 // true. 229 // true.
213 base::PlatformFileError ModifyCacheState( 230 base::PlatformFileError ModifyCacheState(
214 const FilePath& source_path, 231 const FilePath& source_path,
215 const FilePath& dest_path, 232 const FilePath& dest_path,
216 GDataFileSystem::FileOperationType file_operation_type, 233 GDataFileSystem::FileOperationType file_operation_type,
(...skipping 3025 matching lines...) Expand 10 before | Expand all | Expand 10 after
3242 void GDataFileSystem::InitializeCacheIfNecessary() { 3259 void GDataFileSystem::InitializeCacheIfNecessary() {
3243 // Lock to access cache_initialization_started_; 3260 // Lock to access cache_initialization_started_;
3244 base::AutoLock lock(lock_); 3261 base::AutoLock lock(lock_);
3245 UnsafeInitializeCacheIfNecessary(); 3262 UnsafeInitializeCacheIfNecessary();
3246 } 3263 }
3247 3264
3248 //========= GDataFileSystem: Cache tasks that ran on io thread pool ============ 3265 //========= GDataFileSystem: Cache tasks that ran on io thread pool ============
3249 3266
3250 void GDataFileSystem::InitializeCacheOnIOThreadPool() { 3267 void GDataFileSystem::InitializeCacheOnIOThreadPool() {
3251 base::PlatformFileError error = CreateCacheDirectories(cache_paths_); 3268 base::PlatformFileError error = CreateCacheDirectories(cache_paths_);
3252
3253 if (error != base::PLATFORM_FILE_OK) 3269 if (error != base::PLATFORM_FILE_OK)
3254 return; 3270 return;
3255 3271
3272 // Change permissions of cache persistent directory to u+rwx,og+x in order to
3273 // allow archive files in that directory to be mounted by cros-disks.
3274 error = ChangeFilePermissions(
3275 cache_paths_[GDataRootDirectory::CACHE_TYPE_PERSISTENT],
3276 S_IRWXU | S_IXGRP | S_IXOTH);
3277 if (error != base::PLATFORM_FILE_OK)
3278 return;
3279
3256 // Scan cache persistent and tmp directories to enumerate all files and create 3280 // Scan cache persistent and tmp directories to enumerate all files and create
3257 // corresponding entries for cache map. 3281 // corresponding entries for cache map.
3258 GDataRootDirectory::CacheMap cache_map; 3282 GDataRootDirectory::CacheMap cache_map;
3259 ScanCacheDirectory(GDataRootDirectory::CACHE_TYPE_PERSISTENT, &cache_map); 3283 ScanCacheDirectory(GDataRootDirectory::CACHE_TYPE_PERSISTENT, &cache_map);
3260 ScanCacheDirectory(GDataRootDirectory::CACHE_TYPE_TMP, &cache_map); 3284 ScanCacheDirectory(GDataRootDirectory::CACHE_TYPE_TMP, &cache_map);
3261 3285
3262 // Then scan pinned and outgoing directories to update existing entries in 3286 // Then scan pinned and outgoing directories to update existing entries in
3263 // cache map, or create new ones for pinned symlinks to /dev/null which target 3287 // cache map, or create new ones for pinned symlinks to /dev/null which target
3264 // nothing. 3288 // nothing.
3265 // Pinned and outgoing directories should be scanned after the persistent 3289 // Pinned and outgoing directories should be scanned after the persistent
(...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after
4140 pref_registrar_->Init(profile_->GetPrefs()); 4164 pref_registrar_->Init(profile_->GetPrefs());
4141 pref_registrar_->Add(prefs::kDisableGDataHostedFiles, this); 4165 pref_registrar_->Add(prefs::kDisableGDataHostedFiles, this);
4142 } 4166 }
4143 4167
4144 void SetFreeDiskSpaceGetterForTesting(FreeDiskSpaceGetterInterface* getter) { 4168 void SetFreeDiskSpaceGetterForTesting(FreeDiskSpaceGetterInterface* getter) {
4145 delete global_free_disk_getter_for_testing; // Safe to delete NULL; 4169 delete global_free_disk_getter_for_testing; // Safe to delete NULL;
4146 global_free_disk_getter_for_testing = getter; 4170 global_free_disk_getter_for_testing = getter;
4147 } 4171 }
4148 4172
4149 } // namespace gdata 4173 } // namespace gdata
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698