OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.h" | 5 #include "chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "chrome/browser/extensions/blob_reader.h" | 10 #include "chrome/browser/extensions/blob_reader.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 extensions::mojom::MediaDataSourcePtr* interface) | 22 extensions::mojom::MediaDataSourcePtr* interface) |
23 : binding_(this, interface), safe_media_metadata_parser_(owner) { | 23 : binding_(this, interface), safe_media_metadata_parser_(owner) { |
24 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 24 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
25 } | 25 } |
26 | 26 |
27 ~MediaDataSourceImpl() override = default; | 27 ~MediaDataSourceImpl() override = default; |
28 | 28 |
29 private: | 29 private: |
30 void ReadBlob(int64_t position, | 30 void ReadBlob(int64_t position, |
31 int64_t length, | 31 int64_t length, |
32 const ReadBlobCallback& callback) override { | 32 ReadBlobCallback callback) override { |
33 safe_media_metadata_parser_->StartBlobRequest(callback, position, length); | 33 safe_media_metadata_parser_->StartBlobRequest(std::move(callback), position, |
| 34 length); |
34 } | 35 } |
35 | 36 |
36 mojo::Binding<extensions::mojom::MediaDataSource> binding_; | 37 mojo::Binding<extensions::mojom::MediaDataSource> binding_; |
37 // |safe_media_metadata_parser_| owns |this|. | 38 // |safe_media_metadata_parser_| owns |this|. |
38 SafeMediaMetadataParser* const safe_media_metadata_parser_; | 39 SafeMediaMetadataParser* const safe_media_metadata_parser_; |
39 | 40 |
40 DISALLOW_COPY_AND_ASSIGN(MediaDataSourceImpl); | 41 DISALLOW_COPY_AND_ASSIGN(MediaDataSourceImpl); |
41 }; | 42 }; |
42 | 43 |
43 SafeMediaMetadataParser::SafeMediaMetadataParser(Profile* profile, | 44 SafeMediaMetadataParser::SafeMediaMetadataParser(Profile* profile, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 base::MakeUnique<std::vector<metadata::AttachedImage>>(attached_images); | 120 base::MakeUnique<std::vector<metadata::AttachedImage>>(attached_images); |
120 | 121 |
121 content::BrowserThread::PostTask( | 122 content::BrowserThread::PostTask( |
122 content::BrowserThread::UI, FROM_HERE, | 123 content::BrowserThread::UI, FROM_HERE, |
123 base::BindOnce(callback_, parse_success, | 124 base::BindOnce(callback_, parse_success, |
124 base::Passed(&metadata_dictionary), | 125 base::Passed(&metadata_dictionary), |
125 base::Passed(&attached_images_copy))); | 126 base::Passed(&attached_images_copy))); |
126 } | 127 } |
127 | 128 |
128 void SafeMediaMetadataParser::StartBlobRequest( | 129 void SafeMediaMetadataParser::StartBlobRequest( |
129 const extensions::mojom::MediaDataSource::ReadBlobCallback& callback, | 130 extensions::mojom::MediaDataSource::ReadBlobCallback callback, |
130 int64_t position, | 131 int64_t position, |
131 int64_t length) { | 132 int64_t length) { |
132 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 133 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
133 | 134 |
134 content::BrowserThread::PostTask( | 135 content::BrowserThread::PostTask( |
135 content::BrowserThread::UI, FROM_HERE, | 136 content::BrowserThread::UI, FROM_HERE, |
136 base::BindOnce(&SafeMediaMetadataParser::StartBlobReaderOnUIThread, this, | 137 base::BindOnce(&SafeMediaMetadataParser::StartBlobReaderOnUIThread, this, |
137 callback, position, length)); | 138 std::move(callback), position, length)); |
138 } | 139 } |
139 | 140 |
140 void SafeMediaMetadataParser::StartBlobReaderOnUIThread( | 141 void SafeMediaMetadataParser::StartBlobReaderOnUIThread( |
141 const extensions::mojom::MediaDataSource::ReadBlobCallback& callback, | 142 extensions::mojom::MediaDataSource::ReadBlobCallback callback, |
142 int64_t position, | 143 int64_t position, |
143 int64_t length) { | 144 int64_t length) { |
144 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 145 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
145 | 146 |
146 BlobReader* reader = new BlobReader( // BlobReader is self-deleting. | 147 BlobReader* reader = new BlobReader( // BlobReader is self-deleting. |
147 profile_, blob_uuid_, | 148 profile_, blob_uuid_, |
148 base::Bind(&SafeMediaMetadataParser::BlobReaderDoneOnUIThread, this, | 149 base::Bind(&SafeMediaMetadataParser::BlobReaderDoneOnUIThread, this, |
149 callback)); | 150 base::Passed(&callback))); |
150 reader->SetByteRange(position, length); | 151 reader->SetByteRange(position, length); |
151 reader->Start(); | 152 reader->Start(); |
152 } | 153 } |
153 | 154 |
154 void SafeMediaMetadataParser::BlobReaderDoneOnUIThread( | 155 void SafeMediaMetadataParser::BlobReaderDoneOnUIThread( |
155 const extensions::mojom::MediaDataSource::ReadBlobCallback& callback, | 156 extensions::mojom::MediaDataSource::ReadBlobCallback callback, |
156 std::unique_ptr<std::string> data, | 157 std::unique_ptr<std::string> data, |
157 int64_t /* blob_total_size */) { | 158 int64_t /* blob_total_size */) { |
158 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 159 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
159 | 160 |
160 content::BrowserThread::PostTask( | 161 content::BrowserThread::PostTask( |
161 content::BrowserThread::IO, FROM_HERE, | 162 content::BrowserThread::IO, FROM_HERE, |
162 base::BindOnce(&SafeMediaMetadataParser::FinishBlobRequest, this, | 163 base::BindOnce(&SafeMediaMetadataParser::FinishBlobRequest, this, |
163 callback, base::Passed(std::move(data)))); | 164 std::move(callback), std::move(data))); |
164 } | 165 } |
165 | 166 |
166 void SafeMediaMetadataParser::FinishBlobRequest( | 167 void SafeMediaMetadataParser::FinishBlobRequest( |
167 const extensions::mojom::MediaDataSource::ReadBlobCallback& callback, | 168 extensions::mojom::MediaDataSource::ReadBlobCallback callback, |
168 std::unique_ptr<std::string> data) { | 169 std::unique_ptr<std::string> data) { |
169 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 170 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
170 | 171 |
171 if (utility_process_mojo_client_) | 172 if (utility_process_mojo_client_) |
172 callback.Run(std::vector<uint8_t>(data->begin(), data->end())); | 173 std::move(callback).Run(std::vector<uint8_t>(data->begin(), data->end())); |
173 } | 174 } |
174 | 175 |
175 } // namespace metadata | 176 } // namespace metadata |
OLD | NEW |