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

Side by Side Diff: chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.cc

Issue 2867013002: Use OnceCallback on Mojo interfaces in //chrome/common/extensions (Closed)
Patch Set: rebase Created 3 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 unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/media_galleries/fileapi/safe_media_metadata_parser.h ('k') | chrome/common/extensions/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698