electron_extension_host_delegate.cc 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2014 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. #include "shell/browser/extensions/electron_extension_host_delegate.h"
  5. #include <memory>
  6. #include <string>
  7. #include <utility>
  8. #include "extensions/browser/media_capture_util.h"
  9. #include "shell/browser/api/electron_api_web_contents.h"
  10. #include "shell/browser/extensions/electron_extension_web_contents_observer.h"
  11. #include "v8/include/v8.h"
  12. namespace extensions {
  13. ElectronExtensionHostDelegate::ElectronExtensionHostDelegate() = default;
  14. ElectronExtensionHostDelegate::~ElectronExtensionHostDelegate() = default;
  15. void ElectronExtensionHostDelegate::OnExtensionHostCreated(
  16. content::WebContents* web_contents) {
  17. ElectronExtensionWebContentsObserver::CreateForWebContents(web_contents);
  18. v8::Isolate* isolate = v8::Isolate::GetCurrent();
  19. v8::HandleScope scope(isolate);
  20. electron::api::WebContents::FromOrCreate(isolate, web_contents);
  21. }
  22. content::JavaScriptDialogManager*
  23. ElectronExtensionHostDelegate::GetJavaScriptDialogManager() {
  24. // TODO(jamescook): Create a JavaScriptDialogManager or reuse the one from
  25. // content_shell.
  26. NOTREACHED();
  27. }
  28. void ElectronExtensionHostDelegate::CreateTab(
  29. std::unique_ptr<content::WebContents> web_contents,
  30. const std::string& extension_id,
  31. WindowOpenDisposition disposition,
  32. const blink::mojom::WindowFeatures& window_features,
  33. bool user_gesture) {
  34. // TODO(jamescook): Should app_shell support opening popup windows?
  35. NOTREACHED();
  36. }
  37. void ElectronExtensionHostDelegate::ProcessMediaAccessRequest(
  38. content::WebContents* web_contents,
  39. const content::MediaStreamRequest& request,
  40. content::MediaResponseCallback callback,
  41. const Extension* extension) {
  42. // Allow access to the microphone and/or camera.
  43. media_capture_util::GrantMediaStreamRequest(web_contents, request,
  44. std::move(callback), extension);
  45. }
  46. bool ElectronExtensionHostDelegate::CheckMediaAccessPermission(
  47. content::RenderFrameHost* render_frame_host,
  48. const url::Origin& security_origin,
  49. blink::mojom::MediaStreamType type,
  50. const Extension* extension) {
  51. media_capture_util::VerifyMediaAccessPermission(type, extension);
  52. return true;
  53. }
  54. content::PictureInPictureResult
  55. ElectronExtensionHostDelegate::EnterPictureInPicture(
  56. content::WebContents* web_contents) {
  57. NOTREACHED();
  58. }
  59. void ElectronExtensionHostDelegate::ExitPictureInPicture() {
  60. NOTREACHED();
  61. }
  62. } // namespace extensions