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.
5 #ifndef CHROME_BROWSER_MEDIA_MEDIA_STREAM_DEVICE_PERMISSION_CONTEXT_H_
6 #define CHROME_BROWSER_MEDIA_MEDIA_STREAM_DEVICE_PERMISSION_CONTEXT_H_
8 #include "base/macros.h"
9 #include "chrome/browser/permissions/permission_context_base.h"
10 #include "components/content_settings/core/common/content_settings_types.h"
12 // Common class which handles the mic and camera permissions.
13 // MediaStreamMicPermissionContextFactory and
14 // MediaStreamCameraPermissionContextFactory will instantiate this with
15 // corresponding |permission_type|.
16 class MediaStreamDevicePermissionContext
: public PermissionContextBase
{
18 MediaStreamDevicePermissionContext(
20 const ContentSettingsType content_settings_type
);
21 ~MediaStreamDevicePermissionContext() override
;
23 // PermissionContextBase:
24 void RequestPermission(content::WebContents
* web_contents
,
25 const PermissionRequestID
& id
,
26 const GURL
& requesting_frame
,
28 const BrowserPermissionCallback
& callback
) override
;
30 // TODO(xhwang): GURL.GetOrigin() shouldn't be used as the origin. Need to
31 // refactor to use url::Origin. crbug.com/527149 is filed for this.
32 ContentSetting
GetPermissionStatus(
33 const GURL
& requesting_origin
,
34 const GURL
& embedding_origin
) const override
;
36 // For Pepper request, insecure origins are allowed to be persisted, hence we
37 // can't just call GetPermissionStatus when the requesting origin is insecure.
38 // Please see crbug.com/512301.
39 ContentSetting
GetPermissionStatusForPepper(
40 const GURL
& requesting_origin
,
41 const GURL
& embedding_origin
) const;
43 void ResetPermission(const GURL
& requesting_origin
,
44 const GURL
& embedding_origin
) override
;
46 void CancelPermissionRequest(content::WebContents
* web_contents
,
47 const PermissionRequestID
& id
) override
;
50 ContentSetting
GetPermissionStatusInternal(const GURL
& requesting_origin
,
51 const GURL
& embedding_origin
,
52 bool is_pepper_request
) const;
54 // PermissionContextBase:
55 bool IsRestrictedToSecureOrigins() const override
;
57 ContentSettingsType content_settings_type_
;
59 DISALLOW_COPY_AND_ASSIGN(MediaStreamDevicePermissionContext
);
62 #endif // CHROME_BROWSER_MEDIA_MEDIA_STREAM_DEVICE_PERMISSION_CONTEXT_H_