Index: chrome/browser/guest_view/guest_view_base.h |
diff --git a/chrome/browser/guest_view/guest_view_base.h b/chrome/browser/guest_view/guest_view_base.h |
deleted file mode 100644 |
index cbcf9cf0faf32034d31b9ae210e80d73795282f2..0000000000000000000000000000000000000000 |
--- a/chrome/browser/guest_view/guest_view_base.h |
+++ /dev/null |
@@ -1,331 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_BASE_H_ |
-#define CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_BASE_H_ |
- |
-#include <queue> |
- |
-#include "base/memory/weak_ptr.h" |
-#include "base/values.h" |
-#include "content/public/browser/browser_plugin_guest_delegate.h" |
-#include "content/public/browser/render_process_host_observer.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/browser/web_contents_delegate.h" |
-#include "content/public/browser/web_contents_observer.h" |
- |
-struct RendererContentSettingRules; |
- |
-// A GuestViewBase is the base class browser-side API implementation for a |
-// <*view> tag. GuestViewBase maintains an association between a guest |
-// WebContents and an embedder WebContents. It receives events issued from |
-// the guest and relays them to the embedder. GuestViewBase tracks the lifetime |
-// of its embedder render process until it is attached to a particular embedder |
-// WebContents. At that point, its lifetime is restricted in scope to the |
-// lifetime of its embedder WebContents. |
-class GuestViewBase : public content::BrowserPluginGuestDelegate, |
- public content::RenderProcessHostObserver, |
- public content::WebContentsDelegate, |
- public content::WebContentsObserver { |
- public: |
- class Event { |
- public: |
- Event(const std::string& name, scoped_ptr<base::DictionaryValue> args); |
- ~Event(); |
- |
- const std::string& name() const { return name_; } |
- |
- scoped_ptr<base::DictionaryValue> GetArguments(); |
- |
- private: |
- const std::string name_; |
- scoped_ptr<base::DictionaryValue> args_; |
- }; |
- |
- // Returns a *ViewGuest if this GuestView is of the given view type. |
- template <typename T> |
- T* As() { |
- if (IsViewType(T::Type)) |
- return static_cast<T*>(this); |
- |
- return NULL; |
- } |
- |
- typedef base::Callback<GuestViewBase*( |
- content::BrowserContext*, int)> GuestCreationCallback; |
- static void RegisterGuestViewType(const std::string& view_type, |
- const GuestCreationCallback& callback); |
- |
- static GuestViewBase* Create(content::BrowserContext* browser_context, |
- int guest_instance_id, |
- const std::string& view_type); |
- |
- static GuestViewBase* FromWebContents(content::WebContents* web_contents); |
- |
- static GuestViewBase* From(int embedder_process_id, int instance_id); |
- |
- static bool IsGuest(content::WebContents* web_contents); |
- |
- virtual const char* GetViewType() const = 0; |
- |
- // This method is called after the guest has been attached to an embedder and |
- // suspended resource loads have been resumed. |
- // |
- // This method can be overriden by subclasses. This gives the derived class |
- // an opportunity to perform setup actions after attachment. |
- virtual void DidAttachToEmbedder() {} |
- |
- // This method is called after this GuestViewBase has been initiated. |
- // |
- // This gives the derived class an opportunity to perform additional |
- // initialization. |
- virtual void DidInitialize() {} |
- |
- // This method is called when the initial set of frames within the page have |
- // completed loading. |
- virtual void DidStopLoading() {} |
- |
- // This method is called when the guest's embedder WebContents has been |
- // destroyed and the guest will be destroyed shortly. |
- // |
- // This gives the derived class an opportunity to perform some cleanup prior |
- // to destruction. |
- virtual void EmbedderDestroyed() {} |
- |
- // This method is called when the guest WebContents has been destroyed. This |
- // object will be destroyed after this call returns. |
- // |
- // This gives the derived class an opportunity to perform some cleanup. |
- virtual void GuestDestroyed() {} |
- |
- // This method is invoked when the guest RenderView is ready, e.g. because we |
- // recreated it after a crash. |
- // |
- // This gives the derived class an opportunity to perform some initialization |
- // work. |
- virtual void GuestReady() {} |
- |
- // This method is invoked when the contents auto-resized to give the container |
- // an opportunity to match it if it wishes. |
- // |
- // This gives the derived class an opportunity to inform its container element |
- // or perform other actions. |
- virtual void GuestSizeChangedDueToAutoSize(const gfx::Size& old_size, |
- const gfx::Size& new_size) {} |
- |
- // This method queries whether autosize is supported for this particular view. |
- // By default, autosize is not supported. Derived classes can override this |
- // behavior to support autosize. |
- virtual bool IsAutoSizeSupported() const; |
- |
- // This method queries whether drag-and-drop is enabled for this particular |
- // view. By default, drag-and-drop is disabled. Derived classes can override |
- // this behavior to enable drag-and-drop. |
- virtual bool IsDragAndDropEnabled() const; |
- |
- // This method is called immediately before suspended resource loads have been |
- // resumed on attachment to an embedder. |
- // |
- // This method can be overriden by subclasses. This gives the derived class |
- // an opportunity to perform setup actions before attachment. |
- virtual void WillAttachToEmbedder() {} |
- |
- // This method is called when the guest WebContents is about to be destroyed. |
- // |
- // This gives the derived class an opportunity to perform some cleanup prior |
- // to destruction. |
- virtual void WillDestroy() {} |
- |
- // This method is to be implemented by the derived class. Access to guest |
- // views are determined by the availability of the internal extension API |
- // used to implement the guest view. |
- // |
- // This should be the name of the API as it appears in the _api_features.json |
- // file. |
- virtual const char* GetAPINamespace() = 0; |
- |
- // This method is to be implemented by the derived class. Given a set of |
- // initialization parameters, a concrete subclass of GuestViewBase can |
- // create a specialized WebContents that it returns back to GuestViewBase. |
- typedef base::Callback<void(content::WebContents*)> |
- WebContentsCreatedCallback; |
- virtual void CreateWebContents( |
- const std::string& embedder_extension_id, |
- int embedder_render_process_id, |
- const base::DictionaryValue& create_params, |
- const WebContentsCreatedCallback& callback) = 0; |
- |
- // This creates a WebContents and initializes |this| GuestViewBase to use the |
- // newly created WebContents. |
- void Init(const std::string& embedder_extension_id, |
- content::WebContents* embedder_web_contents, |
- const base::DictionaryValue& create_params, |
- const WebContentsCreatedCallback& callback); |
- |
- void InitWithWebContents( |
- const std::string& embedder_extension_id, |
- int embedder_render_process_id, |
- content::WebContents* guest_web_contents); |
- |
- bool IsViewType(const char* const view_type) const { |
- return !strcmp(GetViewType(), view_type); |
- } |
- |
- // Toggles autosize mode for this GuestView. |
- void SetAutoSize(bool enabled, |
- const gfx::Size& min_size, |
- const gfx::Size& max_size); |
- |
- base::WeakPtr<GuestViewBase> AsWeakPtr(); |
- |
- bool initialized() const { return initialized_; } |
- |
- content::WebContents* embedder_web_contents() const { |
- return embedder_web_contents_; |
- } |
- |
- // Returns the guest WebContents. |
- content::WebContents* guest_web_contents() const { |
- return web_contents(); |
- } |
- |
- // Returns the extra parameters associated with this GuestView passed |
- // in from JavaScript. |
- base::DictionaryValue* extra_params() const { |
- return extra_params_.get(); |
- } |
- |
- // Returns whether this guest has an associated embedder. |
- bool attached() const { return !!embedder_web_contents_; } |
- |
- // Returns the instance ID of the <*view> element. |
- int view_instance_id() const { return view_instance_id_; } |
- |
- // Returns the extension ID of the embedder. |
- const std::string& embedder_extension_id() const { |
- return embedder_extension_id_; |
- } |
- |
- // Returns whether this GuestView is embedded in an extension/app. |
- bool in_extension() const { return !embedder_extension_id_.empty(); } |
- |
- // Returns the user browser context of the embedder. |
- content::BrowserContext* browser_context() const { return browser_context_; } |
- |
- // Returns the embedder's process ID. |
- int embedder_render_process_id() const { return embedder_render_process_id_; } |
- |
- GuestViewBase* GetOpener() const { |
- return opener_.get(); |
- } |
- |
- void SetOpener(GuestViewBase* opener); |
- |
- // RenderProcessHostObserver implementation |
- virtual void RenderProcessExited(content::RenderProcessHost* host, |
- base::ProcessHandle handle, |
- base::TerminationStatus status, |
- int exit_code) OVERRIDE; |
- |
- // BrowserPluginGuestDelegate implementation. |
- virtual void Destroy() OVERRIDE FINAL; |
- virtual void DidAttach() OVERRIDE FINAL; |
- virtual void ElementSizeChanged(const gfx::Size& old_size, |
- const gfx::Size& new_size) OVERRIDE FINAL; |
- virtual int GetGuestInstanceID() const OVERRIDE; |
- virtual void GuestSizeChanged(const gfx::Size& old_size, |
- const gfx::Size& new_size) OVERRIDE FINAL; |
- virtual void RegisterDestructionCallback( |
- const DestructionCallback& callback) OVERRIDE FINAL; |
- virtual void WillAttach( |
- content::WebContents* embedder_web_contents, |
- const base::DictionaryValue& extra_params) OVERRIDE FINAL; |
- |
- // Dispatches an event |event_name| to the embedder with the |event| fields. |
- void DispatchEventToEmbedder(Event* event); |
- |
- protected: |
- GuestViewBase(content::BrowserContext* browser_context, |
- int guest_instance_id); |
- |
- virtual ~GuestViewBase(); |
- |
- private: |
- class EmbedderWebContentsObserver; |
- |
- void SendQueuedEvents(); |
- |
- void CompleteInit(const std::string& embedder_extension_id, |
- int embedder_render_process_id, |
- const WebContentsCreatedCallback& callback, |
- content::WebContents* guest_web_contents); |
- |
- static void RegisterGuestViewTypes(); |
- |
- // WebContentsObserver implementation. |
- virtual void DidStopLoading( |
- content::RenderViewHost* render_view_host) OVERRIDE FINAL; |
- virtual void RenderViewReady() OVERRIDE FINAL; |
- virtual void WebContentsDestroyed() OVERRIDE FINAL; |
- |
- // WebContentsDelegate implementation. |
- virtual bool ShouldFocusPageAfterCrash() OVERRIDE FINAL; |
- virtual bool PreHandleGestureEvent( |
- content::WebContents* source, |
- const blink::WebGestureEvent& event) OVERRIDE FINAL; |
- |
- content::WebContents* embedder_web_contents_; |
- std::string embedder_extension_id_; |
- int embedder_render_process_id_; |
- content::BrowserContext* browser_context_; |
- // |guest_instance_id_| is a profile-wide unique identifier for a guest |
- // WebContents. |
- const int guest_instance_id_; |
- // |view_instance_id_| is an identifier that's unique within a particular |
- // embedder RenderViewHost for a particular <*view> instance. |
- int view_instance_id_; |
- |
- bool initialized_; |
- |
- // This is a queue of Events that are destined to be sent to the embedder once |
- // the guest is attached to a particular embedder. |
- std::deque<linked_ptr<Event> > pending_events_; |
- |
- // The opener guest view. |
- base::WeakPtr<GuestViewBase> opener_; |
- |
- DestructionCallback destruction_callback_; |
- |
- // The extra parameters associated with this GuestView passed |
- // in from JavaScript. This will typically be the view instance ID, |
- // the API to use, and view-specific parameters. These parameters |
- // are passed along to new guests that are created from this guest. |
- scoped_ptr<base::DictionaryValue> extra_params_; |
- |
- scoped_ptr<EmbedderWebContentsObserver> embedder_web_contents_observer_; |
- |
- // The size of the container element. |
- gfx::Size element_size_; |
- |
- // The size of the guest content. Note: In autosize mode, the container |
- // element may not match the size of the guest. |
- gfx::Size guest_size_; |
- |
- // Indicates whether autosize mode is enabled or not. |
- bool auto_size_enabled_; |
- |
- // The maximum size constraints of the container element in autosize mode. |
- gfx::Size max_auto_size_; |
- |
- // The minimum size constraints of the container element in autosize mode. |
- gfx::Size min_auto_size_; |
- |
- // This is used to ensure pending tasks will not fire after this object is |
- // destroyed. |
- base::WeakPtrFactory<GuestViewBase> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(GuestViewBase); |
-}; |
- |
-#endif // CHROME_BROWSER_GUEST_VIEW_GUEST_VIEW_BASE_H_ |