OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_map.h" |
| 6 |
| 7 #include "base/memory/ptr_util.h" |
| 8 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.h" |
| 9 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_util.h" |
| 10 |
| 11 namespace arc { |
| 12 |
| 13 namespace { |
| 14 |
| 15 struct DocumentsProviderSpec { |
| 16 const char* authority; |
| 17 const char* root_document_id; |
| 18 }; |
| 19 |
| 20 // List of allowed documents providers for production. |
| 21 constexpr DocumentsProviderSpec kDocumentsProviderWhitelist[] = { |
| 22 {"com.android.providers.media.documents", "images_root"}, |
| 23 {"com.android.providers.media.documents", "videos_root"}, |
| 24 {"com.android.providers.media.documents", "audio_root"}, |
| 25 }; |
| 26 |
| 27 } // namespace |
| 28 |
| 29 ArcDocumentsProviderRootMap::ArcDocumentsProviderRootMap() { |
| 30 for (auto spec : kDocumentsProviderWhitelist) { |
| 31 map_[Key(spec.authority, spec.root_document_id)] = |
| 32 base::MakeUnique<ArcDocumentsProviderRoot>(spec.authority, |
| 33 spec.root_document_id); |
| 34 } |
| 35 } |
| 36 |
| 37 ArcDocumentsProviderRootMap::~ArcDocumentsProviderRootMap() = default; |
| 38 |
| 39 ArcDocumentsProviderRoot* ArcDocumentsProviderRootMap::ParseAndLookup( |
| 40 const storage::FileSystemURL& url, |
| 41 base::FilePath* path) const { |
| 42 std::string authority; |
| 43 std::string root_document_id; |
| 44 base::FilePath tmp_path; |
| 45 if (!ParseDocumentsProviderUrl(url, &authority, &root_document_id, &tmp_path)) |
| 46 return nullptr; |
| 47 auto iter = map_.find(Key(authority, root_document_id)); |
| 48 if (iter == map_.end()) |
| 49 return nullptr; |
| 50 *path = tmp_path; |
| 51 return iter->second.get(); |
| 52 } |
| 53 |
| 54 } // namespace arc |
OLD | NEW |