Chromium Code Reviews| 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 var util = {}; | 5 var util = {}; |
| 6 var embedder = {}; | 6 var embedder = {}; |
| 7 embedder.baseGuestURL = ''; | 7 embedder.baseGuestURL = ''; |
| 8 embedder.emptyGuestURL = ''; | 8 embedder.emptyGuestURL = ''; |
| 9 embedder.windowOpenGuestURL = ''; | 9 embedder.windowOpenGuestURL = ''; |
| 10 embedder.noReferrerGuestURL = ''; | 10 embedder.noReferrerGuestURL = ''; |
| 11 embedder.redirectGuestURL = ''; | 11 embedder.redirectGuestURL = ''; |
| 12 embedder.redirectGuestURLDest = ''; | 12 embedder.redirectGuestURLDest = ''; |
| 13 embedder.closeSocketURL = ''; | 13 embedder.closeSocketURL = ''; |
| 14 embedder.tests = {}; | 14 embedder.tests = {}; |
| 15 | 15 |
| 16 embedder.setUp_ = function(config) { | 16 embedder.setUp_ = function(config) { |
| 17 if (!config || !config.testServer) { | 17 if (!config || !config.testServer) { |
| 18 return; | 18 return; |
| 19 } | 19 } |
| 20 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; | 20 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; |
| 21 embedder.emptyGuestURL = embedder.baseGuestURL + | 21 embedder.emptyGuestURL = embedder.baseGuestURL + |
| 22 '/extensions/platform_apps/web_view/shim/empty_guest.html'; | 22 '/extensions/platform_apps/web_view/shim/empty_guest.html'; |
| 23 embedder.windowOpenGuestURL = embedder.baseGuestURL + | 23 embedder.windowOpenGuestURL = embedder.baseGuestURL + |
| 24 '/extensions/platform_apps/web_view/shim/guest.html'; | 24 '/extensions/platform_apps/web_view/shim/guest.html'; |
| 25 embedder.windowOpenGuestFromSameURL = embedder.baseGuestURL + | |
| 26 '/extensions/platform_apps/web_view/shim/guest_from_opener.html'; | |
| 25 embedder.noReferrerGuestURL = embedder.baseGuestURL + | 27 embedder.noReferrerGuestURL = embedder.baseGuestURL + |
| 26 '/extensions/platform_apps/web_view/shim/guest_noreferrer.html'; | 28 '/extensions/platform_apps/web_view/shim/guest_noreferrer.html'; |
| 27 embedder.detectUserAgentURL = embedder.baseGuestURL + '/detect-user-agent'; | 29 embedder.detectUserAgentURL = embedder.baseGuestURL + '/detect-user-agent'; |
| 28 embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect'; | 30 embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect'; |
| 29 embedder.redirectGuestURLDest = embedder.baseGuestURL + | 31 embedder.redirectGuestURLDest = embedder.baseGuestURL + |
| 30 '/extensions/platform_apps/web_view/shim/guest_redirect.html'; | 32 '/extensions/platform_apps/web_view/shim/guest_redirect.html'; |
| 31 embedder.closeSocketURL = embedder.baseGuestURL + '/close-socket'; | 33 embedder.closeSocketURL = embedder.baseGuestURL + '/close-socket'; |
| 32 embedder.testImageBaseURL = embedder.baseGuestURL + | 34 embedder.testImageBaseURL = embedder.baseGuestURL + |
| 33 '/extensions/platform_apps/web_view/shim/'; | 35 '/extensions/platform_apps/web_view/shim/'; |
| 34 embedder.virtualURL = 'http://virtualurl/'; | 36 embedder.virtualURL = 'http://virtualurl/'; |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 742 // Removing after navigation should not change the partition. | 744 // Removing after navigation should not change the partition. |
| 743 webview.removeAttribute('partition'); | 745 webview.removeAttribute('partition'); |
| 744 embedder.test.assertEq('testme', webview.partition); | 746 embedder.test.assertEq('testme', webview.partition); |
| 745 embedder.test.succeed(); | 747 embedder.test.succeed(); |
| 746 }; | 748 }; |
| 747 webview.addEventListener('loadstop', loadstopHandler); | 749 webview.addEventListener('loadstop', loadstopHandler); |
| 748 | 750 |
| 749 webview.setAttribute('src', 'data:text/html,<html><body>guest</body></html>'); | 751 webview.setAttribute('src', 'data:text/html,<html><body>guest</body></html>'); |
| 750 } | 752 } |
| 751 | 753 |
| 754 function testAddContentScript() { | |
|
Devlin
2015/04/13 19:21:46
Describe what the test does in comments (for all)
Xi Han
2015/04/14 19:05:50
Done.
| |
| 755 var webview = document.createElement('webview'); | |
| 756 | |
| 757 console.log("Step 1: call <webview>.addContentScripts."); | |
| 758 webview.addContentScripts( | |
| 759 [{"name": 'myrule', | |
| 760 "matches": ["http://*/extensions/*"], | |
| 761 "js": ["inject_comm_channel.js"], | |
| 762 "run_at": "document_start"}]); | |
| 763 | |
| 764 webview.addEventListener('loadstop', function() { | |
| 765 var msg = ['connect']; | |
| 766 webview.contentWindow.postMessage(JSON.stringify(msg), '*'); | |
| 767 }); | |
| 768 | |
| 769 window.addEventListener('message', function(e) { | |
| 770 var data = JSON.parse(e.data); | |
| 771 if (data == 'connected') { | |
| 772 console.log( | |
| 773 'Step 2: A communication channel has been established with webview.'); | |
| 774 embedder.test.succeed(); | |
| 775 return; | |
| 776 } | |
| 777 console.log('Unexpected message: \'' + data[0] + '\''); | |
| 778 embedder.test.fail(); | |
| 779 }); | |
| 780 | |
| 781 webview.src = embedder.emptyGuestURL; | |
| 782 document.body.appendChild(webview); | |
| 783 } | |
| 784 | |
| 785 function testAddMultipleContentScripts() { | |
| 786 var webview = document.createElement('webview'); | |
| 787 | |
| 788 console.log("Step 1: call <webview>.addContentScripts(myrule1 & myrule2)"); | |
| 789 webview.addContentScripts( | |
| 790 [{"name": 'myrule1', | |
| 791 "matches": ["http://*/extensions/*"], | |
| 792 "js": ["inject_comm_channel.js"], | |
| 793 "run_at": "document_start"}, | |
| 794 {"name": 'myrule2', | |
| 795 "matches": ["http://*/extensions/*"], | |
| 796 "js": ["inject_comm_channel_2.js"], | |
| 797 "run_at": "document_start"}]); | |
| 798 | |
| 799 webview.addEventListener('loadstop', function() { | |
| 800 var msg1 = ['connect']; | |
| 801 webview.contentWindow.postMessage(JSON.stringify(msg1), '*'); | |
| 802 var msg2 = ['connect_request']; | |
| 803 webview.contentWindow.postMessage(JSON.stringify(msg2), '*'); | |
| 804 }); | |
| 805 | |
| 806 var response_1 = false; | |
| 807 var response_2 = false; | |
| 808 window.addEventListener('message', function(e) { | |
| 809 var data = JSON.parse(e.data); | |
| 810 if (data == 'connected') { | |
| 811 console.log( | |
| 812 'Step 2: A communication channel has been established with webview.'); | |
| 813 response_1 = true; | |
| 814 if (response_1 && response_2) | |
| 815 embedder.test.succeed(); | |
| 816 return; | |
| 817 } else if (data == 'connected_response') { | |
| 818 console.log( | |
| 819 'Step 3: A communication channel has been established with webview.'); | |
| 820 response_2 = true; | |
| 821 if (response_1 && response_2) | |
| 822 embedder.test.succeed(); | |
| 823 return; | |
| 824 } | |
| 825 console.log('Unexpected message: \'' + data[0] + '\''); | |
| 826 embedder.test.fail(); | |
| 827 }); | |
| 828 | |
| 829 webview.src = embedder.emptyGuestURL; | |
| 830 document.body.appendChild(webview); | |
| 831 } | |
| 832 | |
| 833 function testAddContentScriptWithSameNameShouldOverwriteTheExistingOne() { | |
| 834 var webview = document.createElement('webview'); | |
| 835 | |
| 836 console.log("Step 1: call <webview>.addContentScripts(myrule1)"); | |
| 837 webview.addContentScripts( | |
| 838 [{"name": 'myrule1', | |
| 839 "matches": ["http://*/extensions/*"], | |
| 840 "js": ["inject_comm_channel.js"], | |
| 841 "run_at": "document_start"}]); | |
| 842 var connect_script_1 = true; | |
| 843 var connect_script_2 = false; | |
| 844 | |
| 845 webview.addEventListener('loadstop', function() { | |
| 846 if (connect_script_1) { | |
| 847 var msg1 = ['connect']; | |
| 848 webview.contentWindow.postMessage(JSON.stringify(msg1), '*'); | |
| 849 connect_script_1 = false; | |
| 850 } | |
| 851 if (connect_script_2) { | |
| 852 var msg2 = ['connect_request']; | |
| 853 webview.contentWindow.postMessage(JSON.stringify(msg2), '*'); | |
| 854 connect_script_2 = false; | |
| 855 } | |
| 856 }); | |
| 857 | |
| 858 var should_get_response_from_script_1 = true; | |
| 859 window.addEventListener('message', function(e) { | |
| 860 var data = JSON.parse(e.data); | |
| 861 if (data == 'connected') { | |
| 862 if (should_get_response_from_script_1) { | |
| 863 console.log( | |
| 864 'Step 2: A communication channel has been established with webview.' | |
| 865 ); | |
| 866 webview.addContentScripts( | |
| 867 [{"name": 'myrule1', | |
| 868 "matches": ["http://*/extensions/*"], | |
| 869 "js": ["inject_comm_channel_2.js"], | |
| 870 "run_at": "document_start"}]); | |
| 871 connect_script_2 = true; | |
| 872 should_get_response_from_script_1 = false; | |
| 873 webview.src = embedder.emptyGuestURL; | |
| 874 } else { | |
| 875 embedder.test.fail(); | |
| 876 } | |
| 877 return; | |
| 878 } else if (data == 'connected_response') { | |
|
Devlin
2015/04/13 19:21:46
These messages and responses are used enough that
Xi Han
2015/04/14 19:05:50
Done.
| |
| 879 console.log( | |
| 880 'Step 3: Another communication channel has been established ' + | |
| 881 'with webview.'); | |
| 882 setTimeout(function() { | |
| 883 embedder.test.succeed(); | |
| 884 }, 1000); | |
|
Devlin
2015/04/13 19:21:46
Why the timeout?
Xi Han
2015/04/14 19:05:50
Here we verify that we won't get any message from
Devlin
2015/04/14 23:04:57
1000ms is a pretty arbitrary limit to put there.
Xi Han
2015/04/15 19:43:55
Sounds good to me, updated:)
| |
| 885 return; | |
| 886 } | |
| 887 console.log('Unexpected message: \'' + data[0] + '\''); | |
| 888 embedder.test.fail(); | |
| 889 }); | |
| 890 | |
| 891 webview.src = embedder.emptyGuestURL; | |
| 892 document.body.appendChild(webview); | |
| 893 } | |
| 894 | |
| 895 function testAddContentScriptToOneWebViewShouldNotInjectToTheOtherWebView() { | |
| 896 var webview1 = document.createElement('webview'); | |
| 897 var webview2 = document.createElement('webview'); | |
| 898 | |
| 899 console.log("Step 1: call <webview1>.addContentScripts."); | |
| 900 webview1.addContentScripts( | |
| 901 [{"name": 'myrule', | |
| 902 "matches": ["http://*/extensions/*"], | |
| 903 "js": ["inject_comm_channel.js"], | |
| 904 "run_at": "document_start"}]); | |
| 905 | |
| 906 webview2.addEventListener('loadstop', function() { | |
| 907 console.log("Step 2: webview2 requests to build communication channel."); | |
| 908 var msg = ['connect']; | |
| 909 webview2.contentWindow.postMessage(JSON.stringify(msg), '*'); | |
| 910 setTimeout(function() { | |
| 911 embedder.test.succeed(); | |
| 912 }, 2000); | |
| 913 }); | |
| 914 | |
| 915 window.addEventListener('message', function(e) { | |
| 916 var data = JSON.parse(e.data); | |
| 917 if (data == 'connected') { | |
| 918 embedder.test.fail(); | |
| 919 return; | |
| 920 } | |
| 921 console.log('Unexpected message: \'' + data[0] + '\''); | |
| 922 embedder.test.fail(); | |
| 923 }); | |
| 924 | |
| 925 webview1.src = embedder.emptyGuestURL; | |
| 926 webview2.src = embedder.emptyGuestURL; | |
| 927 document.body.appendChild(webview1); | |
| 928 document.body.appendChild(webview2); | |
| 929 } | |
| 930 | |
| 931 function testAddAndRemoveContentScripts() { | |
| 932 var webview = document.createElement('webview'); | |
| 933 | |
| 934 console.log("Step 1: call <webview>.addContentScripts."); | |
| 935 webview.addContentScripts( | |
| 936 [{"name": 'myrule', | |
| 937 "matches": ["http://*/extensions/*"], | |
| 938 "js": ["inject_comm_channel.js"], | |
| 939 "run_at": "document_start"}]); | |
| 940 | |
| 941 var count = 0; | |
| 942 webview.addEventListener('loadstop', function() { | |
| 943 if (count == 0) { | |
| 944 console.log('Step 2: post message to build connect.'); | |
| 945 var msg = ['connect']; | |
| 946 webview.contentWindow.postMessage(JSON.stringify(msg), '*'); | |
| 947 count++; | |
|
Devlin
2015/04/13 19:21:46
nit: pre-increment
Xi Han
2015/04/14 19:05:50
Done.
| |
| 948 } else if (count == 1) { | |
| 949 console.log( | |
| 950 'Step 4: call <webview>.removeContentScripts and navigate.'); | |
| 951 webview.removeContentScripts(); | |
| 952 webview.src = embedder.emptyGuestURL; | |
| 953 count++; | |
| 954 } else if (count == 2) { | |
| 955 console.log('Step 5: post message to build connect again.'); | |
| 956 var msg = ['connect']; | |
| 957 webview.contentWindow.postMessage(JSON.stringify(msg), '*'); | |
| 958 setTimeout(function() { | |
| 959 embedder.test.succeed(); | |
| 960 }, 2000); | |
| 961 } | |
| 962 }); | |
| 963 | |
| 964 var replyCount = 0; | |
| 965 window.addEventListener('message', function(e) { | |
| 966 var data = JSON.parse(e.data); | |
| 967 if (data[0] == 'connected') { | |
| 968 console.log( | |
| 969 'Step 3: A communication channel has been established with webview.'); | |
| 970 if (replyCount == 0) { | |
| 971 webview.setAttribute('src', 'about:blank'); | |
| 972 replyCount++; | |
| 973 return; | |
| 974 } else if (replyCount == 1) { | |
| 975 embedder.test.fail(); | |
| 976 return; | |
| 977 } | |
| 978 } | |
| 979 console.log('Unexpected message: \'' + data[0] + '\''); | |
| 980 embedder.test.fail(); | |
| 981 }); | |
| 982 | |
| 983 webview.src = embedder.emptyGuestURL; | |
| 984 document.body.appendChild(webview); | |
| 985 } | |
| 986 | |
| 987 function testAddContentScriptsWithNewWindowAPI() { | |
| 988 var webview = document.createElement('webview'); | |
| 989 | |
| 990 var newwebview; | |
| 991 webview.addEventListener('newwindow', function(e) { | |
| 992 e.preventDefault(); | |
| 993 newwebview = document.createElement('webview'); | |
| 994 | |
| 995 console.log('Step 2: call newwebview.addContentScripts.'); | |
| 996 newwebview.addContentScripts( | |
| 997 [{"name": 'myrule', | |
| 998 "matches": ["http://*/extensions/*"], | |
| 999 "js": ["inject_comm_channel.js"], | |
| 1000 "run_at": "document_start"}]); | |
| 1001 | |
| 1002 newwebview.addEventListener('loadstop', function(evt) { | |
| 1003 var msg = ['connect']; | |
| 1004 console.log('Step 4: new webview postmessage to build communication ' + | |
| 1005 'channel.'); | |
| 1006 newwebview.contentWindow.postMessage(JSON.stringify(msg), '*'); | |
| 1007 }); | |
| 1008 | |
| 1009 document.body.appendChild(newwebview); | |
| 1010 // attach the new window to the new <webview>. | |
| 1011 console.log("Step 3: attaches the new webview."); | |
| 1012 e.window.attach(newwebview); | |
| 1013 }); | |
| 1014 | |
| 1015 window.addEventListener('message', function(e) { | |
| 1016 var data = JSON.parse(e.data); | |
| 1017 if (data == 'connected' && e.source == newwebview.contentWindow) { | |
| 1018 console.log('Step 5: a communication channel has been established ' + | |
| 1019 'with the new webview.'); | |
| 1020 embedder.test.succeed(); | |
| 1021 return; | |
| 1022 } else { | |
| 1023 embedder.test.fail(); | |
| 1024 return; | |
| 1025 } | |
| 1026 console.log('unexpected message: \'' + data[0] + '\''); | |
| 1027 embedder.test.fail(); | |
| 1028 }); | |
| 1029 | |
| 1030 console.log('Step 1: navigates the webview to window open guest URL.'); | |
| 1031 webview.setAttribute('src', embedder.windowOpenGuestFromSameURL); | |
| 1032 document.body.appendChild(webview); | |
| 1033 } | |
| 1034 | |
| 1035 function testContentScriptIsInjectedAfterTerminateAndReloadWebView() { | |
| 1036 var webview = document.createElement('webview'); | |
| 1037 | |
| 1038 console.log('Step 1: call <webview>.addContentScripts.'); | |
| 1039 webview.addContentScripts( | |
| 1040 [{"name": 'myrule', | |
| 1041 "matches": ["http://*/extensions/*"], | |
| 1042 "js": ["inject_comm_channel.js"], | |
| 1043 "run_at": "document_start"}]); | |
| 1044 | |
| 1045 var count = 0; | |
| 1046 webview.addEventListener('loadstop', function() { | |
| 1047 if (count == 0) { | |
| 1048 console.log('Step 2: call webview.terminate().'); | |
| 1049 webview.terminate(); | |
| 1050 ++count; | |
| 1051 return; | |
| 1052 } else if (count == 1) { | |
| 1053 console.log('Step 4: postMessage to build communication.'); | |
| 1054 var msg = ['connect']; | |
| 1055 webview.contentWindow.postMessage(JSON.stringify(msg), '*'); | |
| 1056 ++count; | |
| 1057 } | |
| 1058 }); | |
| 1059 | |
| 1060 webview.addEventListener('exit', function() { | |
| 1061 console.log('Step 3: call webview.reload().'); | |
| 1062 webview.reload(); | |
| 1063 }); | |
| 1064 | |
| 1065 window.addEventListener('message', function(e) { | |
| 1066 var data = JSON.parse(e.data); | |
| 1067 if (data == 'connected') { | |
| 1068 console.log( | |
| 1069 'Step 5: A communication channel has been established with webview.'); | |
| 1070 embedder.test.succeed(); | |
| 1071 return; | |
| 1072 } | |
| 1073 console.log('Unexpected message: \'' + data[0] + '\''); | |
| 1074 embedder.test.fail(); | |
| 1075 }); | |
| 1076 | |
| 1077 webview.src = embedder.emptyGuestURL; | |
| 1078 document.body.appendChild(webview); | |
| 1079 } | |
| 1080 | |
| 1081 function testContentScriptExistsAsLongAsWebViewTagExists() { | |
| 1082 var webview = document.createElement('webview'); | |
| 1083 | |
| 1084 console.log('Step 1: call <webview>.addContentScripts.'); | |
| 1085 webview.addContentScripts( | |
| 1086 [{"name": 'myrule', | |
| 1087 "matches": ["http://*/extensions/*"], | |
| 1088 "js": ["simple_script.js"], | |
| 1089 "run_at": "document_end"}]); | |
| 1090 | |
| 1091 var count = 0; | |
| 1092 webview.addEventListener('loadstop', function() { | |
| 1093 if (count == 0) { | |
| 1094 console.log('Step 2: check the result of content script injected.'); | |
| 1095 webview.executeScript({ | |
| 1096 code: 'document.body.style.backgroundColor;' | |
| 1097 }, function(results) { | |
| 1098 embedder.test.assertEq(1, results.length); | |
| 1099 embedder.test.assertEq('red', results[0]); | |
| 1100 }); | |
| 1101 | |
| 1102 console.log('Step 3: remove webview from the DOM.'); | |
| 1103 document.body.removeChild(webview); | |
| 1104 | |
| 1105 console.log('Step 4: add webview back to the DOM.'); | |
| 1106 document.body.appendChild(webview); | |
| 1107 ++count; | |
| 1108 return; | |
|
Devlin
2015/04/13 19:21:46
these returns are redundant with the if/else.
Xi Han
2015/04/14 19:05:50
removed.
| |
| 1109 } else if (count == 1) { | |
| 1110 webview.executeScript({ | |
| 1111 code: 'document.body.style.backgroundColor;' | |
| 1112 }, function(results) { | |
| 1113 console.log('Step 5: check the result of content script injected' + | |
| 1114 ' again.'); | |
| 1115 embedder.test.assertEq(1, results.length); | |
| 1116 embedder.test.assertEq('red', results[0]); | |
| 1117 embedder.test.succeed(); | |
| 1118 }); | |
| 1119 return; | |
| 1120 } | |
| 1121 }); | |
| 1122 | |
| 1123 webview.src = embedder.emptyGuestURL; | |
| 1124 document.body.appendChild(webview); | |
| 1125 } | |
| 1126 | |
|
Devlin
2015/04/13 19:21:46
Can we add a test for navigation?
Xi Han
2015/04/14 19:05:50
Everytime when we set the src of <webview>, it tri
| |
| 752 function testExecuteScriptFail() { | 1127 function testExecuteScriptFail() { |
| 753 var webview = document.createElement('webview'); | 1128 var webview = document.createElement('webview'); |
| 754 document.body.appendChild(webview); | 1129 document.body.appendChild(webview); |
| 755 setTimeout(function() { | 1130 setTimeout(function() { |
| 756 webview.executeScript( | 1131 webview.executeScript( |
| 757 {code:'document.body.style.backgroundColor = "red";'}, | 1132 {code:'document.body.style.backgroundColor = "red";'}, |
| 758 function(results) { | 1133 function(results) { |
| 759 embedder.test.fail(); | 1134 embedder.test.fail(); |
| 760 }); | 1135 }); |
| 761 setTimeout(function() { | 1136 setTimeout(function() { |
| (...skipping 1453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2215 'testInvalidChromeExtensionURL': testInvalidChromeExtensionURL, | 2590 'testInvalidChromeExtensionURL': testInvalidChromeExtensionURL, |
| 2216 'testWebRequestAPIExistence': testWebRequestAPIExistence, | 2591 'testWebRequestAPIExistence': testWebRequestAPIExistence, |
| 2217 'testEventName': testEventName, | 2592 'testEventName': testEventName, |
| 2218 'testOnEventProperties': testOnEventProperties, | 2593 'testOnEventProperties': testOnEventProperties, |
| 2219 'testLoadProgressEvent': testLoadProgressEvent, | 2594 'testLoadProgressEvent': testLoadProgressEvent, |
| 2220 'testDestroyOnEventListener': testDestroyOnEventListener, | 2595 'testDestroyOnEventListener': testDestroyOnEventListener, |
| 2221 'testCannotMutateEventName': testCannotMutateEventName, | 2596 'testCannotMutateEventName': testCannotMutateEventName, |
| 2222 'testPartitionChangeAfterNavigation': testPartitionChangeAfterNavigation, | 2597 'testPartitionChangeAfterNavigation': testPartitionChangeAfterNavigation, |
| 2223 'testPartitionRemovalAfterNavigationFails': | 2598 'testPartitionRemovalAfterNavigationFails': |
| 2224 testPartitionRemovalAfterNavigationFails, | 2599 testPartitionRemovalAfterNavigationFails, |
| 2600 'testAddContentScript': testAddContentScript, | |
| 2601 'testAddMultipleContentScripts': testAddMultipleContentScripts, | |
| 2602 'testAddContentScriptWithSameNameShouldOverwriteTheExistingOne': | |
| 2603 testAddContentScriptWithSameNameShouldOverwriteTheExistingOne, | |
| 2604 'testAddContentScriptToOneWebViewShouldNotInjectToTheOtherWebView': | |
| 2605 testAddContentScriptToOneWebViewShouldNotInjectToTheOtherWebView, | |
| 2606 'testAddAndRemoveContentScripts': testAddAndRemoveContentScripts, | |
| 2607 'testAddContentScriptsWithNewWindowAPI': | |
| 2608 testAddContentScriptsWithNewWindowAPI, | |
| 2609 'testContentScriptIsInjectedAfterTerminateAndReloadWebView': | |
| 2610 testContentScriptIsInjectedAfterTerminateAndReloadWebView, | |
| 2611 'testContentScriptExistsAsLongAsWebViewTagExists': | |
| 2612 testContentScriptExistsAsLongAsWebViewTagExists, | |
| 2225 'testExecuteScriptFail': testExecuteScriptFail, | 2613 'testExecuteScriptFail': testExecuteScriptFail, |
| 2226 'testExecuteScript': testExecuteScript, | 2614 'testExecuteScript': testExecuteScript, |
| 2227 'testExecuteScriptIsAbortedWhenWebViewSourceIsChanged': | 2615 'testExecuteScriptIsAbortedWhenWebViewSourceIsChanged': |
| 2228 testExecuteScriptIsAbortedWhenWebViewSourceIsChanged, | 2616 testExecuteScriptIsAbortedWhenWebViewSourceIsChanged, |
| 2229 'testTerminateAfterExit': testTerminateAfterExit, | 2617 'testTerminateAfterExit': testTerminateAfterExit, |
| 2230 'testAssignSrcAfterCrash': testAssignSrcAfterCrash, | 2618 'testAssignSrcAfterCrash': testAssignSrcAfterCrash, |
| 2231 'testNavOnConsecutiveSrcAttributeChanges': | 2619 'testNavOnConsecutiveSrcAttributeChanges': |
| 2232 testNavOnConsecutiveSrcAttributeChanges, | 2620 testNavOnConsecutiveSrcAttributeChanges, |
| 2233 'testNavOnSrcAttributeChange': testNavOnSrcAttributeChange, | 2621 'testNavOnSrcAttributeChange': testNavOnSrcAttributeChange, |
| 2234 'testReassignSrcAttribute': testReassignSrcAttribute, | 2622 'testReassignSrcAttribute': testReassignSrcAttribute, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2281 'testPerViewZoomMode': testPerViewZoomMode, | 2669 'testPerViewZoomMode': testPerViewZoomMode, |
| 2282 'testDisabledZoomMode': testDisabledZoomMode, | 2670 'testDisabledZoomMode': testDisabledZoomMode, |
| 2283 }; | 2671 }; |
| 2284 | 2672 |
| 2285 onload = function() { | 2673 onload = function() { |
| 2286 chrome.test.getConfig(function(config) { | 2674 chrome.test.getConfig(function(config) { |
| 2287 embedder.setUp_(config); | 2675 embedder.setUp_(config); |
| 2288 chrome.test.sendMessage("Launched"); | 2676 chrome.test.sendMessage("Launched"); |
| 2289 }); | 2677 }); |
| 2290 }; | 2678 }; |
| OLD | NEW |