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

Unified Diff: webkit/blob/scoped_file.h

Issue 15746017: Move webkit/blob to new locations. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 7 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
« no previous file with comments | « webkit/blob/mock_blob_url_request_context.cc ('k') | webkit/blob/scoped_file.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/blob/scoped_file.h
===================================================================
--- webkit/blob/scoped_file.h (revision 202679)
+++ webkit/blob/scoped_file.h (working copy)
@@ -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 WEBKIT_BLOB_SCOPED_FILE_H_
-#define WEBKIT_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 "webkit/storage/webkit_storage_export.h"
-
-namespace base {
-class TaskRunner;
-}
-
-namespace webkit_blob {
-
-// 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 WEBKIT_STORAGE_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,
- 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 webkit_blob
-
-#endif // WEBKIT_BLOB_SCOPED_FILE_H_
« no previous file with comments | « webkit/blob/mock_blob_url_request_context.cc ('k') | webkit/blob/scoped_file.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698