1 // Copyright 2020 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 #ifndef WEBLAYER_BROWSER_PAGE_SPECIFIC_CONTENT_SETTINGS_DELEGATE_H_
6 #define WEBLAYER_BROWSER_PAGE_SPECIFIC_CONTENT_SETTINGS_DELEGATE_H_
7 
8 #include "components/content_settings/browser/page_specific_content_settings.h"
9 
10 namespace weblayer {
11 
12 // Called by PageSpecificContentSettings to handle WebLayer specific logic.
13 class PageSpecificContentSettingsDelegate
14     : public content_settings::PageSpecificContentSettings::Delegate {
15  public:
16   explicit PageSpecificContentSettingsDelegate(
17       content::WebContents* web_contents);
18   ~PageSpecificContentSettingsDelegate() override;
19   PageSpecificContentSettingsDelegate(
20       const PageSpecificContentSettingsDelegate&) = delete;
21   PageSpecificContentSettingsDelegate& operator=(
22       const PageSpecificContentSettingsDelegate&) = delete;
23 
24   static void UpdateRendererContentSettingRules(
25       content::RenderProcessHost* process);
26 
27  private:
28   // PageSpecificContentSettings::Delegate:
29   void UpdateLocationBar() override;
30   void SetContentSettingRules(
31       content::RenderProcessHost* process,
32       const RendererContentSettingRules& rules) override;
33   PrefService* GetPrefs() override;
34   HostContentSettingsMap* GetSettingsMap() override;
35   ContentSetting GetEmbargoSetting(const GURL& request_origin,
36                                    ContentSettingsType permission) override;
37   std::vector<storage::FileSystemType> GetAdditionalFileSystemTypes() override;
38   browsing_data::CookieHelper::IsDeletionDisabledCallback
39   GetIsDeletionDisabledCallback() override;
40   bool IsMicrophoneCameraStateChanged(
41       content_settings::PageSpecificContentSettings::MicrophoneCameraState
42           microphone_camera_state,
43       const std::string& media_stream_selected_audio_device,
44       const std::string& media_stream_selected_video_device) override;
45   content_settings::PageSpecificContentSettings::MicrophoneCameraState
46   GetMicrophoneCameraState() override;
47   void OnContentAllowed(ContentSettingsType type) override;
48   void OnContentBlocked(ContentSettingsType type) override;
49   void OnCacheStorageAccessAllowed(const url::Origin& origin) override;
50   void OnCookieAccessAllowed(const net::CookieList& accessed_cookies) override;
51   void OnDomStorageAccessAllowed(const url::Origin& origin) override;
52   void OnFileSystemAccessAllowed(const url::Origin& origin) override;
53   void OnIndexedDBAccessAllowed(const url::Origin& origin) override;
54   void OnServiceWorkerAccessAllowed(const url::Origin& origin) override;
55   void OnWebDatabaseAccessAllowed(const url::Origin& origin) override;
56 
57   content::WebContents* web_contents_;
58 };
59 
60 }  // namespace weblayer
61 
62 #endif  // WEBLAYER_BROWSER_PAGE_SPECIFIC_CONTENT_SETTINGS_DELEGATE_H_
63