electron_messaging_delegate.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright (c) 2019 Slack Technologies, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #ifndef ELECTRON_SHELL_BROWSER_EXTENSIONS_ELECTRON_MESSAGING_DELEGATE_H_
  5. #define ELECTRON_SHELL_BROWSER_EXTENSIONS_ELECTRON_MESSAGING_DELEGATE_H_
  6. #include <memory>
  7. #include <string>
  8. #include "extensions/browser/api/messaging/messaging_delegate.h"
  9. namespace extensions {
  10. // Helper class for Chrome-specific features of the extension messaging API.
  11. class ElectronMessagingDelegate : public MessagingDelegate {
  12. public:
  13. ElectronMessagingDelegate();
  14. ~ElectronMessagingDelegate() override;
  15. // disable copy
  16. ElectronMessagingDelegate(const ElectronMessagingDelegate&) = delete;
  17. ElectronMessagingDelegate& operator=(const ElectronMessagingDelegate&) =
  18. delete;
  19. // MessagingDelegate:
  20. PolicyPermission IsNativeMessagingHostAllowed(
  21. content::BrowserContext* browser_context,
  22. const std::string& native_host_name) override;
  23. absl::optional<base::Value::Dict> MaybeGetTabInfo(
  24. content::WebContents* web_contents) override;
  25. content::WebContents* GetWebContentsByTabId(
  26. content::BrowserContext* browser_context,
  27. int tab_id) override;
  28. std::unique_ptr<MessagePort> CreateReceiverForTab(
  29. base::WeakPtr<MessagePort::ChannelDelegate> channel_delegate,
  30. const std::string& extension_id,
  31. const PortId& receiver_port_id,
  32. content::WebContents* receiver_contents,
  33. int receiver_frame_id,
  34. const std::string& receiver_document_id) override;
  35. std::unique_ptr<MessagePort> CreateReceiverForNativeApp(
  36. content::BrowserContext* browser_context,
  37. base::WeakPtr<MessagePort::ChannelDelegate> channel_delegate,
  38. content::RenderFrameHost* source,
  39. const std::string& extension_id,
  40. const PortId& receiver_port_id,
  41. const std::string& native_app_name,
  42. bool allow_user_level,
  43. std::string* error_out) override;
  44. void QueryIncognitoConnectability(
  45. content::BrowserContext* context,
  46. const Extension* extension,
  47. content::WebContents* source_contents,
  48. const GURL& url,
  49. base::OnceCallback<void(bool)> callback) override;
  50. };
  51. } // namespace extensions
  52. #endif // ELECTRON_SHELL_BROWSER_EXTENSIONS_ELECTRON_MESSAGING_DELEGATE_H_