electron_extension_host_delegate.cc 2.5 KB

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