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

Side by Side Diff: android_webview/native/permission/media_access_permission_request.cc

Issue 2863233002: [WebView] Move files from native to browser (Closed)
Patch Set: 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "android_webview/native/permission/media_access_permission_request.h"
6
7 #include <utility>
8
9 #include "android_webview/native/permission/aw_permission_request.h"
10 #include "content/public/browser/media_capture_devices.h"
11
12 using content::MediaCaptureDevices;
13 using content::MediaStreamDevice;
14 using content::MediaStreamDevices;
15
16 namespace android_webview {
17
18 namespace {
19
20 // Return the device specified by |device_id| if exists, otherwise the first
21 // available device is returned.
22 const MediaStreamDevice* GetDeviceByIdOrFirstAvailable(
23 const MediaStreamDevices& devices,
24 const std::string& device_id) {
25 if (devices.empty())
26 return NULL;
27
28 if (!device_id.empty()) {
29 for (size_t i = 0; i < devices.size(); ++i) {
30 if (devices[i].id == device_id)
31 return &devices[i];
32 }
33 }
34
35 return &devices[0];
36 }
37
38 } // namespace
39
40 MediaAccessPermissionRequest::MediaAccessPermissionRequest(
41 const content::MediaStreamRequest& request,
42 const content::MediaResponseCallback& callback)
43 : request_(request),
44 callback_(callback) {
45 }
46
47 MediaAccessPermissionRequest::~MediaAccessPermissionRequest() {
48 }
49
50 void MediaAccessPermissionRequest::NotifyRequestResult(bool allowed) {
51 std::unique_ptr<content::MediaStreamUI> ui;
52 MediaStreamDevices devices;
53 if (!allowed) {
54 callback_.Run(devices, content::MEDIA_DEVICE_PERMISSION_DENIED,
55 std::move(ui));
56 return;
57 }
58
59 if (request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) {
60 const MediaStreamDevices& audio_devices = audio_test_devices_.empty()?
61 MediaCaptureDevices::GetInstance()->GetAudioCaptureDevices() :
62 audio_test_devices_;
63 const MediaStreamDevice* device = GetDeviceByIdOrFirstAvailable(
64 audio_devices, request_.requested_audio_device_id);
65 if (device)
66 devices.push_back(*device);
67 }
68
69 if (request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) {
70 const MediaStreamDevices& video_devices = video_test_devices_.empty()?
71 MediaCaptureDevices::GetInstance()->GetVideoCaptureDevices() :
72 video_test_devices_;
73 const MediaStreamDevice* device = GetDeviceByIdOrFirstAvailable(
74 video_devices, request_.requested_video_device_id);
75 if (device)
76 devices.push_back(*device);
77 }
78 callback_.Run(devices, devices.empty() ? content::MEDIA_DEVICE_NO_HARDWARE
79 : content::MEDIA_DEVICE_OK,
80 std::move(ui));
81 }
82
83 const GURL& MediaAccessPermissionRequest::GetOrigin() {
84 return request_.security_origin;
85 }
86
87 int64_t MediaAccessPermissionRequest::GetResources() {
88 return (request_.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE ?
89 AwPermissionRequest::AudioCapture : 0) |
90 (request_.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE ?
91 AwPermissionRequest::VideoCapture : 0);
92 }
93
94 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698