CefLifeSpanHandler Methods |
The CefLifeSpanHandler type exposes the following members.
Name | Description | |
---|---|---|
Dispose | ||
DoClose |
Called when a browser has recieved a request to close. This may result
directly from a call to CefBrowserHost::*CloseBrowser() or indirectly if
the browser is parented to a top-level window created by CEF and the user
attempts to close that window (by clicking the 'X', for example). The
DoClose() method will be called after the JavaScript 'onunload' event has
been fired.
An application should handle top-level owner window close notifications by
calling CefBrowserHost::TryCloseBrowser() or
CefBrowserHost::CloseBrowser(false) instead of allowing the window to close
immediately (see the examples below). This gives CEF an opportunity to
process the 'onbeforeunload' event and optionally cancel the close before
DoClose() is called.
When windowed rendering is enabled CEF will internally create a window or
view to host the browser. In that case returning false from DoClose() will
send the standard close notification to the browser's top-level owner
window (e.g. WM_CLOSE on Windows, performClose: on OS X, "delete_event" on
Linux or CefWindowDelegate::CanClose() callback from Views). If the
browser's host window/view has already been destroyed (via view hierarchy
tear-down, for example) then DoClose() will not be called for that browser
since is no longer possible to cancel the close.
When windowed rendering is disabled returning false from DoClose() will
cause the browser object to be destroyed immediately.
If the browser's top-level owner window requires a non-standard close
notification then send that notification from DoClose() and return true.
The CefLifeSpanHandler::OnBeforeClose() method will be called after
DoClose() (if DoClose() is called) and immediately before the browser
object is destroyed. The application should only exit after OnBeforeClose()
has been called for all existing browsers.
The below examples describe what should happen during window close when the
browser is parented to an application-provided top-level window.
Example 1: Using CefBrowserHost::TryCloseBrowser(). This is recommended for
clients using standard close handling and windows created on the browser
process UI thread.
1. User clicks the window close button which sends a close notification to
the application's top-level window.
2. Application's top-level window receives the close notification and
calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
TryCloseBrowser() returns false so the client cancels the window close.
3. JavaScript 'onbeforeunload' handler executes and shows the close
confirmation dialog (which can be overridden via
CefJSDialogHandler::OnBeforeUnloadDialog()).
4. User approves the close.
5. JavaScript 'onunload' handler executes.
6. CEF sends a close notification to the application's top-level window
(because DoClose() returned false by default).
7. Application's top-level window receives the close notification and
calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
allows the window close.
8. Application's top-level window is destroyed.
9. Application's OnBeforeClose() handler is called and the browser object
is destroyed.
10. Application exits by calling CefQuitMessageLoop() if no other browsers
exist.
Example 2: Using CefBrowserHost::CloseBrowser(false) and implementing the
DoClose() callback. This is recommended for clients using non-standard
close handling or windows that were not created on the browser process UI
thread.
1. User clicks the window close button which sends a close notification to
the application's top-level window.
2. Application's top-level window receives the close notification and:
A. Calls CefBrowserHost::CloseBrowser(false).
B. Cancels the window close.
3. JavaScript 'onbeforeunload' handler executes and shows the close
confirmation dialog (which can be overridden via
CefJSDialogHandler::OnBeforeUnloadDialog()).
4. User approves the close.
5. JavaScript 'onunload' handler executes.
6. Application's DoClose() handler is called. Application will:
A. Set a flag to indicate that the next close attempt will be allowed.
B. Return false.
7. CEF sends an close notification to the application's top-level window.
8. Application's top-level window receives the close notification and
allows the window to close based on the flag from #6B.
9. Application's top-level window is destroyed.
10. Application's OnBeforeClose() handler is called and the browser object
is destroyed.
11. Application exits by calling CefQuitMessageLoop() if no other browsers
exist.
| |
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
Finalize | (Overrides ObjectFinalize.) | |
GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
OnAfterCreated |
Called after a new browser is created. This callback will be the first
notification that references |browser|.
| |
OnBeforeClose |
Called just before a browser is destroyed. Release all references to the
browser object and do not attempt to execute any methods on the browser
object after this callback returns. This callback will be the last
notification that references |browser|. See DoClose() documentation for
additional usage information.
| |
OnBeforePopup |
Called on the IO thread before a new popup browser is created. The
|browser| and |frame| values represent the source of the popup request. The
|target_url| and |target_frame_name| values indicate where the popup
browser should navigate and may be empty if not specified with the request.
The |target_disposition| value indicates where the user intended to open
the popup (e.g. current tab, new tab, etc). The |user_gesture| value will
be true if the popup was opened via explicit user gesture (e.g. clicking a
link) or false if the popup opened automatically (e.g. via the
DomContentLoaded event). The |popupFeatures| structure contains additional
information about the requested popup window. To allow creation of the
popup browser optionally modify |windowInfo|, |client|, |settings| and
|no_javascript_access| and return false. To cancel creation of the popup
browser return true. The |client| and |settings| values will default to the
source browser's values. If the |no_javascript_access| value is set to
false the new browser will not be scriptable and may not be hosted in the
same renderer process as the source browser. Any modifications to
|windowInfo| will be ignored if the parent browser is wrapped in a
CefBrowserView.
| |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Name | Description | |
---|---|---|
MethodInvoke |
Calls the object method by name.
(Defined by ObjectEx.) | |
PropertyGet(String, Object, Boolean) | Overloaded.
Gets the value of the object property by name.
(Defined by ObjectEx.) | |
PropertyGetT(String, Object, Boolean) | Overloaded.
Gets the value of the object property by name.
(Defined by ObjectEx.) | |
PropertySet |
Sets the value of the object property by name.
(Defined by ObjectEx.) |