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

Unified Diff: webkit/fileapi/path_obfuscator.h

Issue 6286038: Add initial code to do filename munging in the FileSystem.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: webkit/fileapi/path_obfuscator.h
===================================================================
--- webkit/fileapi/path_obfuscator.h (revision 0)
+++ webkit/fileapi/path_obfuscator.h (revision 0)
@@ -0,0 +1,67 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_FILEAPI_PATH_OBFUSCATOR_H
+#define WEBKIT_FILEAPI_PATH_OBFUSCATOR_H
+
+#include "base/file_path.h"
+#include "base/platform_file.h"
+#include "webkit/fileapi/obfuscated_name_map.h"
+
+using base::PlatformFileError;
+
+namespace obfuscated_file_util {
+
+// This class is for use on the file thread only. TODO(ericu): Add CHECKs for
+// this.
+// The lifetime of the PathObfuscator must be limited such that any operation
+// that could move the directory to which it refers happens outside that
+// lifetime--otherwise you might be looking up keys in the wrong dictionary.
+// Also, you shouldn't have more than one of these for the same directory at the
+// same time, or they could get out of sync.
+// You can reuse one of these for multiple operations as long as you manage it
+// carefully: RollBack or Commit between each operation, and don't let it get
+// out of sync.
+class PathObfuscator {
+ public:
+ PathObfuscator(const FilePath& root_path);
+ ~PathObfuscator() {
+ RollBack();
+ }
+
+ // As long as there's no salting on the hash, this can be static.
+ FilePath ObfuscatedPathFromClearPath(const FilePath& virtual_path);
+
+ PlatformFileError ClearPathFromObfuscatedPath(
+ const FilePath& obfuscated_path,
+ FilePath* clear_path);
+
+ PlatformFileError PrepareAdd(
+ const FilePath& clear_path,
+ const FilePath& obfuscated_path);
+
+ PlatformFileError PrepareDelete(
+ const FilePath& clear_path,
+ const FilePath& obfuscated_path);
+
+ PlatformFileError PrepareMove(
+ const FilePath& old_clear_path,
+ const FilePath& old_obfuscated_path,
+ const FilePath& new_clear_path,
+ const FilePath& new_obfuscated_path);
+
+ PlatformFileError Commit();
+
+ // Harmless if there no operation in progress.
+ void RollBack();
+
+ private:
+ ObfuscatedNameMap from_map_, to_map_;
michaeln 2011/02/11 00:03:34 we usually declare one data member per line, but i
ericu 2011/02/11 01:57:47 An easy fix, anyway.
+ bool from_map_valid_, to_map_valid_;
+ FilePath root_path_;
+};
+
+} // namespace obfuscated_file_util
+
+#endif // WEBKIT_FILEAPI_PATH_OBFUSCATOR_H
Property changes on: webkit\fileapi\path_obfuscator.h
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698