Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7904)

Unified Diff: chrome/browser/guest_view/guest_view_base.h

Issue 464533002: Move guest_view to extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Small changes are made in guest_view_manager_unittest.cc Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/guest_view/guest_view.h ('k') | chrome/browser/guest_view/guest_view_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « chrome/browser/guest_view/guest_view.h ('k') | chrome/browser/guest_view/guest_view_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698