}
Observe(web_contents);
- InitWithWebContents(web_contents);
+ InitWithWebContents(web_contents, session->browser_context());
managed_web_contents()->GetView()->SetDelegate(this);
if (event.windowsKeyCode == ui::VKEY_ESCAPE && is_html_fullscreen()) {
// Escape exits tabbed fullscreen mode.
ExitFullscreenModeForTab(source);
- } else if (type_ == BROWSER_WINDOW) {
+ } else if (type_ == BROWSER_WINDOW && owner_window()) {
owner_window()->HandleKeyboardEvent(source, event);
} else if (type_ == WEB_VIEW && guest_delegate_) {
// Send the unhandled keyboard events back to the embedder.
}
void CommonWebContentsDelegate::InitWithWebContents(
- content::WebContents* web_contents) {
+ content::WebContents* web_contents,
+ AtomBrowserContext* browser_context) {
+ browser_context_ = browser_context;
web_contents->SetDelegate(this);
printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
namespace atom {
+class AtomBrowserContext;
class AtomJavaScriptDialogManager;
class NativeWindow;
class WebDialogHelper;
// Creates a InspectableWebContents object and takes onwership of
// |web_contents|.
- void InitWithWebContents(content::WebContents* web_contents);
+ void InitWithWebContents(content::WebContents* web_contents,
+ AtomBrowserContext* browser_context);
// Set the window as owner window.
void SetOwnerWindow(NativeWindow* owner_window);
scoped_ptr<AtomJavaScriptDialogManager> dialog_manager_;
scoped_refptr<DevToolsFileSystemIndexer> devtools_file_system_indexer_;
+ // Make sure BrowserContext is alwasys destroyed after WebContents.
+ scoped_refptr<AtomBrowserContext> browser_context_;
+
// The stored InspectableWebContents object.
// Notice that web_contents_ must be placed after dialog_manager_, so we can
// make sure web_contents_ is destroyed before dialog_manager_, otherwise a