OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 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 "content/browser/media/capture/image_capture_impl.h" | 5 #include "content/browser/media/capture/image_capture_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
10 #include "content/browser/browser_main_loop.h" | 10 #include "content/browser/browser_main_loop.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
44 } | 44 } |
45 | 45 |
46 void RunFailedSetOptionsCallback( | 46 void RunFailedSetOptionsCallback( |
47 const ImageCaptureImpl::SetOptionsCallback& cb) { | 47 const ImageCaptureImpl::SetOptionsCallback& cb) { |
48 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 48 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
49 cb.Run(false); | 49 cb.Run(false); |
50 } | 50 } |
51 | 51 |
52 void RunTakePhotoCallbackOnUIThread( | 52 void RunTakePhotoCallbackOnUIThread( |
53 const ImageCaptureImpl::TakePhotoCallback& callback, | 53 const ImageCaptureImpl::TakePhotoCallback& callback, |
54 mojo::String mime_type, | 54 const std::string& mime_type, |
55 mojo::Array<uint8_t> data) { | 55 const std::vector<uint8_t>& data) { |
56 BrowserThread::PostTask( | 56 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
57 BrowserThread::UI, FROM_HERE, | 57 base::Bind(callback, mime_type, data)); |
Wez
2016/07/20 18:52:07
|data| was previously move()'d, which was presumab
mcasas
2016/07/20 22:57:01
It's complicated due to the automatic generation
o
yzshen1
2016/07/20 23:05:13
I don't know whether it is necessary, but if you w
Wez
2016/07/20 23:19:54
I mentioned this because |data| seems like it's so
yzshen1
2016/07/20 23:27:36
Agreed. Copy seems sad here. mcasas@ mentioned tha
| |
58 base::Bind(callback, mime_type, base::Passed(std::move(data)))); | |
59 } | 58 } |
60 | 59 |
61 void RunFailedTakePhotoCallback(const ImageCaptureImpl::TakePhotoCallback& cb) { | 60 void RunFailedTakePhotoCallback(const ImageCaptureImpl::TakePhotoCallback& cb) { |
62 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 61 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
63 cb.Run("", mojo::Array<uint8_t>()); | 62 cb.Run("", std::vector<uint8_t>()); |
64 } | 63 } |
65 | 64 |
66 void GetCapabilitiesOnIOThread( | 65 void GetCapabilitiesOnIOThread( |
67 const mojo::String& source_id, | 66 const std::string& source_id, |
68 MediaStreamManager* media_stream_manager, | 67 MediaStreamManager* media_stream_manager, |
69 media::ScopedResultCallback<ImageCaptureImpl::GetCapabilitiesCallback> | 68 media::ScopedResultCallback<ImageCaptureImpl::GetCapabilitiesCallback> |
70 callback) { | 69 callback) { |
71 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 70 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
72 | 71 |
73 const int session_id = | 72 const int session_id = |
74 media_stream_manager->VideoDeviceIdToSessionId(source_id); | 73 media_stream_manager->VideoDeviceIdToSessionId(source_id); |
75 | 74 |
76 if (session_id == StreamDeviceInfo::kNoId) | 75 if (session_id == StreamDeviceInfo::kNoId) |
77 return; | 76 return; |
78 media_stream_manager->video_capture_manager()->GetPhotoCapabilities( | 77 media_stream_manager->video_capture_manager()->GetPhotoCapabilities( |
79 session_id, std::move(callback)); | 78 session_id, std::move(callback)); |
80 } | 79 } |
81 | 80 |
82 void SetOptionsOnIOThread( | 81 void SetOptionsOnIOThread( |
83 const mojo::String& source_id, | 82 const std::string& source_id, |
84 MediaStreamManager* media_stream_manager, | 83 MediaStreamManager* media_stream_manager, |
85 media::mojom::PhotoSettingsPtr settings, | 84 media::mojom::PhotoSettingsPtr settings, |
86 media::ScopedResultCallback<ImageCaptureImpl::SetOptionsCallback> | 85 media::ScopedResultCallback<ImageCaptureImpl::SetOptionsCallback> |
87 callback) { | 86 callback) { |
88 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 87 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
89 | 88 |
90 const int session_id = | 89 const int session_id = |
91 media_stream_manager->VideoDeviceIdToSessionId(source_id); | 90 media_stream_manager->VideoDeviceIdToSessionId(source_id); |
92 | 91 |
93 if (session_id == StreamDeviceInfo::kNoId) | 92 if (session_id == StreamDeviceInfo::kNoId) |
94 return; | 93 return; |
95 media_stream_manager->video_capture_manager()->SetPhotoOptions( | 94 media_stream_manager->video_capture_manager()->SetPhotoOptions( |
96 session_id, std::move(settings), std::move(callback)); | 95 session_id, std::move(settings), std::move(callback)); |
97 } | 96 } |
98 | 97 |
99 void TakePhotoOnIOThread( | 98 void TakePhotoOnIOThread( |
100 const mojo::String& source_id, | 99 const std::string& source_id, |
101 MediaStreamManager* media_stream_manager, | 100 MediaStreamManager* media_stream_manager, |
102 media::ScopedResultCallback<ImageCaptureImpl::TakePhotoCallback> callback) { | 101 media::ScopedResultCallback<ImageCaptureImpl::TakePhotoCallback> callback) { |
103 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 102 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
104 | 103 |
105 const int session_id = | 104 const int session_id = |
106 media_stream_manager->VideoDeviceIdToSessionId(source_id); | 105 media_stream_manager->VideoDeviceIdToSessionId(source_id); |
107 | 106 |
108 if (session_id == StreamDeviceInfo::kNoId) | 107 if (session_id == StreamDeviceInfo::kNoId) |
109 return; | 108 return; |
110 media_stream_manager->video_capture_manager()->TakePhoto(session_id, | 109 media_stream_manager->video_capture_manager()->TakePhoto(session_id, |
111 std::move(callback)); | 110 std::move(callback)); |
112 } | 111 } |
113 | 112 |
114 } // anonymous namespace | 113 } // anonymous namespace |
115 | 114 |
116 // static | 115 // static |
117 void ImageCaptureImpl::Create( | 116 void ImageCaptureImpl::Create( |
118 mojo::InterfaceRequest<media::mojom::ImageCapture> request) { | 117 mojo::InterfaceRequest<media::mojom::ImageCapture> request) { |
119 // |binding_| will take ownership of ImageCaptureImpl. | 118 // |binding_| will take ownership of ImageCaptureImpl. |
120 new ImageCaptureImpl(std::move(request)); | 119 new ImageCaptureImpl(std::move(request)); |
121 } | 120 } |
122 | 121 |
123 ImageCaptureImpl::~ImageCaptureImpl() {} | 122 ImageCaptureImpl::~ImageCaptureImpl() {} |
124 | 123 |
125 void ImageCaptureImpl::GetCapabilities( | 124 void ImageCaptureImpl::GetCapabilities( |
126 const mojo::String& source_id, | 125 const std::string& source_id, |
127 const GetCapabilitiesCallback& callback) { | 126 const GetCapabilitiesCallback& callback) { |
128 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 127 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
129 | 128 |
130 media::ScopedResultCallback<GetCapabilitiesCallback> scoped_callback( | 129 media::ScopedResultCallback<GetCapabilitiesCallback> scoped_callback( |
131 base::Bind(&RunGetCapabilitiesCallbackOnUIThread, callback), | 130 base::Bind(&RunGetCapabilitiesCallbackOnUIThread, callback), |
132 media::BindToCurrentLoop(base::Bind(&RunFailedGetCapabilitiesCallback))); | 131 media::BindToCurrentLoop(base::Bind(&RunFailedGetCapabilitiesCallback))); |
133 | 132 |
134 BrowserThread::PostTask( | 133 BrowserThread::PostTask( |
135 BrowserThread::IO, FROM_HERE, | 134 BrowserThread::IO, FROM_HERE, |
136 base::Bind(&GetCapabilitiesOnIOThread, source_id, | 135 base::Bind(&GetCapabilitiesOnIOThread, source_id, |
137 BrowserMainLoop::GetInstance()->media_stream_manager(), | 136 BrowserMainLoop::GetInstance()->media_stream_manager(), |
138 base::Passed(&scoped_callback))); | 137 base::Passed(&scoped_callback))); |
139 } | 138 } |
140 | 139 |
141 void ImageCaptureImpl::SetOptions(const mojo::String& source_id, | 140 void ImageCaptureImpl::SetOptions(const std::string& source_id, |
142 media::mojom::PhotoSettingsPtr settings, | 141 media::mojom::PhotoSettingsPtr settings, |
143 const SetOptionsCallback& callback) { | 142 const SetOptionsCallback& callback) { |
144 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 143 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
145 | 144 |
146 media::ScopedResultCallback<SetOptionsCallback> scoped_callback( | 145 media::ScopedResultCallback<SetOptionsCallback> scoped_callback( |
147 base::Bind(&RunSetOptionsCallbackOnUIThread, callback), | 146 base::Bind(&RunSetOptionsCallbackOnUIThread, callback), |
148 media::BindToCurrentLoop(base::Bind(&RunFailedSetOptionsCallback))); | 147 media::BindToCurrentLoop(base::Bind(&RunFailedSetOptionsCallback))); |
149 | 148 |
150 BrowserThread::PostTask( | 149 BrowserThread::PostTask( |
151 BrowserThread::IO, FROM_HERE, | 150 BrowserThread::IO, FROM_HERE, |
152 base::Bind(&SetOptionsOnIOThread, source_id, | 151 base::Bind(&SetOptionsOnIOThread, source_id, |
153 BrowserMainLoop::GetInstance()->media_stream_manager(), | 152 BrowserMainLoop::GetInstance()->media_stream_manager(), |
154 base::Passed(&settings), base::Passed(&scoped_callback))); | 153 base::Passed(&settings), base::Passed(&scoped_callback))); |
155 } | 154 } |
156 | 155 |
157 void ImageCaptureImpl::TakePhoto(const mojo::String& source_id, | 156 void ImageCaptureImpl::TakePhoto(const std::string& source_id, |
158 const TakePhotoCallback& callback) { | 157 const TakePhotoCallback& callback) { |
159 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 158 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
160 | 159 |
161 media::ScopedResultCallback<TakePhotoCallback> scoped_callback( | 160 media::ScopedResultCallback<TakePhotoCallback> scoped_callback( |
162 base::Bind(&RunTakePhotoCallbackOnUIThread, callback), | 161 base::Bind(&RunTakePhotoCallbackOnUIThread, callback), |
163 media::BindToCurrentLoop(base::Bind(&RunFailedTakePhotoCallback))); | 162 media::BindToCurrentLoop(base::Bind(&RunFailedTakePhotoCallback))); |
164 | 163 |
165 BrowserThread::PostTask( | 164 BrowserThread::PostTask( |
166 BrowserThread::IO, FROM_HERE, | 165 BrowserThread::IO, FROM_HERE, |
167 base::Bind(&TakePhotoOnIOThread, source_id, | 166 base::Bind(&TakePhotoOnIOThread, source_id, |
168 BrowserMainLoop::GetInstance()->media_stream_manager(), | 167 BrowserMainLoop::GetInstance()->media_stream_manager(), |
169 base::Passed(&scoped_callback))); | 168 base::Passed(&scoped_callback))); |
170 } | 169 } |
171 | 170 |
172 ImageCaptureImpl::ImageCaptureImpl( | 171 ImageCaptureImpl::ImageCaptureImpl( |
173 mojo::InterfaceRequest<media::mojom::ImageCapture> request) | 172 mojo::InterfaceRequest<media::mojom::ImageCapture> request) |
174 : binding_(this, std::move(request)) {} | 173 : binding_(this, std::move(request)) {} |
175 | 174 |
176 } // namespace content | 175 } // namespace content |
OLD | NEW |