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 CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_EXTENSIONS_DELEGATE_IMPL_H_ 6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_EXTENSIONS_DELEGATE_IMPL_H_ 7 8 #include "extensions/browser/supervised_user_extensions_delegate.h" 9 10 namespace content { 11 class BrowserContext; 12 } 13 14 class ParentPermissionDialog; 15 16 namespace extensions { 17 18 class SupervisedUserExtensionsDelegateImpl 19 : public extensions::SupervisedUserExtensionsDelegate { 20 public: 21 SupervisedUserExtensionsDelegateImpl(); 22 ~SupervisedUserExtensionsDelegateImpl() override; 23 24 // extensions::SupervisedUserExtensionsDelegate overrides 25 bool IsChild(content::BrowserContext* context) const override; 26 bool IsExtensionAllowedByParent( 27 const extensions::Extension& extension, 28 content::BrowserContext* context) const override; 29 void PromptForParentPermissionOrShowError( 30 const extensions::Extension& extension, 31 content::BrowserContext* browser_context, 32 content::WebContents* web_contents, 33 ParentPermissionDialogDoneCallback parent_permission_callback, 34 base::OnceClosure error_callback) override; 35 36 private: 37 // Returns true if |context| represents a supervised child account who may 38 // install extensions with parent permission. 39 bool CanInstallExtensions(content::BrowserContext* context) const; 40 41 // Shows a parent permission dialog for |extension| and call |done_callback| 42 // when it completes. 43 void ShowParentPermissionDialogForExtension( 44 const extensions::Extension& extension, 45 content::BrowserContext* context, 46 content::WebContents* contents, 47 extensions::SupervisedUserExtensionsDelegate:: 48 ParentPermissionDialogDoneCallback done_callback); 49 50 // Shows a dialog indicating that |extension| has been blocked and call 51 // |done_callback| when it completes. 52 void ShowExtensionEnableBlockedByParentDialogForExtension( 53 const extensions::Extension& extension, 54 content::WebContents* contents, 55 base::OnceClosure done_callback); 56 57 std::unique_ptr<ParentPermissionDialog> parent_permission_dialog_; 58 }; 59 60 } // namespace extensions 61 62 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_EXTENSIONS_DELEGATE_IMPL_H_ 63