Chromium Code Reviews| Index: content/renderer/media/media_permission_dispatcher.h |
| diff --git a/content/renderer/media/media_permission_dispatcher.h b/content/renderer/media/media_permission_dispatcher.h |
| index 4e23bd717c912f6382a65f0758f0d62611fbe757..3637ddcf034918c82cddc5c5e9555396e516e000 100644 |
| --- a/content/renderer/media/media_permission_dispatcher.h |
| +++ b/content/renderer/media/media_permission_dispatcher.h |
| @@ -2,48 +2,42 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +// Base class for MediaPermission implementations in content. This class allows |
| +// multiple pending PermissionService calls by managing callbacks for its |
| +// subclasses. This class is not thread safe and should only be used on one |
| +// thread. |
| + |
| #ifndef CONTENT_RENDERER_MEDIA_MEDIA_PERMISSION_DISPATCHER_H_ |
| #define CONTENT_RENDERER_MEDIA_MEDIA_PERMISSION_DISPATCHER_H_ |
| #include <map> |
| -#include "base/threading/thread_checker.h" |
| -#include "content/common/content_export.h" |
| -#include "content/common/permission_service.mojom.h" |
| -#include "content/public/renderer/render_frame_observer.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "media/base/media_permission.h" |
| namespace content { |
| -// MediaPermission implementation in content. This class is not thread safe |
| -// and should only be used on one thread. |
| -class CONTENT_EXPORT MediaPermissionDispatcher : public media::MediaPermission, |
| - public RenderFrameObserver { |
| +class MediaPermissionDispatcher |
| + : public media::MediaPermission, |
| + public base::SupportsWeakPtr<MediaPermissionDispatcher> { |
| public: |
| - explicit MediaPermissionDispatcher(RenderFrame* render_frame); |
| + MediaPermissionDispatcher(); |
| ~MediaPermissionDispatcher() override; |
| - // media::MediaPermission implementation. |
| - void HasPermission(Type type, |
| - const GURL& security_origin, |
| - const PermissionStatusCB& permission_status_cb) override; |
| - void RequestPermission( |
| - Type type, |
| - const GURL& security_origin, |
| - const PermissionStatusCB& permission_status_cb) override; |
| + protected: |
| + // Register callbacks for PermissionService calls. |
| + uint32_t RegisterCallback(const PermissionStatusCB& permission_status_cb); |
| + |
| + // Deliver the permission status |granted| to the callback identified by |
| + // |request_id|. |
| + void DeliverResult(uint32_t request_id, bool granted); |
| private: |
| // Map of request IDs and pending PermissionStatusCBs. |
| typedef std::map<uint32_t, PermissionStatusCB> RequestMap; |
|
perkj_chrome
2015/09/22 08:24:16
Please re-add thread checker to enforce that this
guoweis_left_chromium
2015/09/22 18:48:48
Done.
|
| - // Callback for |permission_service_| calls. |
| - void OnPermissionStatus(uint32_t request_id, PermissionStatus status); |
| - |
| uint32_t next_request_id_; |
| RequestMap requests_; |
| - PermissionServicePtr permission_service_; |
| - |
| - base::ThreadChecker thread_checker_; |
| DISALLOW_COPY_AND_ASSIGN(MediaPermissionDispatcher); |
| }; |