Make sure BrowserContext is always destroyed after WebContents
This commit is contained in:
parent
242508e22f
commit
118afab67b
3 changed files with 11 additions and 4 deletions
|
@ -274,7 +274,7 @@ WebContents::WebContents(v8::Isolate* isolate,
|
||||||
}
|
}
|
||||||
|
|
||||||
Observe(web_contents);
|
Observe(web_contents);
|
||||||
InitWithWebContents(web_contents);
|
InitWithWebContents(web_contents, session->browser_context());
|
||||||
|
|
||||||
managed_web_contents()->GetView()->SetDelegate(this);
|
managed_web_contents()->GetView()->SetDelegate(this);
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ void WebContents::HandleKeyboardEvent(
|
||||||
if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen()) {
|
if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen()) {
|
||||||
// Escape exits tabbed fullscreen mode.
|
// Escape exits tabbed fullscreen mode.
|
||||||
ExitFullscreenModeForTab(source);
|
ExitFullscreenModeForTab(source);
|
||||||
} else if (type_ == BROWSER_WINDOW) {
|
} else if (type_ == BROWSER_WINDOW && owner_window()) {
|
||||||
owner_window()->HandleKeyboardEvent(source, event);
|
owner_window()->HandleKeyboardEvent(source, event);
|
||||||
} else if (type_ == WEB_VIEW && guest_delegate_) {
|
} else if (type_ == WEB_VIEW && guest_delegate_) {
|
||||||
// Send the unhandled keyboard events back to the embedder.
|
// Send the unhandled keyboard events back to the embedder.
|
||||||
|
|
|
@ -182,7 +182,9 @@ CommonWebContentsDelegate::~CommonWebContentsDelegate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommonWebContentsDelegate::InitWithWebContents(
|
void CommonWebContentsDelegate::InitWithWebContents(
|
||||||
content::WebContents* web_contents) {
|
content::WebContents* web_contents,
|
||||||
|
AtomBrowserContext* browser_context) {
|
||||||
|
browser_context_ = browser_context;
|
||||||
web_contents->SetDelegate(this);
|
web_contents->SetDelegate(this);
|
||||||
|
|
||||||
printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
|
printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
|
||||||
|
|
|
@ -19,6 +19,7 @@ using brightray::DevToolsFileSystemIndexer;
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
|
class AtomBrowserContext;
|
||||||
class AtomJavaScriptDialogManager;
|
class AtomJavaScriptDialogManager;
|
||||||
class NativeWindow;
|
class NativeWindow;
|
||||||
class WebDialogHelper;
|
class WebDialogHelper;
|
||||||
|
@ -33,7 +34,8 @@ class CommonWebContentsDelegate
|
||||||
|
|
||||||
// Creates a InspectableWebContents object and takes onwership of
|
// Creates a InspectableWebContents object and takes onwership of
|
||||||
// |web_contents|.
|
// |web_contents|.
|
||||||
void InitWithWebContents(content::WebContents* web_contents);
|
void InitWithWebContents(content::WebContents* web_contents,
|
||||||
|
AtomBrowserContext* browser_context);
|
||||||
|
|
||||||
// Set the window as owner window.
|
// Set the window as owner window.
|
||||||
void SetOwnerWindow(NativeWindow* owner_window);
|
void SetOwnerWindow(NativeWindow* owner_window);
|
||||||
|
@ -145,6 +147,9 @@ class CommonWebContentsDelegate
|
||||||
scoped_ptr<AtomJavaScriptDialogManager> dialog_manager_;
|
scoped_ptr<AtomJavaScriptDialogManager> dialog_manager_;
|
||||||
scoped_refptr<DevToolsFileSystemIndexer> devtools_file_system_indexer_;
|
scoped_refptr<DevToolsFileSystemIndexer> devtools_file_system_indexer_;
|
||||||
|
|
||||||
|
// Make sure BrowserContext is alwasys destroyed after WebContents.
|
||||||
|
scoped_refptr<AtomBrowserContext> browser_context_;
|
||||||
|
|
||||||
// The stored InspectableWebContents object.
|
// The stored InspectableWebContents object.
|
||||||
// Notice that web_contents_ must be placed after dialog_manager_, so we can
|
// Notice that web_contents_ must be placed after dialog_manager_, so we can
|
||||||
// make sure web_contents_ is destroyed before dialog_manager_, otherwise a
|
// make sure web_contents_ is destroyed before dialog_manager_, otherwise a
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue