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

Side by Side Diff: content/browser/browser_plugin/browser_plugin_guest.h

Issue 336283002: Remove GuestWebContentsCreated (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simplify_creation
Patch Set: Addressed comments Created 6 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // A BrowserPluginGuest is the browser side of a browser <--> embedder 5 // A BrowserPluginGuest is the browser side of a browser <--> embedder
6 // renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder 6 // renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder
7 // renderer side of browser <--> embedder renderer communication. 7 // renderer side of browser <--> embedder renderer communication.
8 // 8 //
9 // BrowserPluginGuest lives on the UI thread of the browser process. Any 9 // BrowserPluginGuest lives on the UI thread of the browser process. Any
10 // messages about the guest render process that the embedder might be interested 10 // messages about the guest render process that the embedder might be interested
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 // The WebContents passed into the factory method here has not been 83 // The WebContents passed into the factory method here has not been
84 // initialized yet and so it does not yet hold a SiteInstance. 84 // initialized yet and so it does not yet hold a SiteInstance.
85 // BrowserPluginGuest must be constructed and installed into a WebContents 85 // BrowserPluginGuest must be constructed and installed into a WebContents
86 // prior to its initialization because WebContents needs to determine what 86 // prior to its initialization because WebContents needs to determine what
87 // type of WebContentsView to construct on initialization. The content 87 // type of WebContentsView to construct on initialization. The content
88 // embedder needs to be aware of |guest_site_instance| on the guest's 88 // embedder needs to be aware of |guest_site_instance| on the guest's
89 // construction and so we pass it in here. 89 // construction and so we pass it in here.
90 static BrowserPluginGuest* Create( 90 static BrowserPluginGuest* Create(
91 int instance_id, 91 int instance_id,
92 SiteInstance* guest_site_instance,
93 WebContentsImpl* web_contents, 92 WebContentsImpl* web_contents,
94 scoped_ptr<base::DictionaryValue> extra_params, 93 BrowserPluginGuestDelegate* delegate);
95 BrowserPluginGuest* opener);
96 94
97 // Returns whether the given WebContents is a BrowserPlugin guest. 95 // Returns whether the given WebContents is a BrowserPlugin guest.
98 static bool IsGuest(WebContentsImpl* web_contents); 96 static bool IsGuest(WebContentsImpl* web_contents);
99 97
100 // Returns whether the given RenderviewHost is a BrowserPlugin guest. 98 // Returns whether the given RenderviewHost is a BrowserPlugin guest.
101 static bool IsGuest(RenderViewHostImpl* render_view_host); 99 static bool IsGuest(RenderViewHostImpl* render_view_host);
102 100
103 // Returns a WeakPtr to this BrowserPluginGuest. 101 // Returns a WeakPtr to this BrowserPluginGuest.
104 base::WeakPtr<BrowserPluginGuest> AsWeakPtr(); 102 base::WeakPtr<BrowserPluginGuest> AsWeakPtr();
105 103
106 // Sets the lock state of the pointer. Returns true if |allowed| is true and 104 // Sets the lock state of the pointer. Returns true if |allowed| is true and
107 // the mouse has been successfully locked. 105 // the mouse has been successfully locked.
108 bool LockMouse(bool allowed); 106 bool LockMouse(bool allowed);
109 107
110 // Called when the embedder WebContents changes visibility. 108 // Called when the embedder WebContents changes visibility.
111 void EmbedderVisibilityChanged(bool visible); 109 void EmbedderVisibilityChanged(bool visible);
112 110
113 // Destroys the guest WebContents and all its associated state, including 111 // Destroys the guest WebContents and all its associated state, including
114 // this BrowserPluginGuest, and its new unattached windows. 112 // this BrowserPluginGuest, and its new unattached windows.
115 void Destroy(); 113 void Destroy();
116 114
115 // Creates a new guest WebContentsImpl with the provided |params| with |this|
116 // as the |opener|.
117 WebContentsImpl* CreateNewGuestWindow(
118 const WebContents::CreateParams& params);
119
117 // Returns the identifier that uniquely identifies a browser plugin guest 120 // Returns the identifier that uniquely identifies a browser plugin guest
118 // within an embedder. 121 // within an embedder.
119 int instance_id() const { return instance_id_; } 122 int instance_id() const { return instance_id_; }
120 123
121 bool OnMessageReceivedFromEmbedder(const IPC::Message& message); 124 bool OnMessageReceivedFromEmbedder(const IPC::Message& message);
122 125
123 WebContentsImpl* embedder_web_contents() const { 126 WebContentsImpl* embedder_web_contents() const {
124 return embedder_web_contents_; 127 return embedder_web_contents_;
125 } 128 }
126 129
127 // Returns the embedder's RenderWidgetHostView if it is available. 130 // Returns the embedder's RenderWidgetHostView if it is available.
128 // Returns NULL otherwise. 131 // Returns NULL otherwise.
129 RenderWidgetHostView* GetEmbedderRenderWidgetHostView(); 132 RenderWidgetHostView* GetEmbedderRenderWidgetHostView();
130 133
131 bool focused() const { return focused_; } 134 bool focused() const { return focused_; }
132 bool visible() const { return guest_visible_; } 135 bool visible() const { return guest_visible_; }
133 bool is_in_destruction() { return is_in_destruction_; } 136 bool is_in_destruction() { return is_in_destruction_; }
134 137
135 // Returns the BrowserPluginGuest that created this guest, if any.
136 BrowserPluginGuest* GetOpener() const;
137
138 void UpdateVisibility(); 138 void UpdateVisibility();
139 139
140 void CopyFromCompositingSurface( 140 void CopyFromCompositingSurface(
141 gfx::Rect src_subrect, 141 gfx::Rect src_subrect,
142 gfx::Size dst_size, 142 gfx::Size dst_size,
143 const base::Callback<void(bool, const SkBitmap&)>& callback); 143 const base::Callback<void(bool, const SkBitmap&)>& callback);
144 144
145 BrowserPluginGuestManager* GetBrowserPluginGuestManager() const; 145 BrowserPluginGuestManager* GetBrowserPluginGuestManager() const;
146 146
147 // WebContentsObserver implementation. 147 // WebContentsObserver implementation.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 // |message|. 183 // |message|.
184 static bool ShouldForwardToBrowserPluginGuest(const IPC::Message& message); 184 static bool ShouldForwardToBrowserPluginGuest(const IPC::Message& message);
185 gfx::Rect ToGuestRect(const gfx::Rect& rect); 185 gfx::Rect ToGuestRect(const gfx::Rect& rect);
186 186
187 void DragSourceEndedAt(int client_x, int client_y, int screen_x, 187 void DragSourceEndedAt(int client_x, int client_y, int screen_x,
188 int screen_y, blink::WebDragOperation operation); 188 int screen_y, blink::WebDragOperation operation);
189 189
190 // Called when the drag started by this guest ends at an OS-level. 190 // Called when the drag started by this guest ends at an OS-level.
191 void EndSystemDrag(); 191 void EndSystemDrag();
192 192
193 void set_delegate(BrowserPluginGuestDelegate* delegate) {
194 DCHECK(!delegate_);
195 delegate_ = delegate;
196 }
197
198 void RespondToPermissionRequest(int request_id, 193 void RespondToPermissionRequest(int request_id,
199 bool should_allow, 194 bool should_allow,
200 const std::string& user_input); 195 const std::string& user_input);
201 196
202 void PointerLockPermissionResponse(bool allow); 197 void PointerLockPermissionResponse(bool allow);
203 198
204 private: 199 private:
205 class EmbedderWebContentsObserver; 200 class EmbedderWebContentsObserver;
206 201
207 // BrowserPluginGuest is a WebContentsObserver of |web_contents| and 202 // BrowserPluginGuest is a WebContentsObserver of |web_contents| and
208 // |web_contents| has to stay valid for the lifetime of BrowserPluginGuest. 203 // |web_contents| has to stay valid for the lifetime of BrowserPluginGuest.
209 BrowserPluginGuest(int instance_id, 204 BrowserPluginGuest(int instance_id,
210 bool has_render_view, 205 bool has_render_view,
211 WebContentsImpl* web_contents); 206 WebContentsImpl* web_contents,
207 BrowserPluginGuestDelegate* delegate);
212 208
213 void WillDestroy(); 209 void WillDestroy();
214 210
215 void Initialize(const BrowserPluginHostMsg_Attach_Params& params, 211 void Initialize(const BrowserPluginHostMsg_Attach_Params& params,
216 WebContentsImpl* embedder_web_contents, 212 WebContentsImpl* embedder_web_contents,
217 const base::DictionaryValue& extra_params); 213 const base::DictionaryValue& extra_params);
218 214
219 bool InAutoSizeBounds(const gfx::Size& size) const; 215 bool InAutoSizeBounds(const gfx::Size& size) const;
220 216
221 // Message handlers for messages from embedder. 217 // Message handlers for messages from embedder.
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 void OnUpdateRect(const ViewHostMsg_UpdateRect_Params& params); 327 void OnUpdateRect(const ViewHostMsg_UpdateRect_Params& params);
332 328
333 // Forwards all messages from the |pending_messages_| queue to the embedder. 329 // Forwards all messages from the |pending_messages_| queue to the embedder.
334 void SendQueuedMessages(); 330 void SendQueuedMessages();
335 331
336 scoped_ptr<EmbedderWebContentsObserver> embedder_web_contents_observer_; 332 scoped_ptr<EmbedderWebContentsObserver> embedder_web_contents_observer_;
337 WebContentsImpl* embedder_web_contents_; 333 WebContentsImpl* embedder_web_contents_;
338 334
339 // An identifier that uniquely identifies a browser plugin guest within an 335 // An identifier that uniquely identifies a browser plugin guest within an
340 // embedder. 336 // embedder.
341 int instance_id_; 337 const int instance_id_;
342 float guest_device_scale_factor_; 338 float guest_device_scale_factor_;
343 gfx::Rect guest_window_rect_; 339 gfx::Rect guest_window_rect_;
344 gfx::Rect guest_screen_rect_; 340 gfx::Rect guest_screen_rect_;
345 bool focused_; 341 bool focused_;
346 bool mouse_locked_; 342 bool mouse_locked_;
347 bool pending_lock_request_; 343 bool pending_lock_request_;
348 bool guest_visible_; 344 bool guest_visible_;
349 bool guest_opaque_; 345 bool guest_opaque_;
350 bool embedder_visible_; 346 bool embedder_visible_;
351 std::string name_; 347 std::string name_;
(...skipping 25 matching lines...) Expand all
377 373
378 // Text input type states. 374 // Text input type states.
379 ui::TextInputType last_text_input_type_; 375 ui::TextInputType last_text_input_type_;
380 ui::TextInputMode last_input_mode_; 376 ui::TextInputMode last_input_mode_;
381 bool last_can_compose_inline_; 377 bool last_can_compose_inline_;
382 378
383 // This is a queue of messages that are destined to be sent to the embedder 379 // This is a queue of messages that are destined to be sent to the embedder
384 // once the guest is attached to a particular embedder. 380 // once the guest is attached to a particular embedder.
385 std::deque<linked_ptr<IPC::Message> > pending_messages_; 381 std::deque<linked_ptr<IPC::Message> > pending_messages_;
386 382
387 BrowserPluginGuestDelegate* delegate_; 383 BrowserPluginGuestDelegate* const delegate_;
388 384
389 // Weak pointer used to ask GeolocationPermissionContext about geolocation 385 // Weak pointer used to ask GeolocationPermissionContext about geolocation
390 // permission. 386 // permission.
391 base::WeakPtrFactory<BrowserPluginGuest> weak_ptr_factory_; 387 base::WeakPtrFactory<BrowserPluginGuest> weak_ptr_factory_;
392 388
393 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest); 389 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest);
394 }; 390 };
395 391
396 } // namespace content 392 } // namespace content
397 393
398 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_ 394 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698