OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 var embedder = {}; | 5 var embedder = {}; |
6 | 6 |
7 // TODO(lfg) Move these functions to a common js. | 7 // TODO(lfg) Move these functions to a common js. |
8 embedder.setUp_ = function(config) { | 8 embedder.setUp_ = function(config) { |
9 if (!config || !config.testServer) { | 9 if (!config || !config.testServer) { |
10 return; | 10 return; |
11 } | 11 } |
12 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; | 12 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; |
13 embedder.closeSocketURL = embedder.baseGuestURL + '/close-socket'; | 13 embedder.closeSocketURL = embedder.baseGuestURL + '/close-socket'; |
14 embedder.emptyGuestURL = embedder.baseGuestURL + '/empty_guest.html'; | 14 embedder.emptyGuestURL = embedder.baseGuestURL + '/empty_guest.html'; |
15 embedder.noReferrerGuestURL = | 15 embedder.noReferrerGuestURL = |
16 embedder.baseGuestURL + '/guest_noreferrer.html'; | 16 embedder.baseGuestURL + '/guest_noreferrer.html'; |
| 17 embedder.detectUserAgentURL = embedder.baseGuestURL + '/detect-user-agent'; |
17 embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect'; | 18 embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect'; |
18 embedder.redirectGuestURLDest = | 19 embedder.redirectGuestURLDest = |
19 embedder.baseGuestURL + '/guest_redirect.html'; | 20 embedder.baseGuestURL + '/guest_redirect.html'; |
20 embedder.windowOpenGuestURL = embedder.baseGuestURL + '/guest.html'; | 21 embedder.windowOpenGuestURL = embedder.baseGuestURL + '/guest.html'; |
21 }; | 22 }; |
22 | 23 |
23 window.runTest = function(testName) { | 24 window.runTest = function(testName) { |
24 if (!embedder.test.testList[testName]) { | 25 if (!embedder.test.testList[testName]) { |
25 window.console.warn('Incorrect testName: ' + testName); | 26 window.console.warn('Incorrect testName: ' + testName); |
26 embedder.test.fail(); | 27 embedder.test.fail(); |
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1542 // webview. | 1543 // webview. |
1543 function testWebRequestAPI() { | 1544 function testWebRequestAPI() { |
1544 var webview = new WebView(); | 1545 var webview = new WebView(); |
1545 webview.request.onBeforeRequest.addListener(function(e) { | 1546 webview.request.onBeforeRequest.addListener(function(e) { |
1546 embedder.test.succeed(); | 1547 embedder.test.succeed(); |
1547 }, { urls: ['<all_urls>']}) ; | 1548 }, { urls: ['<all_urls>']}) ; |
1548 webview.src = embedder.windowOpenGuestURL; | 1549 webview.src = embedder.windowOpenGuestURL; |
1549 document.body.appendChild(webview); | 1550 document.body.appendChild(webview); |
1550 } | 1551 } |
1551 | 1552 |
| 1553 // This test verifies that the WebRequest API onBeforeSendHeaders event fires on |
| 1554 // webview and supports headers. This tests verifies that we can modify HTTP |
| 1555 // headers via the WebRequest API and those modified headers will be sent to the |
| 1556 // HTTP server. |
| 1557 function testWebRequestAPIWithHeaders() { |
| 1558 var webview = new WebView(); |
| 1559 var requestFilter = { |
| 1560 urls: ['<all_urls>'] |
| 1561 }; |
| 1562 var extraInfoSpec = ['requestHeaders', 'blocking']; |
| 1563 webview.request.onBeforeSendHeaders.addListener(function(details) { |
| 1564 var headers = details.requestHeaders; |
| 1565 for( var i = 0, l = headers.length; i < l; ++i ) { |
| 1566 if (headers[i].name == 'User-Agent') { |
| 1567 headers[i].value = 'foobar'; |
| 1568 break; |
| 1569 } |
| 1570 } |
| 1571 var blockingResponse = {}; |
| 1572 blockingResponse.requestHeaders = headers; |
| 1573 return blockingResponse; |
| 1574 }, requestFilter, extraInfoSpec); |
| 1575 |
| 1576 var loadstartCalled = false; |
| 1577 webview.addEventListener('loadstart', function(e) { |
| 1578 embedder.test.assertTrue(e.isTopLevel); |
| 1579 embedder.test.assertEq(embedder.detectUserAgentURL, e.url); |
| 1580 loadstartCalled = true; |
| 1581 }); |
| 1582 |
| 1583 webview.addEventListener('loadredirect', function(e) { |
| 1584 embedder.test.assertTrue(e.isTopLevel); |
| 1585 embedder.test.assertEq(embedder.detectUserAgentURL, |
| 1586 e.oldUrl.replace('127.0.0.1', 'localhost')); |
| 1587 embedder.test.assertEq(embedder.redirectGuestURLDest, |
| 1588 e.newUrl.replace('127.0.0.1', 'localhost')); |
| 1589 if (loadstartCalled) { |
| 1590 embedder.test.succeed(); |
| 1591 } else { |
| 1592 embedder.test.fail(); |
| 1593 } |
| 1594 }); |
| 1595 webview.src = embedder.detectUserAgentURL; |
| 1596 document.body.appendChild(webview); |
| 1597 } |
| 1598 |
1552 function testWebRequestAPIExistence() { | 1599 function testWebRequestAPIExistence() { |
1553 var apiPropertiesToCheck = [ | 1600 var apiPropertiesToCheck = [ |
1554 // Declarative WebRequest API. | 1601 // Declarative WebRequest API. |
1555 'onMessage', | 1602 'onMessage', |
1556 'onRequest', | 1603 'onRequest', |
1557 // WebRequest API. | 1604 // WebRequest API. |
1558 'onBeforeRequest', | 1605 'onBeforeRequest', |
1559 'onBeforeSendHeaders', | 1606 'onBeforeSendHeaders', |
1560 'onSendHeaders', | 1607 'onSendHeaders', |
1561 'onHeadersReceived', | 1608 'onHeadersReceived', |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1665 testPartitionRemovalAfterNavigationFails, | 1712 testPartitionRemovalAfterNavigationFails, |
1666 'testReassignSrcAttribute': testReassignSrcAttribute, | 1713 'testReassignSrcAttribute': testReassignSrcAttribute, |
1667 'testReload': testReload, | 1714 'testReload': testReload, |
1668 'testReloadAfterTerminate': testReloadAfterTerminate, | 1715 'testReloadAfterTerminate': testReloadAfterTerminate, |
1669 'testRemoveSrcAttribute': testRemoveSrcAttribute, | 1716 'testRemoveSrcAttribute': testRemoveSrcAttribute, |
1670 'testRemoveWebviewAfterNavigation': testRemoveWebviewAfterNavigation, | 1717 'testRemoveWebviewAfterNavigation': testRemoveWebviewAfterNavigation, |
1671 'testRemoveWebviewOnExit': testRemoveWebviewOnExit, | 1718 'testRemoveWebviewOnExit': testRemoveWebviewOnExit, |
1672 'testResizeWebviewResizesContent': testResizeWebviewResizesContent, | 1719 'testResizeWebviewResizesContent': testResizeWebviewResizesContent, |
1673 'testTerminateAfterExit': testTerminateAfterExit, | 1720 'testTerminateAfterExit': testTerminateAfterExit, |
1674 'testWebRequestAPI': testWebRequestAPI, | 1721 'testWebRequestAPI': testWebRequestAPI, |
| 1722 'testWebRequestAPIWithHeaders': testWebRequestAPIWithHeaders, |
1675 'testWebRequestAPIExistence': testWebRequestAPIExistence, | 1723 'testWebRequestAPIExistence': testWebRequestAPIExistence, |
1676 'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty | 1724 'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty |
1677 }; | 1725 }; |
1678 | 1726 |
1679 onload = function() { | 1727 onload = function() { |
1680 chrome.test.getConfig(function(config) { | 1728 chrome.test.getConfig(function(config) { |
1681 embedder.setUp_(config); | 1729 embedder.setUp_(config); |
1682 chrome.test.sendMessage('LAUNCHED'); | 1730 chrome.test.sendMessage('LAUNCHED'); |
1683 }); | 1731 }); |
1684 }; | 1732 }; |
OLD | NEW |