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

Side by Side Diff: chrome/browser/media/public_session_tab_capture_access_handler.cc

Issue 2697833004: Revert of Public Sessions - prompt the user for pageCapture requests (Closed)
Patch Set: Created 3 years, 10 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 "chrome/browser/media/public_session_tab_capture_access_handler.h"
6
7 #include <utility>
8
9 #include "base/bind.h"
10 #include "base/bind_helpers.h"
11 #include "base/memory/ptr_util.h"
12 #include "chrome/browser/chromeos/extensions/public_session_permission_helper.h"
13 #include "chrome/browser/profiles/profiles_state.h"
14 #include "chromeos/login/login_state.h"
15 #include "content/public/browser/web_contents.h"
16 #include "extensions/common/extension.h"
17 #include "extensions/common/permissions/manifest_permission_set.h"
18 #include "extensions/common/permissions/permission_set.h"
19 #include "extensions/common/url_pattern_set.h"
20
21 PublicSessionTabCaptureAccessHandler::PublicSessionTabCaptureAccessHandler() {}
22
23 PublicSessionTabCaptureAccessHandler::~PublicSessionTabCaptureAccessHandler() {}
24
25 bool PublicSessionTabCaptureAccessHandler::SupportsStreamType(
26 const content::MediaStreamType type,
27 const extensions::Extension* extension) {
28 return tab_capture_access_handler_.SupportsStreamType(type, extension);
29 }
30
31 bool PublicSessionTabCaptureAccessHandler::CheckMediaAccessPermission(
32 content::WebContents* web_contents,
33 const GURL& security_origin,
34 content::MediaStreamType type,
35 const extensions::Extension* extension) {
36 return tab_capture_access_handler_.CheckMediaAccessPermission(
37 web_contents, security_origin, type, extension);
38 }
39
40 void PublicSessionTabCaptureAccessHandler::HandleRequest(
41 content::WebContents* web_contents,
42 const content::MediaStreamRequest& request,
43 const content::MediaResponseCallback& callback,
44 const extensions::Extension* extension) {
45 // This class handles requests for Public Sessions only, outside of them just
46 // pass the request through to the original class.
47 if (!profiles::IsPublicSession() || !extension ||
48 (request.audio_type != content::MEDIA_TAB_AUDIO_CAPTURE &&
49 request.video_type != content::MEDIA_TAB_VIDEO_CAPTURE)) {
50 return tab_capture_access_handler_.HandleRequest(web_contents, request,
51 callback, extension);
52 }
53
54 // This Unretained is safe because the lifetime of this object is until
55 // process exit (living inside a base::Singleton object).
56 auto prompt_resolved_callback = base::Bind(
57 &PublicSessionTabCaptureAccessHandler::ChainHandleRequest,
58 base::Unretained(this), web_contents, request, callback, extension);
59
60 extensions::permission_helper::HandlePermissionRequest(
61 *extension, {extensions::APIPermission::kTabCapture}, web_contents,
62 prompt_resolved_callback, extensions::permission_helper::PromptFactory());
63 }
64
65 void PublicSessionTabCaptureAccessHandler::ChainHandleRequest(
66 content::WebContents* web_contents,
67 const content::MediaStreamRequest& request,
68 const content::MediaResponseCallback& callback,
69 const extensions::Extension* extension,
70 const extensions::PermissionIDSet& allowed_permissions) {
71 content::MediaStreamRequest request_copy(request);
72
73 // If the user denied tab capture, here the request gets filtered out before
74 // being passed on to the actual implementation.
75 if (!allowed_permissions.ContainsID(extensions::APIPermission::kTabCapture)) {
76 request_copy.audio_type = content::MEDIA_NO_SERVICE;
77 request_copy.video_type = content::MEDIA_NO_SERVICE;
78 }
79
80 // Pass the request through to the original class.
81 tab_capture_access_handler_.HandleRequest(web_contents, request_copy,
82 callback, extension);
83 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698