Refactor WebsiteSettings to operate on a SecurityInfo
[chromium-blink-merge.git] / chrome / browser / media / media_stream_device_permission_context.h
blob6d63888c6bd75e1498836f93e78b6f84441e76d6
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 {
17 public:
18 MediaStreamDevicePermissionContext(
19 Profile* profile,
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,
27 bool user_gesture,
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;
49 private:
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_