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

Unified Diff: chrome/browser/chromeos/gdata/gdata_files.cc

Issue 10828083: gdata: Add GDataDirectoryService::AddEntryToDirectory() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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: chrome/browser/chromeos/gdata/gdata_files.cc
diff --git a/chrome/browser/chromeos/gdata/gdata_files.cc b/chrome/browser/chromeos/gdata/gdata_files.cc
index beab18f18a6d4fd111ee2f1d1e26d65236ed3d5f..4e5ffc54afc30827ec1340f203b365de9b65d1ec 100644
--- a/chrome/browser/chromeos/gdata/gdata_files.cc
+++ b/chrome/browser/chromeos/gdata/gdata_files.cc
@@ -6,9 +6,11 @@
#include <vector>
+#include "base/message_loop_proxy.h"
#include "base/platform_file.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
+#include "base/tracked_objects.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/chromeos/gdata/gdata.pb.h"
#include "chrome/browser/chromeos/gdata/gdata_util.h"
@@ -27,19 +29,6 @@ std::string ExtractResourceId(const GURL& url) {
net::UnescapeRule::URL_SPECIAL_CHARS);
}
-// Replaces file entry |old_entry| with its fresh value |fresh_file|.
-void RefreshFileInternal(scoped_ptr<GDataFile> fresh_file,
- GDataEntry* old_entry) {
- GDataDirectory* entry_parent = old_entry ? old_entry->parent() : NULL;
- if (entry_parent) {
- DCHECK_EQ(fresh_file->resource_id(), old_entry->resource_id());
- DCHECK(old_entry->AsGDataFile());
-
- entry_parent->RemoveEntry(old_entry);
- entry_parent->AddEntry(fresh_file.release());
- }
-}
-
// Returns true if |proto| is a valid proto as the root directory.
// Used to reject incompatible proto.
bool IsValidRootDirectoryProto(const GDataDirectoryProto& proto) {
@@ -456,6 +445,25 @@ GDataDirectoryService::~GDataDirectoryService() {
resource_map_.clear();
}
+void GDataDirectoryService::AddEntryAt(const FilePath& path,
+ GDataEntry* entry,
+ const FileOperationCallback& callback) {
+ GDataEntry* destination = FindEntryByPathSync(path);
+ GDataFileError error = GDATA_FILE_ERROR_FAILED;
+ if (!destination) {
+ error = GDATA_FILE_ERROR_NOT_FOUND;
+ } else if (!destination->AsGDataDirectory()) {
+ error = GDATA_FILE_ERROR_NOT_A_DIRECTORY;
+ } else {
+ destination->AsGDataDirectory()->AddEntry(entry);
+ error = GDATA_FILE_OK;
+ }
+ if (!callback.is_null()) {
+ base::MessageLoopProxy::current()->PostTask(
+ FROM_HERE, base::Bind(callback, error));
+ }
+}
+
void GDataDirectoryService::AddEntryToResourceMap(GDataEntry* entry) {
// GDataFileSystem has already locked.
DVLOG(1) << "AddEntryToResourceMap " << entry->resource_id();
@@ -525,8 +533,24 @@ void GDataDirectoryService::RefreshFile(scoped_ptr<GDataFile> fresh_file) {
// Need to get a reference here because Passed() could get evaluated first.
const std::string& resource_id = fresh_file->resource_id();
- GetEntryByResourceIdAsync(resource_id,
- base::Bind(&RefreshFileInternal, base::Passed(&fresh_file)));
+ GetEntryByResourceIdAsync(
+ resource_id,
+ base::Bind(&GDataDirectoryService::RefreshFileInternal,
+ base::Passed(&fresh_file)));
+}
+
+// static
+void GDataDirectoryService::RefreshFileInternal(
+ scoped_ptr<GDataFile> fresh_file,
+ GDataEntry* old_entry) {
+ GDataDirectory* entry_parent = old_entry ? old_entry->parent() : NULL;
+ if (entry_parent) {
+ DCHECK_EQ(fresh_file->resource_id(), old_entry->resource_id());
+ DCHECK(old_entry->AsGDataFile());
+
+ entry_parent->RemoveEntry(old_entry);
+ entry_parent->AddEntry(fresh_file.release());
+ }
}
// Convert to/from proto.

Powered by Google App Engine
This is Rietveld 408576698