| OLD | NEW |
| 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/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "content/common/browser_plugin_messages.h" | 10 #include "content/common/browser_plugin_messages.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 const char kHTMLForPartitionedPluginObject[] = | 31 const char kHTMLForPartitionedPluginObject[] = |
| 32 "<object id='browserplugin' width='640px' height='480px'" | 32 "<object id='browserplugin' width='640px' height='480px'" |
| 33 " src='foo' type='%s' partition='someid'>"; | 33 " src='foo' type='%s' partition='someid'>"; |
| 34 | 34 |
| 35 const char kHTMLForPartitionedPersistedPluginObject[] = | 35 const char kHTMLForPartitionedPersistedPluginObject[] = |
| 36 "<object id='browserplugin' width='640px' height='480px'" | 36 "<object id='browserplugin' width='640px' height='480px'" |
| 37 " src='foo' type='%s' partition='persist:someid'>"; | 37 " src='foo' type='%s' partition='persist:someid'>"; |
| 38 | 38 |
| 39 std::string GetHTMLForBrowserPluginObject() { | 39 std::string GetHTMLForBrowserPluginObject() { |
| 40 return StringPrintf(kHTMLForBrowserPluginObject, | 40 return StringPrintf(kHTMLForBrowserPluginObject, |
| 41 content::kBrowserPluginNewMimeType); | 41 content::kBrowserPluginMimeType); |
| 42 } | 42 } |
| 43 | 43 |
| 44 } // namespace | 44 } // namespace |
| 45 | 45 |
| 46 namespace content { | 46 namespace content { |
| 47 | 47 |
| 48 BrowserPluginTest::BrowserPluginTest() {} | 48 BrowserPluginTest::BrowserPluginTest() {} |
| 49 | 49 |
| 50 BrowserPluginTest::~BrowserPluginTest() {} | 50 BrowserPluginTest::~BrowserPluginTest() {} |
| 51 | 51 |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 ExecuteJavaScript(kCallReload); | 372 ExecuteJavaScript(kCallReload); |
| 373 EXPECT_TRUE(browser_plugin_manager()->sink().GetUniqueMessageMatching( | 373 EXPECT_TRUE(browser_plugin_manager()->sink().GetUniqueMessageMatching( |
| 374 BrowserPluginHostMsg_Reload::ID)); | 374 BrowserPluginHostMsg_Reload::ID)); |
| 375 } | 375 } |
| 376 | 376 |
| 377 | 377 |
| 378 // Verify that the 'partition' attribute on the browser plugin is parsed | 378 // Verify that the 'partition' attribute on the browser plugin is parsed |
| 379 // correctly. | 379 // correctly. |
| 380 TEST_F(BrowserPluginTest, PartitionAttribute) { | 380 TEST_F(BrowserPluginTest, PartitionAttribute) { |
| 381 std::string html = StringPrintf(kHTMLForPartitionedPluginObject, | 381 std::string html = StringPrintf(kHTMLForPartitionedPluginObject, |
| 382 content::kBrowserPluginNewMimeType); | 382 content::kBrowserPluginMimeType); |
| 383 LoadHTML(html.c_str()); | 383 LoadHTML(html.c_str()); |
| 384 std::string partition_value = ExecuteScriptAndReturnString( | 384 std::string partition_value = ExecuteScriptAndReturnString( |
| 385 "document.getElementById('browserplugin').partition"); | 385 "document.getElementById('browserplugin').partition"); |
| 386 EXPECT_STREQ("someid", partition_value.c_str()); | 386 EXPECT_STREQ("someid", partition_value.c_str()); |
| 387 | 387 |
| 388 html = StringPrintf(kHTMLForPartitionedPersistedPluginObject, | 388 html = StringPrintf(kHTMLForPartitionedPersistedPluginObject, |
| 389 content::kBrowserPluginNewMimeType); | 389 content::kBrowserPluginMimeType); |
| 390 LoadHTML(html.c_str()); | 390 LoadHTML(html.c_str()); |
| 391 partition_value = ExecuteScriptAndReturnString( | 391 partition_value = ExecuteScriptAndReturnString( |
| 392 "document.getElementById('browserplugin').partition"); | 392 "document.getElementById('browserplugin').partition"); |
| 393 EXPECT_STREQ("persist:someid", partition_value.c_str()); | 393 EXPECT_STREQ("persist:someid", partition_value.c_str()); |
| 394 | 394 |
| 395 // Verify that once HTML has defined a source and partition, we cannot change | 395 // Verify that once HTML has defined a source and partition, we cannot change |
| 396 // the partition anymore. | 396 // the partition anymore. |
| 397 ExecuteJavaScript( | 397 ExecuteJavaScript( |
| 398 "try {" | 398 "try {" |
| 399 " document.getElementById('browserplugin').partition = 'foo';" | 399 " document.getElementById('browserplugin').partition = 'foo';" |
| 400 " document.title = 'success';" | 400 " document.title = 'success';" |
| 401 "} catch (e) { document.title = e.message; }"); | 401 "} catch (e) { document.title = e.message; }"); |
| 402 std::string title = ExecuteScriptAndReturnString("document.title"); | 402 std::string title = ExecuteScriptAndReturnString("document.title"); |
| 403 EXPECT_STREQ( | 403 EXPECT_STREQ( |
| 404 "The object has already navigated, so its partition cannot be changed.", | 404 "The object has already navigated, so its partition cannot be changed.", |
| 405 title.c_str()); | 405 title.c_str()); |
| 406 | 406 |
| 407 // Load a browser tag without 'src' defined. | 407 // Load a browser tag without 'src' defined. |
| 408 html = StringPrintf(kHTMLForSourcelessPluginObject, | 408 html = StringPrintf(kHTMLForSourcelessPluginObject, |
| 409 content::kBrowserPluginNewMimeType); | 409 content::kBrowserPluginMimeType); |
| 410 LoadHTML(html.c_str()); | 410 LoadHTML(html.c_str()); |
| 411 | 411 |
| 412 // Ensure we don't parse just "persist:" string and return exception. | 412 // Ensure we don't parse just "persist:" string and return exception. |
| 413 ExecuteJavaScript( | 413 ExecuteJavaScript( |
| 414 "try {" | 414 "try {" |
| 415 " document.getElementById('browserplugin').partition = 'persist:';" | 415 " document.getElementById('browserplugin').partition = 'persist:';" |
| 416 " document.title = 'success';" | 416 " document.title = 'success';" |
| 417 "} catch (e) { document.title = e.message; }"); | 417 "} catch (e) { document.title = e.message; }"); |
| 418 title = ExecuteScriptAndReturnString("document.title"); | 418 title = ExecuteScriptAndReturnString("document.title"); |
| 419 EXPECT_STREQ("Invalid empty partition attribute.", title.c_str()); | 419 EXPECT_STREQ("Invalid empty partition attribute.", title.c_str()); |
| 420 } | 420 } |
| 421 | 421 |
| 422 // Test to verify that after the first navigation, the partition attribute | 422 // Test to verify that after the first navigation, the partition attribute |
| 423 // cannot be modified. | 423 // cannot be modified. |
| 424 TEST_F(BrowserPluginTest, ImmutableAttributesAfterNavigation) { | 424 TEST_F(BrowserPluginTest, ImmutableAttributesAfterNavigation) { |
| 425 std::string html = StringPrintf(kHTMLForSourcelessPluginObject, | 425 std::string html = StringPrintf(kHTMLForSourcelessPluginObject, |
| 426 content::kBrowserPluginNewMimeType); | 426 content::kBrowserPluginMimeType); |
| 427 LoadHTML(html.c_str()); | 427 LoadHTML(html.c_str()); |
| 428 | 428 |
| 429 ExecuteJavaScript( | 429 ExecuteJavaScript( |
| 430 "document.getElementById('browserplugin').partition = 'storage'"); | 430 "document.getElementById('browserplugin').partition = 'storage'"); |
| 431 std::string partition_value = ExecuteScriptAndReturnString( | 431 std::string partition_value = ExecuteScriptAndReturnString( |
| 432 "document.getElementById('browserplugin').partition"); | 432 "document.getElementById('browserplugin').partition"); |
| 433 EXPECT_STREQ("storage", partition_value.c_str()); | 433 EXPECT_STREQ("storage", partition_value.c_str()); |
| 434 | 434 |
| 435 std::string src_value = ExecuteScriptAndReturnString( | 435 std::string src_value = ExecuteScriptAndReturnString( |
| 436 "document.getElementById('browserplugin').src"); | 436 "document.getElementById('browserplugin').src"); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 EXPECT_STREQ( | 483 EXPECT_STREQ( |
| 484 "The object has already navigated, so its partition cannot be changed.", | 484 "The object has already navigated, so its partition cannot be changed.", |
| 485 title.c_str()); | 485 title.c_str()); |
| 486 | 486 |
| 487 partition_value = ExecuteScriptAndReturnString( | 487 partition_value = ExecuteScriptAndReturnString( |
| 488 "document.getElementById('browserplugin').partition"); | 488 "document.getElementById('browserplugin').partition"); |
| 489 EXPECT_STREQ("storage", partition_value.c_str()); | 489 EXPECT_STREQ("storage", partition_value.c_str()); |
| 490 } | 490 } |
| 491 | 491 |
| 492 } // namespace content | 492 } // namespace content |
| OLD | NEW |