: guest_opaque_(true),
guest_host_(nullptr),
auto_size_enabled_(false),
- is_full_page_plugin_(false),
- type_(WEB_VIEW) {
+ is_full_page_plugin_(false) {
+ bool is_guest = false;
+ options.Get("isGuest", &is_guest);
+
+ type_ = is_guest ? WEB_VIEW : BROWSER_WINDOW;
+
auto browser_context = AtomBrowserMainParts::Get()->browser_context();
- content::SiteInstance* site_instance = content::SiteInstance::CreateForURL(
- browser_context, GURL("chrome-guest://fake-host"));
-
- content::WebContents::CreateParams params(browser_context, site_instance);
- params.guest_delegate = this;
- auto web_contents = content::WebContents::Create(params);
-
- NativeWindow* owner_window = nullptr;
- WebContents* embedder = nullptr;
- if (options.Get("embedder", &embedder) && embedder) {
- auto relay = NativeWindowRelay::FromWebContents(embedder->web_contents());
- if (relay)
- owner_window = relay->window.get();
+ content::WebContents* web_contents;
+ if (is_guest) {
+ content::SiteInstance* site_instance = content::SiteInstance::CreateForURL(
+ browser_context, GURL("chrome-guest://fake-host"));
+ content::WebContents::CreateParams params(browser_context, site_instance);
+ params.guest_delegate = this;
+ web_contents = content::WebContents::Create(params);
+ } else {
+ content::WebContents::CreateParams params(browser_context);
+ web_contents = content::WebContents::Create(params);
}
+ Observe(web_contents);
AttachAsUserData(web_contents);
- InitWithWebContents(web_contents, owner_window);
+ InitWithWebContents(web_contents);
inspectable_web_contents_ = managed_web_contents();
- Observe(GetWebContents());
+ if (is_guest) {
+ NativeWindow* owner_window = nullptr;
+ WebContents* embedder = nullptr;
+ if (options.Get("embedder", &embedder) && embedder) {
+ // New WebContents's owner_window is the embedder's owner_window.
+ auto relay = NativeWindowRelay::FromWebContents(embedder->web_contents());
+ if (relay)
+ owner_window = relay->window.get();
+ }
+ if (owner_window)
+ SetOwnerWindow(owner_window);
+ }
}
WebContents::~WebContents() {
}
void CommonWebContentsDelegate::InitWithWebContents(
- content::WebContents* web_contents,
- NativeWindow* owner_window) {
- owner_window_ = owner_window->GetWeakPtr();
+ content::WebContents* web_contents) {
web_contents->SetDelegate(this);
- NativeWindowRelay* relay = new NativeWindowRelay(owner_window_);
- web_contents->SetUserData(relay->key, relay);
-
printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
printing::PrintPreviewMessageHandler::CreateForWebContents(web_contents);
web_contents_->SetDelegate(this);
}
+void CommonWebContentsDelegate::SetOwnerWindow(NativeWindow* owner_window) {
+ content::WebContents* web_contents = GetWebContents();
+ owner_window_ = owner_window->GetWeakPtr();
+ NativeWindowRelay* relay = new NativeWindowRelay(owner_window_);
+ web_contents->SetUserData(relay->key, relay);
+}
+
void CommonWebContentsDelegate::DestroyWebContents() {
web_contents_.reset();
}
CommonWebContentsDelegate();
virtual ~CommonWebContentsDelegate();
- // Create a InspectableWebContents object and takes onwership of
+ // Creates a InspectableWebContents object and takes onwership of
// |web_contents|.
- void InitWithWebContents(content::WebContents* web_contents,
- NativeWindow* owner_window);
+ void InitWithWebContents(content::WebContents* web_contents);
+
+ // Set the window as owner window.
+ void SetOwnerWindow(NativeWindow* owner_window);
// Destroy the managed InspectableWebContents object.
void DestroyWebContents();