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

Side by Side Diff: content/renderer/media/media_permission_dispatcher_impl.h

Issue 1464183002: media: Simplify MediaPermissionDispatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comment Created 5 years 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 2015 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 // MediaPermission implementation which dispatches queries/requests to Mojo
6 // PermissionService. It relies on its base class MediaPermissionDispatcher to
7 // manage pending callbacks. Non-UI threads could create
8 // MediaPermissionDispatcherProxy by calling CreateProxy such that calls will be
9 // executed on the UI thread which is where this object lives.
10
11 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_PERMISSION_DISPATCHER_IMPL_H_
12 #define CONTENT_RENDERER_MEDIA_MEDIA_PERMISSION_DISPATCHER_IMPL_H_
13
14 #include <map>
15
16 #include "base/single_thread_task_runner.h"
17 #include "base/threading/thread_checker.h"
18 #include "content/common/content_export.h"
19 #include "content/common/permission_service.mojom.h"
20 #include "content/public/renderer/render_frame_observer.h"
21 #include "content/renderer/media/media_permission_dispatcher.h"
22 #include "media/base/media_permission.h"
23
24 namespace content {
25
26 class CONTENT_EXPORT MediaPermissionDispatcherImpl
27 : public MediaPermissionDispatcher,
28 public RenderFrameObserver {
29 public:
30 explicit MediaPermissionDispatcherImpl(RenderFrame* render_frame);
31 ~MediaPermissionDispatcherImpl() override;
32
33 // media::MediaPermission implementation.
34 void HasPermission(Type type,
35 const GURL& security_origin,
36 const PermissionStatusCB& permission_status_cb) override;
37
38 // MediaStreamDevicePermissionContext doesn't support RequestPermission yet
39 // and will always return CONTENT_SETTING_BLOCK.
40 void RequestPermission(
41 Type type,
42 const GURL& security_origin,
43 const PermissionStatusCB& permission_status_cb) override;
44
45 // Create MediaPermissionDispatcherProxy object which will dispatch the
46 // callback between the |caller_task_runner| and |task_runner_| in a thread
47 // safe way. This can be called from non-UI thread.
48 scoped_ptr<media::MediaPermission> CreateProxy(
49 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner);
50
51 private:
52 // Callback for |permission_service_| calls.
53 void OnPermissionStatus(uint32_t request_id, PermissionStatus status);
54
55 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
56
57 PermissionServicePtr permission_service_;
58
59 base::WeakPtrFactory<MediaPermissionDispatcherImpl> weak_ptr_factory_;
60
61 DISALLOW_COPY_AND_ASSIGN(MediaPermissionDispatcherImpl);
62 };
63
64 } // namespace content
65
66 #endif // CONTENT_RENDERER_MEDIA_MEDIA_PERMISSION_DISPATCHER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698