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

Unified Diff: storage/common/blob/scoped_file.h

Issue 810403004: [Storage] Blob Storage Refactoring pt 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed copyright Created 5 years, 11 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: storage/common/blob/scoped_file.h
diff --git a/storage/common/blob/scoped_file.h b/storage/common/blob/scoped_file.h
deleted file mode 100644
index 4a51a465ce3d81cf53f7e412d3e00540cdcb425a..0000000000000000000000000000000000000000
--- a/storage/common/blob/scoped_file.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2013 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 STORAGE_COMMON_BLOB_SCOPED_FILE_H_
-#define STORAGE_COMMON_BLOB_SCOPED_FILE_H_
-
-#include <map>
-
-#include "base/callback_forward.h"
-#include "base/files/file_path.h"
-#include "base/memory/ref_counted.h"
-#include "base/move.h"
-#include "storage/common/storage_common_export.h"
-
-namespace base {
-class TaskRunner;
-}
-
-namespace storage {
-
-// A scoped reference for a FilePath that can optionally schedule the file
-// to be deleted and/or to notify a consumer when it is going to be scoped out.
-// This class supports move semantics, i.e. consumers can call Pass() to
-// pass the ownership of ScopedFile.
-//
-// TODO(kinuko): Probably this can be moved under base or somewhere more
-// common place.
-class STORAGE_COMMON_EXPORT ScopedFile {
- // To support destructive assignment from an l-value assignment.
- // This provides Pass() method which creates an r-value for the current
- // instance. (See base/move.h for details)
- MOVE_ONLY_TYPE_FOR_CPP_03(ScopedFile, RValue)
-
- public:
- typedef base::Callback<void(const base::FilePath&)> ScopeOutCallback;
- typedef std::pair<ScopeOutCallback, scoped_refptr<base::TaskRunner> >
- ScopeOutCallbackPair;
- typedef std::vector<ScopeOutCallbackPair> ScopeOutCallbackList;
-
- enum ScopeOutPolicy {
- DELETE_ON_SCOPE_OUT,
- DONT_DELETE_ON_SCOPE_OUT,
- };
-
- ScopedFile();
-
- // |file_task_runner| is used to schedule a file deletion if |policy|
- // is DELETE_ON_SCOPE_OUT.
- ScopedFile(const base::FilePath& path,
- ScopeOutPolicy policy,
- const scoped_refptr<base::TaskRunner>& file_task_runner);
-
- // Move constructor and operator. The data of r-value will be transfered
- // in a destructive way. (See base/move.h)
- ScopedFile(RValue other);
- ScopedFile& operator=(RValue rhs) {
- MoveFrom(*rhs.object);
- return *this;
- }
-
- ~ScopedFile();
-
- // The |callback| is fired on |callback_runner| when the final reference
- // of this instance is released.
- // If release policy is DELETE_ON_SCOPE_OUT the
- // callback task(s) is/are posted before the deletion is scheduled.
- void AddScopeOutCallback(const ScopeOutCallback& callback,
- base::TaskRunner* callback_runner);
-
- // The full file path.
- const base::FilePath& path() const { return path_; }
-
- // Releases the file. After calling this, this instance will hold
- // an empty file path and scoping out won't make any file deletion
- // or callback dispatch. (If an owned pointer is attached to any of
- // callbacks the pointer will be deleted.)
- base::FilePath Release();
-
- void Reset();
-
- private:
- // Performs destructive move from |other| to this.
- void MoveFrom(ScopedFile& other);
-
- base::FilePath path_;
- ScopeOutPolicy scope_out_policy_;
- scoped_refptr<base::TaskRunner> file_task_runner_;
- ScopeOutCallbackList scope_out_callbacks_;
-};
-
-} // namespace storage
-
-#endif // STORAGE_COMMON_BLOB_SCOPED_FILE_H_

Powered by Google App Engine
This is Rietveld 408576698