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

Side by Side Diff: content/renderer/browser_plugin/browser_plugin_browsertest.cc

Issue 529203002: BrowserPlugin: Remove dependency upon ViewHostMsg_UpdateRect (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed unnecessary browsertest (there's a webview resize test) and IPC Created 6 years, 3 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
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "content/renderer/browser_plugin/browser_plugin_browsertest.h" 5 #include "content/renderer/browser_plugin/browser_plugin_browsertest.h"
6 6
7 #include "base/debug/leak_annotations.h" 7 #include "base/debug/leak_annotations.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 166 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
167 // Verify that the information in Attach is correct. 167 // Verify that the information in Attach is correct.
168 BrowserPluginHostMsg_Attach_Params params; 168 BrowserPluginHostMsg_Attach_Params params;
169 MockBrowserPlugin* browser_plugin = GetCurrentPluginWithAttachParams(&params); 169 MockBrowserPlugin* browser_plugin = GetCurrentPluginWithAttachParams(&params);
170 170
171 EXPECT_EQ(640, params.resize_guest_params.view_size.width()); 171 EXPECT_EQ(640, params.resize_guest_params.view_size.width());
172 EXPECT_EQ(480, params.resize_guest_params.view_size.height()); 172 EXPECT_EQ(480, params.resize_guest_params.view_size.height());
173 ASSERT_TRUE(browser_plugin); 173 ASSERT_TRUE(browser_plugin);
174 } 174 }
175 175
176 TEST_F(BrowserPluginTest, ResizeFlowControl) {
177 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
178 MockBrowserPlugin* browser_plugin = GetCurrentPlugin();
179 ASSERT_TRUE(browser_plugin);
180 int instance_id = browser_plugin->browser_plugin_instance_id();
181 // Send an UpdateRect to the BrowserPlugin to make sure the browser sees a
182 // resize related (SetAutoSize) message.
183 {
184 // We send a stale UpdateRect to the BrowserPlugin.
185 BrowserPluginMsg_UpdateRect_Params update_rect_params;
186 update_rect_params.view_size = gfx::Size(640, 480);
187 update_rect_params.is_resize_ack = true;
188 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
189 browser_plugin->OnMessageReceived(msg);
190 }
191
192 browser_plugin_manager()->sink().ClearMessages();
193
194 // Resize the browser plugin three times.
195
196 ExecuteJavaScript("document.getElementById('browserplugin').width = '641px'");
197 GetMainFrame()->view()->layout();
198 ProcessPendingMessages();
199
200 ExecuteJavaScript("document.getElementById('browserplugin').width = '642px'");
201 GetMainFrame()->view()->layout();
202 ProcessPendingMessages();
203
204 ExecuteJavaScript("document.getElementById('browserplugin').width = '643px'");
205 GetMainFrame()->view()->layout();
206 ProcessPendingMessages();
207
208 // Expect to see one resize messsage in the sink. BrowserPlugin will not issue
209 // subsequent resize requests until the first request is satisfied by the
210 // guest. The rest of the messages could be
211 // BrowserPluginHostMsg_UpdateGeometry msgs.
212 EXPECT_LE(1u, browser_plugin_manager()->sink().message_count());
213 for (size_t i = 0; i < browser_plugin_manager()->sink().message_count();
214 ++i) {
215 const IPC::Message* msg = browser_plugin_manager()->sink().GetMessageAt(i);
216 if (msg->type() != BrowserPluginHostMsg_ResizeGuest::ID)
217 EXPECT_EQ(msg->type(), BrowserPluginHostMsg_UpdateGeometry::ID);
218 }
219 const IPC::Message* msg =
220 browser_plugin_manager()->sink().GetUniqueMessageMatching(
221 BrowserPluginHostMsg_ResizeGuest::ID);
222 ASSERT_TRUE(msg);
223 BrowserPluginHostMsg_ResizeGuest::Param param;
224 BrowserPluginHostMsg_ResizeGuest::Read(msg, &param);
225 instance_id = param.a;
226 BrowserPluginHostMsg_ResizeGuest_Params params = param.b;
227 EXPECT_EQ(641, params.view_size.width());
228 EXPECT_EQ(480, params.view_size.height());
229
230 {
231 // We send a stale UpdateRect to the BrowserPlugin.
232 BrowserPluginMsg_UpdateRect_Params update_rect_params;
233 update_rect_params.view_size = gfx::Size(641, 480);
234 update_rect_params.is_resize_ack = true;
235 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
236 browser_plugin->OnMessageReceived(msg);
237 }
238 // Send the BrowserPlugin another UpdateRect, but this time with a size
239 // that matches the size of the container.
240 {
241 BrowserPluginMsg_UpdateRect_Params update_rect_params;
242 update_rect_params.view_size = gfx::Size(643, 480);
243 update_rect_params.is_resize_ack = true;
244 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
245 browser_plugin->OnMessageReceived(msg);
246 }
247 }
248
249 TEST_F(BrowserPluginTest, RemovePlugin) { 176 TEST_F(BrowserPluginTest, RemovePlugin) {
250 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 177 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
251 MockBrowserPlugin* browser_plugin = GetCurrentPlugin(); 178 MockBrowserPlugin* browser_plugin = GetCurrentPlugin();
252 ASSERT_TRUE(browser_plugin); 179 ASSERT_TRUE(browser_plugin);
253 180
254 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching( 181 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
255 BrowserPluginHostMsg_PluginDestroyed::ID)); 182 BrowserPluginHostMsg_PluginDestroyed::ID));
256 ExecuteJavaScript("x = document.getElementById('browserplugin'); " 183 ExecuteJavaScript("x = document.getElementById('browserplugin'); "
257 "x.parentNode.removeChild(x);"); 184 "x.parentNode.removeChild(x);");
258 ProcessPendingMessages(); 185 ProcessPendingMessages();
(...skipping 10 matching lines...) Expand all
269 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching( 196 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
270 BrowserPluginHostMsg_PluginDestroyed::ID)); 197 BrowserPluginHostMsg_PluginDestroyed::ID));
271 ExecuteJavaScript("x = document.getElementById('browserplugin'); " 198 ExecuteJavaScript("x = document.getElementById('browserplugin'); "
272 "x.parentNode.removeChild(x);"); 199 "x.parentNode.removeChild(x);");
273 ProcessPendingMessages(); 200 ProcessPendingMessages();
274 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching( 201 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
275 BrowserPluginHostMsg_PluginDestroyed::ID)); 202 BrowserPluginHostMsg_PluginDestroyed::ID));
276 } 203 }
277 204
278 } // namespace content 205 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698