Chromium Code Reviews| 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 |