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

Side by Side Diff: content/browser/media/capture/image_capture_impl.cc

Issue 2745583005: Image Capture: move files out of content/browser/media/capture to replicate WebKit's structure (Closed)
Patch Set: Reverted unintended change to WATCHLISTS Created 3 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/browser/media/capture/image_capture_impl.h"
6
7 #include <utility>
8
9 #include "base/bind_helpers.h"
10 #include "base/memory/ptr_util.h"
11 #include "content/browser/browser_main_loop.h"
12 #include "content/browser/renderer_host/media/media_stream_manager.h"
13 #include "content/browser/renderer_host/media/video_capture_manager.h"
14 #include "content/common/media/media_stream_options.h"
15 #include "content/public/browser/browser_thread.h"
16 #include "media/base/bind_to_current_loop.h"
17 #include "media/capture/video/video_capture_device.h"
18 #include "mojo/public/cpp/bindings/strong_binding.h"
19
20 namespace content {
21
22 namespace {
23
24 void RunGetCapabilitiesCallbackOnUIThread(
25 const ImageCaptureImpl::GetCapabilitiesCallback& callback,
26 media::mojom::PhotoCapabilitiesPtr capabilities) {
27 BrowserThread::PostTask(
28 BrowserThread::UI, FROM_HERE,
29 base::Bind(callback, base::Passed(&capabilities)));
30 }
31
32 void RunFailedGetCapabilitiesCallback(
33 const ImageCaptureImpl::GetCapabilitiesCallback& cb) {
34 DCHECK_CURRENTLY_ON(BrowserThread::UI);
35 media::mojom::PhotoCapabilitiesPtr empty_capabilities =
36 media::mojom::PhotoCapabilities::New();
37 empty_capabilities->iso = media::mojom::Range::New();
38 empty_capabilities->width = media::mojom::Range::New();
39 empty_capabilities->height = media::mojom::Range::New();
40 empty_capabilities->zoom = media::mojom::Range::New();
41 empty_capabilities->exposure_compensation = media::mojom::Range::New();
42 empty_capabilities->color_temperature = media::mojom::Range::New();
43 empty_capabilities->brightness = media::mojom::Range::New();
44 empty_capabilities->contrast = media::mojom::Range::New();
45 empty_capabilities->saturation = media::mojom::Range::New();
46 empty_capabilities->sharpness = media::mojom::Range::New();
47 cb.Run(std::move(empty_capabilities));
48 }
49
50 void RunSetOptionsCallbackOnUIThread(
51 const ImageCaptureImpl::SetOptionsCallback& callback,
52 bool success) {
53 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
54 base::Bind(callback, success));
55 }
56
57 void RunFailedSetOptionsCallback(
58 const ImageCaptureImpl::SetOptionsCallback& cb) {
59 DCHECK_CURRENTLY_ON(BrowserThread::UI);
60 cb.Run(false);
61 }
62
63 void RunTakePhotoCallbackOnUIThread(
64 const ImageCaptureImpl::TakePhotoCallback& callback,
65 media::mojom::BlobPtr blob) {
66 BrowserThread::PostTask(
67 BrowserThread::UI, FROM_HERE,
68 base::Bind(callback, base::Passed(std::move(blob))));
69 }
70
71 void RunFailedTakePhotoCallback(const ImageCaptureImpl::TakePhotoCallback& cb) {
72 DCHECK_CURRENTLY_ON(BrowserThread::UI);
73 cb.Run(media::mojom::Blob::New());
74 }
75
76 void GetCapabilitiesOnIOThread(
77 const std::string& source_id,
78 MediaStreamManager* media_stream_manager,
79 media::ScopedResultCallback<ImageCaptureImpl::GetCapabilitiesCallback>
80 callback) {
81 DCHECK_CURRENTLY_ON(BrowserThread::IO);
82
83 const int session_id =
84 media_stream_manager->VideoDeviceIdToSessionId(source_id);
85
86 if (session_id == StreamDeviceInfo::kNoId)
87 return;
88 media_stream_manager->video_capture_manager()->GetPhotoCapabilities(
89 session_id, std::move(callback));
90 }
91
92 void SetOptionsOnIOThread(
93 const std::string& source_id,
94 MediaStreamManager* media_stream_manager,
95 media::mojom::PhotoSettingsPtr settings,
96 media::ScopedResultCallback<ImageCaptureImpl::SetOptionsCallback>
97 callback) {
98 DCHECK_CURRENTLY_ON(BrowserThread::IO);
99
100 const int session_id =
101 media_stream_manager->VideoDeviceIdToSessionId(source_id);
102
103 if (session_id == StreamDeviceInfo::kNoId)
104 return;
105 media_stream_manager->video_capture_manager()->SetPhotoOptions(
106 session_id, std::move(settings), std::move(callback));
107 }
108
109 void TakePhotoOnIOThread(
110 const std::string& source_id,
111 MediaStreamManager* media_stream_manager,
112 media::ScopedResultCallback<ImageCaptureImpl::TakePhotoCallback> callback) {
113 DCHECK_CURRENTLY_ON(BrowserThread::IO);
114
115 const int session_id =
116 media_stream_manager->VideoDeviceIdToSessionId(source_id);
117
118 if (session_id == StreamDeviceInfo::kNoId)
119 return;
120 media_stream_manager->video_capture_manager()->TakePhoto(session_id,
121 std::move(callback));
122 }
123
124 } // anonymous namespace
125
126 ImageCaptureImpl::ImageCaptureImpl() {}
127
128 ImageCaptureImpl::~ImageCaptureImpl() {}
129
130 // static
131 void ImageCaptureImpl::Create(media::mojom::ImageCaptureRequest request) {
132 mojo::MakeStrongBinding(base::MakeUnique<ImageCaptureImpl>(),
133 std::move(request));
134 }
135
136 void ImageCaptureImpl::GetCapabilities(
137 const std::string& source_id,
138 const GetCapabilitiesCallback& callback) {
139 DCHECK_CURRENTLY_ON(BrowserThread::UI);
140
141 media::ScopedResultCallback<GetCapabilitiesCallback> scoped_callback(
142 base::Bind(&RunGetCapabilitiesCallbackOnUIThread, callback),
143 media::BindToCurrentLoop(base::Bind(&RunFailedGetCapabilitiesCallback)));
144
145 BrowserThread::PostTask(
146 BrowserThread::IO, FROM_HERE,
147 base::Bind(&GetCapabilitiesOnIOThread, source_id,
148 BrowserMainLoop::GetInstance()->media_stream_manager(),
149 base::Passed(&scoped_callback)));
150 }
151
152 void ImageCaptureImpl::SetOptions(const std::string& source_id,
153 media::mojom::PhotoSettingsPtr settings,
154 const SetOptionsCallback& callback) {
155 DCHECK_CURRENTLY_ON(BrowserThread::UI);
156
157 media::ScopedResultCallback<SetOptionsCallback> scoped_callback(
158 base::Bind(&RunSetOptionsCallbackOnUIThread, callback),
159 media::BindToCurrentLoop(base::Bind(&RunFailedSetOptionsCallback)));
160
161 BrowserThread::PostTask(
162 BrowserThread::IO, FROM_HERE,
163 base::Bind(&SetOptionsOnIOThread, source_id,
164 BrowserMainLoop::GetInstance()->media_stream_manager(),
165 base::Passed(&settings), base::Passed(&scoped_callback)));
166 }
167
168 void ImageCaptureImpl::TakePhoto(const std::string& source_id,
169 const TakePhotoCallback& callback) {
170 DCHECK_CURRENTLY_ON(BrowserThread::UI);
171
172 media::ScopedResultCallback<TakePhotoCallback> scoped_callback(
173 base::Bind(&RunTakePhotoCallbackOnUIThread, callback),
174 media::BindToCurrentLoop(base::Bind(&RunFailedTakePhotoCallback)));
175
176 BrowserThread::PostTask(
177 BrowserThread::IO, FROM_HERE,
178 base::Bind(&TakePhotoOnIOThread, source_id,
179 BrowserMainLoop::GetInstance()->media_stream_manager(),
180 base::Passed(&scoped_callback)));
181 }
182
183 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/capture/image_capture_impl.h ('k') | content/browser/renderer_host/render_process_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698