Add type for WebContents
authorCheng Zhao <zcbenz@gmail.com>
Wed, 24 Jun 2015 13:44:27 +0000 (21:44 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 24 Jun 2015 13:44:27 +0000 (21:44 +0800)
atom/browser/api/atom_api_web_contents.cc
atom/browser/api/atom_api_web_contents.h

index 027a749..6324492 100644 (file)
@@ -144,6 +144,7 @@ content::ServiceWorkerContext* GetServiceWorkerContext(
 
 WebContents::WebContents(brightray::InspectableWebContents* web_contents)
     : WebContents(web_contents->GetWebContents()) {
+  type_ = BROWSER_WINDOW;
   inspectable_web_contents_ = web_contents;
 }
 
@@ -154,6 +155,7 @@ WebContents::WebContents(content::WebContents* web_contents)
       guest_host_(nullptr),
       auto_size_enabled_(false),
       is_full_page_plugin_(false),
+      type_(REMOTE),
       inspectable_web_contents_(nullptr) {
   AttachAsUserData(web_contents);
 }
@@ -163,7 +165,8 @@ WebContents::WebContents(const mate::Dictionary& options)
       guest_opaque_(true),
       guest_host_(nullptr),
       auto_size_enabled_(false),
-      is_full_page_plugin_(false) {
+      is_full_page_plugin_(false),
+      type_(WEB_VIEW) {
   auto browser_context = AtomBrowserMainParts::Get()->browser_context();
   content::SiteInstance* site_instance = content::SiteInstance::CreateForURL(
       browser_context, GURL("chrome-guest://fake-host"));
index 741b039..d9e1e9c 100644 (file)
@@ -220,6 +220,12 @@ class WebContents : public mate::TrackableObject<WebContents>,
   void OnGpuProcessCrashed(base::TerminationStatus exit_code) override;
 
  private:
+  enum Type {
+    BROWSER_WINDOW,  // Used by BrowserWindow.
+    WEB_VIEW,  // Used by <webview>.
+    REMOTE,  // Thin wrap around an existing WebContents.
+  };
+
   // Called when received a message from renderer.
   void OnRendererMessage(const base::string16& channel,
                          const base::ListValue& args);
@@ -273,6 +279,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
   // Whether the guest view is inside a plugin document.
   bool is_full_page_plugin_;
 
+  // The type of current WebContents.
+  Type type_;
+
   // Current InspectableWebContents object, can be nullptr for WebContents of
   // devtools. It is a weak reference.
   brightray::InspectableWebContents* inspectable_web_contents_;