common-init.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import type * as securityWarningsModule from '@electron/internal/renderer/security-warnings';
  2. import type * as webFrameInitModule from '@electron/internal/renderer/web-frame-init';
  3. import type * as webViewInitModule from '@electron/internal/renderer/web-view/web-view-init';
  4. import type * as windowSetupModule from '@electron/internal/renderer/window-setup';
  5. const { mainFrame } = process._linkedBinding('electron_renderer_web_frame');
  6. const nodeIntegration = mainFrame.getWebPreference('nodeIntegration');
  7. const webviewTag = mainFrame.getWebPreference('webviewTag');
  8. const isHiddenPage = mainFrame.getWebPreference('hiddenPage');
  9. const isWebView = mainFrame.getWebPreference('isWebView');
  10. require('@electron/internal/renderer/ipc-native-setup');
  11. switch (window.location.protocol) {
  12. case 'devtools:': {
  13. // Override some inspector APIs.
  14. require('@electron/internal/renderer/inspector');
  15. break;
  16. }
  17. case 'chrome-extension:': {
  18. break;
  19. }
  20. case 'chrome:': {
  21. break;
  22. }
  23. default: {
  24. // Override default web functions.
  25. const { windowSetup } = require('@electron/internal/renderer/window-setup') as typeof windowSetupModule;
  26. windowSetup(isWebView, isHiddenPage);
  27. }
  28. }
  29. // Load webview tag implementation.
  30. if (process.isMainFrame) {
  31. const { webViewInit } = require('@electron/internal/renderer/web-view/web-view-init') as typeof webViewInitModule;
  32. webViewInit(webviewTag, isWebView);
  33. }
  34. const { webFrameInit } = require('@electron/internal/renderer/web-frame-init') as typeof webFrameInitModule;
  35. webFrameInit();
  36. // Warn about security issues
  37. if (process.isMainFrame) {
  38. const { securityWarnings } = require('@electron/internal/renderer/security-warnings') as typeof securityWarningsModule;
  39. securityWarnings(nodeIntegration);
  40. }