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 Update files for Chrome 54 API changes 2017-01-19 09:05:59 +02:00
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 Update files for Chrome 54 API changes 2017-01-19 09:05:59 +02:00
atom_blob_reader.h create helper class to read blob data 2016-09-01 08:52:44 +05:30
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 Pass compilation on mac. 2016-08-11 20:59:06 +02:00
atom_browser_main_parts_posix.cc Modernize to C++11: NULL => nullptr. 2016-07-10 11:57:04 +02:00
atom_download_manager_delegate.cc Add DialogSettings helper struct 2017-02-09 10:13:11 -08:00
atom_download_manager_delegate.h Check download item save path before prompting 2016-08-25 14:34:48 -07:00
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 Implement RequestPermissions using request handler 2017-01-19 09:05:59 +02:00
atom_permission_manager.h Implement RequestPermissions using request handler 2017-01-19 09:05:59 +02:00
atom_quota_permission_context.cc browser: create quota permission context to allow quota request 2015-05-12 17:52:30 +05:30
atom_quota_permission_context.h browser: create quota permission context to allow quota request 2015-05-12 17:52:30 +05:30
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 Update to API changes of Chrome 52 2016-07-04 15:32:43 +09:00
atom_speech_recognition_manager_delegate.h Update to API changes of Chrome 52 2016-07-04 15:32:43 +09:00
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 Add the getFeedURL API for macOS and Windows 2016-07-15 00:04:48 +12:00
auto_updater.h Add the getFeedURL API for macOS and Windows 2016-07-15 00:04:48 +12:00
auto_updater_mac.mm Fix namespace comments. 2017-03-29 20:47:41 +02:00
bridge_task_runner.cc Fix API changes of Chrome 53 2016-09-14 16:22:43 +09:00
bridge_task_runner.h Fix API changes of Chrome 53 2016-09-14 16:22:43 +09:00
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 Send notification userInfo to app.ready, on macOS. 2016-08-31 17:17:44 -07:00
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 Check that window is an EventDispatchingWindow 2016-07-28 08:48:56 -07:00
common_web_contents_delegate_views.cc Handle keyboard events for WebContents that do not have owner window 2016-05-18 13:57:48 +09:00
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 fill net::URLRequest details on IO thread 2016-06-09 10:39:18 +05:30
login_handler.h fill net::URLRequest details on IO thread 2016-06-09 10:39:18 +05:30
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 Just use visible state in CanFocus delegate 2017-02-15 08:28:55 -08:00
node_debugger.cc Replace "size()" with "empty()". 2017-03-30 21:59:18 +02:00
node_debugger.h Update to API changes of Chrome 52 2016-07-04 15:32:43 +09:00
relauncher.cc Correctly quotes the argv on Windows 2016-06-02 21:10:39 +09:00
relauncher.h Correctly quotes the argv on Windows 2016-06-02 21:10:39 +09:00
relauncher_linux.cc Redirect relaunch process's stdout to /dev/null 2016-07-09 17:59:40 +09:00
relauncher_mac.cc Sort includes alphabetically 2016-08-26 15:30:02 -07:00
relauncher_win.cc Correctly quotes the argv on Windows 2016-06-02 21:10:39 +09:00
render_process_preferences.cc Add API to set render process preferences 2016-05-27 08:51:02 +09:00
render_process_preferences.h Add API to set render process preferences 2016-05-27 08:51:02 +09:00
unresponsive_suppressor.cc Replace DialogScope with UnresponsiveSuppressor 2016-07-11 15:29:03 +09:00
unresponsive_suppressor.h Replace DialogScope with UnresponsiveSuppressor 2016-07-11 15:29:03 +09:00
web_contents_permission_helper.cc Lines should be <= 80 characters. 2017-03-31 20:09:13 +02:00
web_contents_permission_helper.h session: allow providing permission to handle external protocols 2016-04-21 05:27:07 +05:30
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 Fix API changes of Chrome 53 2016-09-14 16:22:43 +09:00
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 Update files for Chrome 54 API changes 2017-01-19 09:05:59 +02:00
web_view_manager.h Restore original include location 2016-05-25 10:28:35 -07:00
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 Remove All Rights Reserved after GitHub copyright 2014-10-31 11:17:05 -07:00