Implement window.open.
authorCheng Zhao <zcbenz@gmail.com>
Sat, 20 Apr 2013 05:56:01 +0000 (13:56 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Sat, 20 Apr 2013 05:56:01 +0000 (13:56 +0800)
browser/native_window.cc
browser/native_window.h

index 2dbcfd8..91e53b7 100644 (file)
@@ -107,6 +107,24 @@ content::WebContents* NativeWindow::GetWebContents() const {
   return inspectable_web_contents_->GetWebContents();
 }
 
+// Window opened by window.open.
+void NativeWindow::WebContentsCreated(
+    content::WebContents* source_contents,
+    int64 source_frame_id,
+    const string16& frame_name,
+    const GURL& target_url,
+    content::WebContents* new_contents) {
+  LOG(WARNING) << "Please use node-style Window API to create window, "
+                  "using window.open has very strict constrains.";
+
+  scoped_ptr<base::DictionaryValue> options(new base::DictionaryValue);
+  options->SetInteger(switches::kWidth, 800);
+  options->SetInteger(switches::kHeight, 600);
+
+  NativeWindow* window = Create(new_contents, options.get());
+  window->InitFromOptions(options.get());
+}
+
 void NativeWindow::Observe(int type,
                            const content::NotificationSource& source,
                            const content::NotificationDetails& details) {
index de12f0f..40be890 100644 (file)
@@ -101,6 +101,13 @@ class NativeWindow : public content::WebContentsDelegate,
     return inspectable_web_contents_.get();
   }
 
+  // Implementations of content::WebContentsDelegate.
+  virtual void WebContentsCreated(content::WebContents* source_contents,
+                                  int64 source_frame_id,
+                                  const string16& frame_name,
+                                  const GURL& target_url,
+                                  content::WebContents* new_contents) OVERRIDE;
+
   // Implementations of content::NotificationObserver
   virtual void Observe(int type,
                        const content::NotificationSource& source,