| Index: content/browser/browser_plugin/browser_plugin_guest.h
|
| diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
|
| index 9ccf861498b7c8b163bca8d3e201502a4defd319..4633e9edf376496bf6e7e2cbe5ca6c5eeb04d8d6 100644
|
| --- a/content/browser/browser_plugin/browser_plugin_guest.h
|
| +++ b/content/browser/browser_plugin/browser_plugin_guest.h
|
| @@ -102,9 +102,9 @@ class CONTENT_EXPORT BrowserPluginGuest
|
|
|
| static BrowserPluginGuest* CreateWithOpener(
|
| int instance_id,
|
| + bool has_render_view,
|
| WebContentsImpl* web_contents,
|
| - BrowserPluginGuest* opener,
|
| - bool has_render_view);
|
| + BrowserPluginGuest* opener);
|
|
|
| // Called when the embedder WebContents is destroyed to give the
|
| // BrowserPluginGuest an opportunity to clean up after itself.
|
| @@ -121,20 +121,10 @@ class CONTENT_EXPORT BrowserPluginGuest
|
| // within an embedder.
|
| int instance_id() const { return instance_id_; }
|
|
|
| - // Overrides factory for testing. Default (NULL) value indicates regular
|
| - // (non-test) environment.
|
| - static void set_factory_for_testing(BrowserPluginHostFactory* factory) {
|
| - BrowserPluginGuest::factory_ = factory;
|
| - }
|
| -
|
| bool OnMessageReceivedFromEmbedder(const IPC::Message& message);
|
|
|
| - void Initialize(WebContentsImpl* embedder_web_contents,
|
| - const BrowserPluginHostMsg_Attach_Params& params);
|
| -
|
| - void set_guest_hang_timeout_for_testing(const base::TimeDelta& timeout) {
|
| - guest_hang_timeout_ = timeout;
|
| - }
|
| + void Initialize(const BrowserPluginHostMsg_Attach_Params& params,
|
| + WebContentsImpl* embedder_web_contents);
|
|
|
| WebContentsImpl* embedder_web_contents() const {
|
| return embedder_web_contents_;
|
| @@ -250,7 +240,7 @@ class CONTENT_EXPORT BrowserPluginGuest
|
| virtual void SendMessageToEmbedder(IPC::Message* msg);
|
|
|
| // Returns whether the guest is attached to an embedder.
|
| - bool attached() const { return !!embedder_web_contents_; }
|
| + bool attached() const { return embedder_web_contents_ != NULL; }
|
|
|
| // Attaches this BrowserPluginGuest to the provided |embedder_web_contents|
|
| // and initializes the guest with the provided |params|. Attaching a guest
|
| @@ -297,6 +287,12 @@ class CONTENT_EXPORT BrowserPluginGuest
|
| bool should_allow,
|
| const std::string& user_input);
|
|
|
| + // Overrides factory for testing. Default (NULL) value indicates regular
|
| + // (non-test) environment.
|
| + static void set_factory_for_testing(BrowserPluginHostFactory* factory) {
|
| + BrowserPluginGuest::factory_ = factory;
|
| + }
|
| +
|
| private:
|
| class EmbedderWebContentsObserver;
|
| friend class TestBrowserPluginGuest;
|
| @@ -310,19 +306,35 @@ class CONTENT_EXPORT BrowserPluginGuest
|
| class PermissionRequest;
|
| class PointerLockRequest;
|
|
|
| + // Tracks the name, and target URL of the new window and whether or not it has
|
| + // changed since the WebContents has been created and before the new window
|
| + // has been attached to a BrowserPlugin. Once the first navigation commits, we
|
| + // no longer track this information.
|
| + struct NewWindowInfo {
|
| + bool changed;
|
| + GURL url;
|
| + std::string name;
|
| + NewWindowInfo(const GURL& url, const std::string& name) :
|
| + changed(false),
|
| + url(url),
|
| + name(name) {}
|
| + };
|
| +
|
| + // BrowserPluginGuest is a WebContentsObserver of |web_contents| and
|
| + // |web_contents| has to stay valid for the lifetime of BrowserPluginGuest.
|
| BrowserPluginGuest(int instance_id,
|
| + bool has_render_view,
|
| WebContentsImpl* web_contents,
|
| - BrowserPluginGuest* opener,
|
| - bool has_render_view);
|
| + BrowserPluginGuest* opener);
|
|
|
| // Destroy unattached new windows that have been opened by this
|
| // BrowserPluginGuest.
|
| void DestroyUnattachedWindows();
|
|
|
| - void LoadURLWithParams(WebContents* web_contents,
|
| - const GURL& url,
|
| + void LoadURLWithParams(const GURL& url,
|
| const Referrer& referrer,
|
| - PageTransition transition_type);
|
| + PageTransition transition_type,
|
| + WebContents* web_contents);
|
|
|
| // Bridge IDs correspond to a geolocation request. This method will remove
|
| // the bookkeeping for a particular geolocation request associated with the
|
| @@ -350,10 +362,10 @@ class CONTENT_EXPORT BrowserPluginGuest
|
|
|
| bool InAutoSizeBounds(const gfx::Size& size) const;
|
|
|
| - void RequestNewWindowPermission(WebContentsImpl* new_contents,
|
| - WindowOpenDisposition disposition,
|
| + void RequestNewWindowPermission(WindowOpenDisposition disposition,
|
| const gfx::Rect& initial_bounds,
|
| - bool user_gesture);
|
| + bool user_gesture,
|
| + WebContentsImpl* new_contents);
|
|
|
| // Message handlers for messages from embedder.
|
|
|
| @@ -505,19 +517,6 @@ class CONTENT_EXPORT BrowserPluginGuest
|
| gfx::Size max_auto_size_;
|
| gfx::Size min_auto_size_;
|
|
|
| - // Tracks the name, and target URL of the new window and whether or not it has
|
| - // changed since the WebContents has been created and before the new window
|
| - // has been attached to a BrowserPlugin. Once the first navigation commits, we
|
| - // no longer track this information.
|
| - struct NewWindowInfo {
|
| - bool changed;
|
| - GURL url;
|
| - std::string name;
|
| - NewWindowInfo(const GURL& url, const std::string& name) :
|
| - changed(false),
|
| - url(url),
|
| - name(name) {}
|
| - };
|
| typedef std::map<BrowserPluginGuest*, NewWindowInfo> PendingWindowMap;
|
| PendingWindowMap pending_new_windows_;
|
| base::WeakPtr<BrowserPluginGuest> opener_;
|
|
|