electron_extensions_api_client.cc 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. #include "shell/browser/extensions/electron_extensions_api_client.h"
  5. #include <memory>
  6. #include <string>
  7. #include "electron/buildflags/buildflags.h"
  8. #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h"
  9. #include "printing/buildflags/buildflags.h"
  10. #include "shell/browser/extensions/api/management/electron_management_api_delegate.h"
  11. #include "shell/browser/extensions/electron_extension_web_contents_observer.h"
  12. #include "shell/browser/extensions/electron_messaging_delegate.h"
  13. #if BUILDFLAG(ENABLE_PDF_VIEWER)
  14. #include "components/pdf/browser/pdf_web_contents_helper.h"
  15. #include "shell/browser/electron_pdf_web_contents_helper_client.h"
  16. #endif
  17. namespace extensions {
  18. class ElectronMimeHandlerViewGuestDelegate
  19. : public MimeHandlerViewGuestDelegate {
  20. public:
  21. ElectronMimeHandlerViewGuestDelegate() {}
  22. ~ElectronMimeHandlerViewGuestDelegate() override {}
  23. // MimeHandlerViewGuestDelegate.
  24. bool HandleContextMenu(content::WebContents* web_contents,
  25. const content::ContextMenuParams& params) override {
  26. // TODO(nornagon): surface this event to JS
  27. LOG(INFO) << "HCM";
  28. return true;
  29. }
  30. void RecordLoadMetric(bool in_main_frame,
  31. const std::string& mime_type) override {}
  32. private:
  33. DISALLOW_COPY_AND_ASSIGN(ElectronMimeHandlerViewGuestDelegate);
  34. };
  35. ElectronExtensionsAPIClient::ElectronExtensionsAPIClient() = default;
  36. ElectronExtensionsAPIClient::~ElectronExtensionsAPIClient() = default;
  37. MessagingDelegate* ElectronExtensionsAPIClient::GetMessagingDelegate() {
  38. if (!messaging_delegate_)
  39. messaging_delegate_ = std::make_unique<ElectronMessagingDelegate>();
  40. return messaging_delegate_.get();
  41. }
  42. void ElectronExtensionsAPIClient::AttachWebContentsHelpers(
  43. content::WebContents* web_contents) const {
  44. extensions::ElectronExtensionWebContentsObserver::CreateForWebContents(
  45. web_contents);
  46. #if BUILDFLAG(ENABLE_PDF_VIEWER)
  47. pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
  48. web_contents, std::make_unique<ElectronPDFWebContentsHelperClient>());
  49. #endif
  50. }
  51. ManagementAPIDelegate*
  52. ElectronExtensionsAPIClient::CreateManagementAPIDelegate() const {
  53. return new ElectronManagementAPIDelegate;
  54. }
  55. std::unique_ptr<MimeHandlerViewGuestDelegate>
  56. ElectronExtensionsAPIClient::CreateMimeHandlerViewGuestDelegate(
  57. MimeHandlerViewGuest* guest) const {
  58. return std::make_unique<ElectronMimeHandlerViewGuestDelegate>();
  59. }
  60. } // namespace extensions