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

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

Issue 251593004: Remove SW rendering path code from BrowserPlugin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase after test file change commit Created 6 years, 7 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 #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 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 MockBrowserPlugin* browser_plugin = static_cast<MockBrowserPlugin*>( 185 MockBrowserPlugin* browser_plugin = static_cast<MockBrowserPlugin*>(
186 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 186 browser_plugin_manager()->GetBrowserPlugin(instance_id));
187 187
188 BrowserPluginMsg_Attach_ACK_Params attach_ack_params; 188 BrowserPluginMsg_Attach_ACK_Params attach_ack_params;
189 browser_plugin->OnAttachACK(instance_id, attach_ack_params); 189 browser_plugin->OnAttachACK(instance_id, attach_ack_params);
190 190
191 return browser_plugin; 191 return browser_plugin;
192 } 192 }
193 193
194 // This test verifies that an initial resize occurs when we instantiate the 194 // This test verifies that an initial resize occurs when we instantiate the
195 // browser plugin. This test also verifies that the browser plugin is waiting 195 // browser plugin.
196 // for a BrowserPluginMsg_UpdateRect in response. We issue an UpdateRect, and
197 // we observe an UpdateRect_ACK, with the |pending_damage_buffer_| reset,
198 // indiciating that the BrowserPlugin is not waiting for any more UpdateRects to
199 // satisfy its resize request.
200 TEST_F(BrowserPluginTest, InitialResize) { 196 TEST_F(BrowserPluginTest, InitialResize) {
201 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 197 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
202 // Verify that the information in Attach is correct. 198 // Verify that the information in Attach is correct.
203 BrowserPluginHostMsg_Attach_Params params; 199 BrowserPluginHostMsg_Attach_Params params;
204 MockBrowserPlugin* browser_plugin = GetCurrentPluginWithAttachParams(&params); 200 MockBrowserPlugin* browser_plugin = GetCurrentPluginWithAttachParams(&params);
205 201
206 EXPECT_EQ(640, params.resize_guest_params.view_rect.width()); 202 EXPECT_EQ(640, params.resize_guest_params.view_rect.width());
207 EXPECT_EQ(480, params.resize_guest_params.view_rect.height()); 203 EXPECT_EQ(480, params.resize_guest_params.view_rect.height());
208 ASSERT_TRUE(browser_plugin); 204 ASSERT_TRUE(browser_plugin);
209 // Now the browser plugin is expecting a UpdateRect resize.
210 int instance_id = browser_plugin->guest_instance_id();
211 EXPECT_TRUE(browser_plugin->pending_damage_buffer_.get());
212
213 // Send the BrowserPlugin an UpdateRect equal to its container size with
214 // the same damage buffer. That should clear |pending_damage_buffer_|.
215 BrowserPluginMsg_UpdateRect_Params update_rect_params;
216 update_rect_params.damage_buffer_sequence_id =
217 browser_plugin->damage_buffer_sequence_id_;
218 update_rect_params.view_size = gfx::Size(640, 480);
219 update_rect_params.scale_factor = 1.0f;
220 update_rect_params.is_resize_ack = true;
221 update_rect_params.needs_ack = true;
222 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
223 browser_plugin->OnMessageReceived(msg);
224 EXPECT_FALSE(browser_plugin->pending_damage_buffer_.get());
225 } 205 }
226 206
227 // This test verifies that all attributes (present at the time of writing) are 207 // This test verifies that all attributes (present at the time of writing) are
228 // parsed on initialization. However, this test does minimal checking of 208 // parsed on initialization. However, this test does minimal checking of
229 // correct behavior. 209 // correct behavior.
230 TEST_F(BrowserPluginTest, ParseAllAttributes) { 210 TEST_F(BrowserPluginTest, ParseAllAttributes) {
231 std::string html = base::StringPrintf(kHTMLForBrowserPluginWithAllAttributes, 211 std::string html = base::StringPrintf(kHTMLForBrowserPluginWithAllAttributes,
232 kBrowserPluginMimeType); 212 kBrowserPluginMimeType);
233 LoadHTML(html.c_str()); 213 LoadHTML(html.c_str());
234 bool result; 214 bool result;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 "document.getElementById('browserplugin').src"); 278 "document.getElementById('browserplugin').src");
299 EXPECT_EQ("bar", src_value); 279 EXPECT_EQ("bar", src_value);
300 } 280 }
301 } 281 }
302 282
303 TEST_F(BrowserPluginTest, ResizeFlowControl) { 283 TEST_F(BrowserPluginTest, ResizeFlowControl) {
304 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 284 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
305 MockBrowserPlugin* browser_plugin = GetCurrentPlugin(); 285 MockBrowserPlugin* browser_plugin = GetCurrentPlugin();
306 ASSERT_TRUE(browser_plugin); 286 ASSERT_TRUE(browser_plugin);
307 int instance_id = browser_plugin->guest_instance_id(); 287 int instance_id = browser_plugin->guest_instance_id();
308 EXPECT_TRUE(browser_plugin->pending_damage_buffer_.get()); 288 // Send an UpdateRect to the BrowserPlugin to make sure the browser sees a
309 // Send an UpdateRect to the BrowserPlugin to make it use the pending damage 289 // resize related (SetAutoSize) message.
310 // buffer.
311 { 290 {
312 // We send a stale UpdateRect to the BrowserPlugin. 291 // We send a stale UpdateRect to the BrowserPlugin.
313 BrowserPluginMsg_UpdateRect_Params update_rect_params; 292 BrowserPluginMsg_UpdateRect_Params update_rect_params;
314 update_rect_params.view_size = gfx::Size(640, 480); 293 update_rect_params.view_size = gfx::Size(640, 480);
315 update_rect_params.scale_factor = 1.0f; 294 update_rect_params.scale_factor = 1.0f;
316 update_rect_params.is_resize_ack = true; 295 update_rect_params.is_resize_ack = true;
317 update_rect_params.needs_ack = true;
318 // By sending |damage_buffer_sequence_id| back to BrowserPlugin on
319 // UpdateRect, then the BrowserPlugin knows that the browser process has
320 // received and has begun to use the |pending_damage_buffer_|.
321 update_rect_params.damage_buffer_sequence_id =
322 browser_plugin->damage_buffer_sequence_id_;
323 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params); 296 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
324 browser_plugin->OnMessageReceived(msg); 297 browser_plugin->OnMessageReceived(msg);
325 EXPECT_EQ(NULL, browser_plugin->pending_damage_buffer_.get());
326 } 298 }
327 299
328 browser_plugin_manager()->sink().ClearMessages(); 300 browser_plugin_manager()->sink().ClearMessages();
329 301
330 // Resize the browser plugin three times. 302 // Resize the browser plugin three times.
331 303
332 ExecuteJavaScript("document.getElementById('browserplugin').width = '641px'"); 304 ExecuteJavaScript("document.getElementById('browserplugin').width = '641px'");
333 GetMainFrame()->view()->layout(); 305 GetMainFrame()->view()->layout();
334 ProcessPendingMessages(); 306 ProcessPendingMessages();
335 307
(...skipping 17 matching lines...) Expand all
353 EXPECT_EQ(msg->type(), BrowserPluginHostMsg_UpdateGeometry::ID); 325 EXPECT_EQ(msg->type(), BrowserPluginHostMsg_UpdateGeometry::ID);
354 } 326 }
355 const IPC::Message* msg = 327 const IPC::Message* msg =
356 browser_plugin_manager()->sink().GetUniqueMessageMatching( 328 browser_plugin_manager()->sink().GetUniqueMessageMatching(
357 BrowserPluginHostMsg_ResizeGuest::ID); 329 BrowserPluginHostMsg_ResizeGuest::ID);
358 ASSERT_TRUE(msg); 330 ASSERT_TRUE(msg);
359 BrowserPluginHostMsg_ResizeGuest_Params params; 331 BrowserPluginHostMsg_ResizeGuest_Params params;
360 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 332 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
361 EXPECT_EQ(641, params.view_rect.width()); 333 EXPECT_EQ(641, params.view_rect.width());
362 EXPECT_EQ(480, params.view_rect.height()); 334 EXPECT_EQ(480, params.view_rect.height());
363 // This indicates that the BrowserPlugin has sent out a previous resize
364 // request but has not yet received an UpdateRect for that request.
365 EXPECT_TRUE(browser_plugin->pending_damage_buffer_.get());
366 335
367 { 336 {
368 // We send a stale UpdateRect to the BrowserPlugin. 337 // We send a stale UpdateRect to the BrowserPlugin.
369 BrowserPluginMsg_UpdateRect_Params update_rect_params; 338 BrowserPluginMsg_UpdateRect_Params update_rect_params;
370 update_rect_params.view_size = gfx::Size(641, 480); 339 update_rect_params.view_size = gfx::Size(641, 480);
371 update_rect_params.scale_factor = 1.0f; 340 update_rect_params.scale_factor = 1.0f;
372 update_rect_params.is_resize_ack = true; 341 update_rect_params.is_resize_ack = true;
373 update_rect_params.needs_ack = true;
374 update_rect_params.damage_buffer_sequence_id =
375 browser_plugin->damage_buffer_sequence_id_;
376 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params); 342 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
377 browser_plugin->OnMessageReceived(msg); 343 browser_plugin->OnMessageReceived(msg);
378 // This tells us that the BrowserPlugin is still expecting another
379 // UpdateRect with the most recent size.
380 EXPECT_TRUE(browser_plugin->pending_damage_buffer_.get());
381 } 344 }
382 // Send the BrowserPlugin another UpdateRect, but this time with a size 345 // Send the BrowserPlugin another UpdateRect, but this time with a size
383 // that matches the size of the container. 346 // that matches the size of the container.
384 { 347 {
385 BrowserPluginMsg_UpdateRect_Params update_rect_params; 348 BrowserPluginMsg_UpdateRect_Params update_rect_params;
386 update_rect_params.view_size = gfx::Size(643, 480); 349 update_rect_params.view_size = gfx::Size(643, 480);
387 update_rect_params.scale_factor = 1.0f; 350 update_rect_params.scale_factor = 1.0f;
388 update_rect_params.is_resize_ack = true; 351 update_rect_params.is_resize_ack = true;
389 update_rect_params.needs_ack = true;
390 update_rect_params.damage_buffer_sequence_id =
391 browser_plugin->damage_buffer_sequence_id_;
392 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params); 352 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
393 browser_plugin->OnMessageReceived(msg); 353 browser_plugin->OnMessageReceived(msg);
394 // The BrowserPlugin has finally received an UpdateRect that satisifes
395 // its current size, and so it is happy.
396 EXPECT_FALSE(browser_plugin->pending_damage_buffer_.get());
397 } 354 }
398 } 355 }
399 356
400 TEST_F(BrowserPluginTest, RemovePlugin) { 357 TEST_F(BrowserPluginTest, RemovePlugin) {
401 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 358 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
402 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching( 359 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
403 BrowserPluginHostMsg_PluginDestroyed::ID)); 360 BrowserPluginHostMsg_PluginDestroyed::ID));
404 ExecuteJavaScript("x = document.getElementById('browserplugin'); " 361 ExecuteJavaScript("x = document.getElementById('browserplugin'); "
405 "x.parentNode.removeChild(x);"); 362 "x.parentNode.removeChild(x);");
406 ProcessPendingMessages(); 363 ProcessPendingMessages();
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 MockBrowserPlugin* browser_plugin = 544 MockBrowserPlugin* browser_plugin =
588 GetCurrentPluginWithAttachParams(&params); 545 GetCurrentPluginWithAttachParams(&params);
589 ASSERT_TRUE(browser_plugin); 546 ASSERT_TRUE(browser_plugin);
590 547
591 EXPECT_TRUE(params.auto_size_params.enable); 548 EXPECT_TRUE(params.auto_size_params.enable);
592 EXPECT_EQ(42, params.auto_size_params.min_size.width()); 549 EXPECT_EQ(42, params.auto_size_params.min_size.width());
593 EXPECT_EQ(43, params.auto_size_params.min_size.height()); 550 EXPECT_EQ(43, params.auto_size_params.min_size.height());
594 EXPECT_EQ(1337, params.auto_size_params.max_size.width()); 551 EXPECT_EQ(1337, params.auto_size_params.max_size.width());
595 EXPECT_EQ(1338, params.auto_size_params.max_size.height()); 552 EXPECT_EQ(1338, params.auto_size_params.max_size.height());
596 553
597 // Verify that we are waiting for the browser process to grab the new
598 // damage buffer.
599 EXPECT_TRUE(browser_plugin->pending_damage_buffer_.get());
600 // Disable autosize. AutoSize state will not be sent to the guest until 554 // Disable autosize. AutoSize state will not be sent to the guest until
601 // the guest has responded to the last resize request. 555 // the guest has responded to the last resize request.
602 ExecuteJavaScript(kDisableAutoSize); 556 ExecuteJavaScript(kDisableAutoSize);
603 ProcessPendingMessages(); 557 ProcessPendingMessages();
604 558
605 const IPC::Message* auto_size_msg = 559 const IPC::Message* auto_size_msg =
606 browser_plugin_manager()->sink().GetUniqueMessageMatching( 560 browser_plugin_manager()->sink().GetUniqueMessageMatching(
607 BrowserPluginHostMsg_SetAutoSize::ID); 561 BrowserPluginHostMsg_SetAutoSize::ID);
608 EXPECT_FALSE(auto_size_msg); 562 EXPECT_FALSE(auto_size_msg);
609 563
610 // Send the BrowserPlugin an UpdateRect equal to its |max_size| with 564 // Send the BrowserPlugin an UpdateRect equal to its |max_size|.
611 // the same damage buffer.
612 BrowserPluginMsg_UpdateRect_Params update_rect_params; 565 BrowserPluginMsg_UpdateRect_Params update_rect_params;
613 update_rect_params.damage_buffer_sequence_id =
614 browser_plugin->damage_buffer_sequence_id_;
615 update_rect_params.view_size = gfx::Size(1337, 1338); 566 update_rect_params.view_size = gfx::Size(1337, 1338);
616 update_rect_params.scale_factor = 1.0f; 567 update_rect_params.scale_factor = 1.0f;
617 update_rect_params.is_resize_ack = true; 568 update_rect_params.is_resize_ack = true;
618 update_rect_params.needs_ack = true;
619 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params); 569 BrowserPluginMsg_UpdateRect msg(instance_id, update_rect_params);
620 browser_plugin->OnMessageReceived(msg); 570 browser_plugin->OnMessageReceived(msg);
621 571
622 // Verify that the autosize state has been updated. 572 // Verify that the autosize state has been updated.
623 { 573 {
624 const IPC::Message* auto_size_msg = 574 const IPC::Message* auto_size_msg =
625 browser_plugin_manager()->sink().GetUniqueMessageMatching( 575 browser_plugin_manager()->sink().GetUniqueMessageMatching(
626 BrowserPluginHostMsg_UpdateRect_ACK::ID); 576 BrowserPluginHostMsg_SetAutoSize::ID);
627 ASSERT_TRUE(auto_size_msg); 577 ASSERT_TRUE(auto_size_msg);
628 578
629 int instance_id = 0; 579 int instance_id = 0;
630 BrowserPluginHostMsg_AutoSize_Params auto_size_params; 580 BrowserPluginHostMsg_AutoSize_Params auto_size_params;
631 BrowserPluginHostMsg_ResizeGuest_Params resize_params; 581 BrowserPluginHostMsg_ResizeGuest_Params resize_params;
632 BrowserPluginHostMsg_UpdateRect_ACK::Read(auto_size_msg, 582 BrowserPluginHostMsg_SetAutoSize::Read(auto_size_msg,
633 &instance_id, 583 &instance_id,
634 &auto_size_params, 584 &auto_size_params,
635 &resize_params); 585 &resize_params);
636 EXPECT_FALSE(auto_size_params.enable); 586 EXPECT_FALSE(auto_size_params.enable);
637 // These value are not populated (as an optimization) if autosize is 587 // These value are not populated (as an optimization) if autosize is
638 // disabled. 588 // disabled.
639 EXPECT_EQ(0, auto_size_params.min_size.width()); 589 EXPECT_EQ(0, auto_size_params.min_size.width());
640 EXPECT_EQ(0, auto_size_params.min_size.height()); 590 EXPECT_EQ(0, auto_size_params.min_size.height());
641 EXPECT_EQ(0, auto_size_params.max_size.width()); 591 EXPECT_EQ(0, auto_size_params.max_size.width());
642 EXPECT_EQ(0, auto_size_params.max_size.height()); 592 EXPECT_EQ(0, auto_size_params.max_size.height());
643 } 593 }
644 } 594 }
645 595
646 } // namespace content 596 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin_backing_store.cc ('k') | content/renderer/browser_plugin/mock_browser_plugin.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698