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

Unified Diff: chrome/browser/chromeos/arc/fileapi/arc_documents_provider_backend_delegate.cc

Issue 2580713004: mediaview: Implement ArcDocumentsProviderBackendDelegate. (Closed)
Patch Set: ThreadChecker failure fix. Created 4 years 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/arc/fileapi/arc_documents_provider_backend_delegate.cc
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_backend_delegate.cc b/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_backend_delegate.cc
index 6572b4c6050203801703db1a3bd0d5399d0cbcd8..3b05c55f95b04157c95fb66e3530d2b7f81effe6 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_backend_delegate.cc
+++ b/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_backend_delegate.cc
@@ -7,6 +7,10 @@
#include <utility>
#include "base/logging.h"
+#include "base/memory/ptr_util.h"
+#include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util.h"
+#include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_file_stream_reader.h"
+#include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.h"
#include "content/public/browser/browser_thread.h"
#include "storage/browser/fileapi/file_stream_reader.h"
#include "storage/browser/fileapi/file_stream_writer.h"
@@ -17,7 +21,7 @@ using content::BrowserThread;
namespace arc {
ArcDocumentsProviderBackendDelegate::ArcDocumentsProviderBackendDelegate()
- : async_file_util_(&roots_) {}
+ : async_file_util_(&roots_), weak_ptr_factory_(this) {}
ArcDocumentsProviderBackendDelegate::~ArcDocumentsProviderBackendDelegate() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -37,8 +41,21 @@ ArcDocumentsProviderBackendDelegate::CreateFileStreamReader(
const base::Time& expected_modification_time,
storage::FileSystemContext* context) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- NOTIMPLEMENTED(); // TODO(crbug.com/671511): Implement this function.
- return nullptr;
+
+ std::unique_ptr<ArcDocumentsProviderFileStreamReader> reader =
hidehiko 2016/12/18 14:29:18 Optional: I'd recommend to use "auto", because of
Shuhei Takahashi 2016/12/19 03:05:56 Sure, changed to use auto.
+ base::MakeUnique<ArcDocumentsProviderFileStreamReader>(offset);
+
+ base::FilePath path;
+ ArcDocumentsProviderRoot* root = roots_.ParseAndLookup(url, &path);
+ if (!root) {
+ reader->SetContentUrl(GURL());
+ return std::move(reader);
Luis Héctor Chávez 2016/12/17 00:05:26 Huh, why did the pessimizing move warning not trig
Shuhei Takahashi 2016/12/17 00:23:09 I'm not sure why, but returning std::unique_ptr<De
hidehiko 2016/12/18 14:29:18 IIUC, it's C++11 spec about copy elision. cf) htt
Shuhei Takahashi 2016/12/19 03:05:55 I know that spec but I was wondering why gcc 5.x a
+ }
+
+ root->ResolveToContentUrl(
+ path, base::Bind(&ArcDocumentsProviderFileStreamReader::SetContentUrl,
+ reader->GetWeakPtr()));
+ return std::move(reader);
}
std::unique_ptr<storage::FileStreamWriter>
@@ -62,8 +79,26 @@ void ArcDocumentsProviderBackendDelegate::GetRedirectURLForContents(
const storage::FileSystemURL& url,
const storage::URLCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- NOTIMPLEMENTED(); // TODO(crbug.com/671511): Implement this function.
- callback.Run(GURL());
+
+ base::FilePath path;
+ ArcDocumentsProviderRoot* root = roots_.ParseAndLookup(url, &path);
+ if (!root) {
+ callback.Run(GURL());
+ return;
+ }
+
+ root->ResolveToContentUrl(
+ path, base::Bind(&ArcDocumentsProviderBackendDelegate::
+ GetRedirectURLForContentsWithContentUrl,
+ weak_ptr_factory_.GetWeakPtr(), callback));
+}
+
+void ArcDocumentsProviderBackendDelegate::
+ GetRedirectURLForContentsWithContentUrl(
+ const storage::URLCallback& callback,
+ const GURL& content_url) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ callback.Run(ArcUrlToExternalFileUrl(content_url));
}
} // namespace arc

Powered by Google App Engine
This is Rietveld 408576698