Index: ui/base/resource/data_pack.h |
diff --git a/ui/base/resource/data_pack.h b/ui/base/resource/data_pack.h |
index 26b94c2b4b7c98670a8eb418f9c927a3c21f84bc..8bb5e5c3c8e36dea502af46e8a7704ee485892c9 100644 |
--- a/ui/base/resource/data_pack.h |
+++ b/ui/base/resource/data_pack.h |
@@ -46,6 +46,10 @@ class UI_DATA_PACK_EXPORT DataPack : public ResourceHandle { |
bool LoadFromFileRegion(base::File file, |
const base::MemoryMappedFile::Region& region); |
+ // Loads a pack file from |buffer|, returning false on error. |
+ // Data is not copied, |buffer| should stay alive during |DataPack| lifetime. |
+ bool LoadFromBuffer(base::StringPiece buffer); |
+ |
// Writes a pack file containing |resources| to |path|. If there are any |
// text resources to be written, their encoding must already agree to the |
// |textEncodingType| specified. If no text resources are present, please |
@@ -70,11 +74,15 @@ class UI_DATA_PACK_EXPORT DataPack : public ResourceHandle { |
#endif |
private: |
- // Does the actual loading of a pack file. Called by Load and LoadFromFile. |
- bool LoadImpl(); |
+ class DataSource; |
+ class BufferDataSource; |
+ class MemoryMappedDataSource; |
+ |
+ // Does the actual loading of a pack file. |
+ // Called by Load and LoadFromFile and LoadFromBuffer. |
+ bool LoadImpl(std::unique_ptr<DataSource> data_source); |
- // The memory-mapped data. |
- std::unique_ptr<base::MemoryMappedFile> mmap_; |
+ std::unique_ptr<DataSource> data_source_; |
// Number of resources in the data. |
size_t resource_count_; |