electron/atom/browser
Birunthan Mohanathas 8b9f7e5b00 Implement initial, experimental BrowserView API
Right now, `<webview>` is the only way to embed additional content in a
`BrowserWindow`. Unfortunately `<webview>` suffers from a [number of
problems](https://github.com/electron/electron/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3Awebview%20).
To make matters worse, many of these are upstream Chromium bugs instead
of Electron-specific bugs.

For us at [Figma](https://www.figma.com), the main issue is very slow
performance.

Despite the upstream improvements to `<webview>` through the OOPIF work, it is
probable that there will continue to be `<webview>`-specific bugs in the
future.

Therefore, this introduces a `<webview>` alternative to called `BrowserView`,
which...

- is a thin wrapper around `api::WebContents` (so bugs in `BrowserView` will
  likely also be bugs in `BrowserWindow` web contents)

- is instantiated in the main process like `BrowserWindow` (and unlike
  `<webview>`, which lives in the DOM of a `BrowserWindow` web contents)

- needs to be added to a `BrowserWindow` to display something on the screen

This implements the most basic API. The API is expected to evolve and change in
the near future and has consequently been marked as experimental. Please do not
use this API in production unless you are prepared to deal with breaking
changes.

In the future, we will want to change the API to support multiple
`BrowserView`s per window. We will also want to consider z-ordering
auto-resizing, and possibly even nested views.
2017-04-13 01:27:27 +03:00
..
api Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
lib
loader request for pdf resource from the webui 2017-03-14 00:26:27 +05:30
mac Revert "Disable Show Tab Bar menu item on macOS Sierrra" 2017-03-29 13:50:56 +02:00
net Merge pull request #9076 from electron/cleanup-cpp 2017-04-03 08:30:08 -07:00
osr Remove redundant calls to smart pointer's get method. 2017-03-30 22:22:40 +02:00
resources Enable per-monitor DPI 2017-04-11 15:17:15 +09:00
ui Fixed a couple of failing debug checks when calling Chromium APIs 2017-04-05 14:45:46 +02:00
atom_access_token_store.cc Create separate request context for geolocation service. 2017-03-19 01:11:55 +05:30
atom_access_token_store.h Create separate request context for geolocation service. 2017-03-19 01:11:55 +05:30
atom_blob_reader.cc
atom_blob_reader.h
atom_browser_client.cc allowDisplayingInsecureContent is removed by Chrome 2017-02-06 10:34:29 -08:00
atom_browser_client.h Signature of OnCreateWindow has changed 2017-02-06 10:34:28 -08:00
atom_browser_context.cc StreamManager class is no longer required. 2017-03-14 00:26:27 +05:30
atom_browser_context.h StreamManager class is no longer required. 2017-03-14 00:26:27 +05:30
atom_browser_main_parts.cc Make Archive thread safe 2017-03-20 12:52:46 -07:00
atom_browser_main_parts.h node::Environment should be destroyed before AtomBindings 2017-03-20 13:01:28 -07:00
atom_browser_main_parts_mac.mm
atom_browser_main_parts_posix.cc
atom_download_manager_delegate.cc Add DialogSettings helper struct 2017-02-09 10:13:11 -08:00
atom_download_manager_delegate.h
atom_javascript_dialog_manager.cc Add support for checkbox with dialog.showMessageBox 2017-02-09 09:03:54 -08:00
atom_javascript_dialog_manager.h Add support for checkbox with dialog.showMessageBox 2017-02-09 09:03:54 -08:00
atom_permission_manager.cc
atom_permission_manager.h
atom_quota_permission_context.cc
atom_quota_permission_context.h
atom_resource_dispatcher_host_delegate.cc address review comments 2017-03-14 00:26:27 +05:30
atom_resource_dispatcher_host_delegate.h address review comments 2017-03-14 00:26:27 +05:30
atom_speech_recognition_manager_delegate.cc
atom_speech_recognition_manager_delegate.h
atom_web_ui_controller_factory.cc request for pdf resource from the webui 2017-03-14 00:26:27 +05:30
atom_web_ui_controller_factory.h move pdfviewer ui data source to separate file 2017-03-14 00:25:59 +05:30
auto_updater.cc
auto_updater.h
auto_updater_mac.mm Fix namespace comments. 2017-03-29 20:47:41 +02:00
bridge_task_runner.cc
bridge_task_runner.h
browser.cc Add IsEmpty helper and remove GetInstance public usage 2017-04-11 09:09:17 -07:00
browser.h Avoid unnecessary copy of parameters. 2017-03-29 22:06:07 +02:00
browser_linux.cc Add GetWindows helper that returns a vector 2017-04-11 09:09:17 -07:00
browser_mac.mm Add GetWindows helper that returns a vector 2017-04-11 09:09:17 -07:00
browser_observer.h
browser_win.cc Fixed a couple of failing debug checks when calling Chromium APIs 2017-04-05 14:45:46 +02:00
common_web_contents_delegate.cc Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
common_web_contents_delegate.h CommonWebContentsDelegate::DestroyWebContents => ResetManagedWebContents 2017-03-22 07:30:36 +05:30
common_web_contents_delegate_mac.mm
common_web_contents_delegate_views.cc
javascript_environment.cc Clean up node environment on exit in main process 2017-03-02 17:19:00 +09:00
javascript_environment.h Fix cpplint warnings 2017-03-02 17:26:15 +09:00
login_handler.cc
login_handler.h
native_browser_view.cc Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_browser_view.h Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_browser_view_mac.h Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_browser_view_mac.mm Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_browser_view_views.cc Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_browser_view_views.h Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_window.cc Add GetWindows helper that returns a vector 2017-04-11 09:09:17 -07:00
native_window.h Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_window_mac.h Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_window_mac.mm Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_window_observer.h Remove unused include 2017-03-03 14:11:09 -08:00
native_window_views.cc Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_window_views.h Implement initial, experimental BrowserView API 2017-04-13 01:27:27 +03:00
native_window_views_win.cc Fix maximize --> unmaximize positioning issue 2016-11-22 16:07:05 +11:00
node_debugger.cc Replace "size()" with "empty()". 2017-03-30 21:59:18 +02:00
node_debugger.h
relauncher.cc
relauncher.h
relauncher_linux.cc
relauncher_mac.cc
relauncher_win.cc
render_process_preferences.cc
render_process_preferences.h
unresponsive_suppressor.cc
unresponsive_suppressor.h
web_contents_permission_helper.cc Lines should be <= 80 characters. 2017-03-31 20:09:13 +02:00
web_contents_permission_helper.h
web_contents_preferences.cc Add nodeIntegrationInWorker option 2017-03-20 12:52:46 -07:00
web_contents_preferences.h Make int converter helper an instance method 2017-02-07 09:13:42 -08:00
web_contents_zoom_controller.cc track host zoom levels with HostZoomMap 2017-03-08 19:03:43 +05:30
web_contents_zoom_controller.h track host zoom levels with HostZoomMap 2017-03-08 19:03:43 +05:30
web_dialog_helper.cc Should override the virtual destructor. 2017-03-30 23:19:43 +02:00
web_dialog_helper.h
web_view_guest_delegate.cc code cleanup 2017-02-12 01:48:24 +05:30
web_view_guest_delegate.h map webframe zoom api to use HostZoomMap 2017-02-12 00:49:17 +05:30
web_view_manager.cc
web_view_manager.h
window_list.cc Add IsEmpty helper and remove GetInstance public usage 2017-04-11 09:09:17 -07:00
window_list.h Add IsEmpty helper and remove GetInstance public usage 2017-04-11 09:09:17 -07:00
window_list_observer.h