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

Side by Side Diff: chrome/test/chromedriver/js/call_function_test.html

Issue 14230010: [chromedriver] Fix issue of cache id in JS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comment Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE HTML> 1 <!DOCTYPE HTML>
2 <html> 2 <html>
3 <script src='test.js'></script> 3 <script src='test.js'></script>
4 <script src='call_function.js'></script> 4 <script src='call_function.js'></script>
5 <script> 5 <script>
6 6
7 function clearCache() {
8 getPageCache().cache_ = {};
9 }
10
7 function testCallFunctionNoArgs() { 11 function testCallFunctionNoArgs() {
12 clearCache();
13
8 var result = callFunction(function() { return 1; }, []); 14 var result = callFunction(function() { return 1; }, []);
9 assertEquals(0, result.status); 15 assertEquals(0, result.status);
10 assertEquals(1, result.value); 16 assertEquals(1, result.value);
11 } 17 }
12 18
13 function testCallFunctionThrows() { 19 function testCallFunctionThrows() {
20 clearCache();
21
14 var result = callFunction(function() { throw new Error('fake error'); }, []); 22 var result = callFunction(function() { throw new Error('fake error'); }, []);
15 assertEquals(StatusCode.UNKNOWN_ERROR, result.status); 23 assertEquals(StatusCode.UNKNOWN_ERROR, result.status);
16 assertEquals('fake error', result.value); 24 assertEquals('fake error', result.value);
17 25
18 result = callFunction(function() { 26 result = callFunction(function() {
19 var e = new Error('fake error'); 27 var e = new Error('fake error');
20 e.code = 77; 28 e.code = 77;
21 e.message = 'CUSTOM'; 29 e.message = 'CUSTOM';
22 throw e; 30 throw e;
23 }, []); 31 }, []);
24 assertEquals(77, result.status); 32 assertEquals(77, result.status);
25 assertEquals('CUSTOM', result.value); 33 assertEquals('CUSTOM', result.value);
26 } 34 }
27 35
28 function testCallFunctionArgs() { 36 function testCallFunctionArgs() {
37 clearCache();
38
29 function func(primitive, elem) { 39 function func(primitive, elem) {
30 return [primitive, elem.querySelector('div')]; 40 return [primitive, elem.querySelector('div')];
31 } 41 }
32 var cache = getPageCache(); 42 var result = callFunction(func, [1, wrap(document)]);
33 var result = callFunction(func, [1, cache.wrap(document)]);
34 assertEquals(0, result.status); 43 assertEquals(0, result.status);
35 assertEquals(1, result.value[0]); 44 assertEquals(1, result.value[0]);
36 assertEquals(document.querySelector('div'), cache.unwrap(result.value[1])); 45 var cache = getPageCache();
46 assertEquals(document.querySelector('div'), unwrap(result.value[1], cache));
37 } 47 }
38 48
39 function testCallFunctionArgsUnwrappedReturn() { 49 function testCallFunctionArgsUnwrappedReturn() {
50 clearCache();
51
40 function func(elem) { 52 function func(elem) {
41 return elem.querySelector('div'); 53 return elem.querySelector('div');
42 } 54 }
43 var cache = getPageCache(); 55 var result = callFunction(func, [wrap(document)], true);
44 var result = callFunction(func, [cache.wrap(document)], true);
45 assertEquals(document.querySelector('div'), result); 56 assertEquals(document.querySelector('div'), result);
46 } 57 }
47 58
48 function testCacheWrap() { 59 function testCacheWrap() {
49 var cache = new Cache(); 60 clearCache();
50 assertEquals(1, cache.wrap(1)); 61
51 assertEquals(1, cache.unwrap(1)); 62 assertEquals(1, wrap(1));
52 assertEquals("1", cache.wrap("1")); 63 assertEquals(1, unwrap(1));
53 assertEquals("1", cache.unwrap("1")); 64 assertEquals("1", wrap("1"));
54 assertEquals(false, cache.wrap(false)); 65 assertEquals("1", unwrap("1"));
55 assertEquals(false, cache.unwrap(false)); 66 assertEquals(false, wrap(false));
56 assertEquals(null, cache.wrap(null)); 67 assertEquals(false, unwrap(false));
57 assertEquals(null, cache.unwrap(null)); 68 assertEquals(null, wrap(null));
58 assertEquals(undefined, cache.wrap(undefined)); 69 assertEquals(null, unwrap(null));
59 assertEquals(undefined, cache.unwrap(undefined)); 70 assertEquals(undefined, wrap(undefined));
71 assertEquals(undefined, unwrap(undefined));
60 function func() {} 72 function func() {}
61 assertEquals(func, cache.wrap(func)); 73 assertEquals(func, wrap(func));
62 assertEquals(func, cache.unwrap(func)); 74 assertEquals(func, unwrap(func));
63 75
76 var cache = getPageCache();
64 var arr = [1, new Array(1, new Object({a: 1, b: {a: 1, b: {}, c: 3}}), 3)]; 77 var arr = [1, new Array(1, new Object({a: 1, b: {a: 1, b: {}, c: 3}}), 3)];
65 var originalJson = JSON.stringify(arr); 78 var originalJson = JSON.stringify(arr);
66 arr[1][1].b.b[ELEMENT_KEY] = cache.nextId_.toString(); 79 arr[1][1].b.b[ELEMENT_KEY] = cache.idPrefix_ + ':' + cache.nextId_;
67 var wrappedJson = JSON.stringify(arr); 80 var wrappedJson = JSON.stringify(arr);
68 arr[1][1].b.b = document; 81 arr[1][1].b.b = document;
69 assertEquals(wrappedJson, JSON.stringify(cache.wrap(arr))); 82 assertEquals(wrappedJson, JSON.stringify(wrap(arr)));
70 var unwrapped = cache.unwrap(JSON.parse(wrappedJson)); 83 var unwrapped = unwrap(JSON.parse(wrappedJson), cache);
71 assertEquals(document, unwrapped[1][1].b.b); 84 assertEquals(document, unwrapped[1][1].b.b);
72 unwrapped[1][1].b.b = {}; 85 unwrapped[1][1].b.b = {};
73 assertEquals(originalJson, JSON.stringify(unwrapped)); 86 assertEquals(originalJson, JSON.stringify(unwrapped));
74 } 87 }
75 88
76 function testCacheDoubleWrap() { 89 function testCacheDoubleWrap() {
77 var cache = new Cache(); 90 clearCache();
78 assertEquals(cache.wrap(document)[ELEMENT_KEY], 91
79 cache.wrap(document)[ELEMENT_KEY]); 92 assertEquals(wrap(document)[ELEMENT_KEY], wrap(document)[ELEMENT_KEY]);
80 } 93 }
81 94
82 function testCacheUnwrapThrows() { 95 function testCacheUnwrapThrows() {
96 clearCache();
97
83 try { 98 try {
84 var cache = new Cache();
85 var wrapped = {}; 99 var wrapped = {};
86 wrapped[ELEMENT_KEY] = '1'; 100 wrapped[ELEMENT_KEY] = '1';
87 cache.unwrap(wrapped); 101 unwrap(wrapped, getPageCache());
102 assert(false);
88 } catch (e) { 103 } catch (e) {
89 return;
90 } 104 }
91 assert(false);
92 } 105 }
93 106
94 function testClearStale() { 107 function testClearStale() {
108 clearCache();
109
95 var doc = document; 110 var doc = document;
96 var div = doc.querySelector('div'); 111 var div = doc.querySelector('div');
97 var span = doc.querySelector('span'); 112 var span = doc.querySelector('span');
98 113
99 var cache = new Cache(); 114 var wrappedDoc = wrap(doc);
100 var wrappedDoc = cache.wrap(doc); 115 var wrappedDiv = wrap(div);
101 var wrappedDiv = cache.wrap(div); 116 var wrappedSpan = wrap(span);
102 var wrappedSpan = cache.wrap(span);
103 117
118 var cache = getPageCache();
104 cache.clearStale(); 119 cache.clearStale();
105 assertEquals(doc, cache.unwrap(wrappedDoc)); 120 assertEquals(doc, unwrap(wrappedDoc, cache));
106 assertEquals(div, cache.unwrap(wrappedDiv)); 121 assertEquals(div, unwrap(wrappedDiv, cache));
107 assertEquals(span, cache.unwrap(wrappedSpan)); 122 assertEquals(span, unwrap(wrappedSpan, cache));
108 123
109 div.removeChild(span); 124 div.removeChild(span);
110 cache.clearStale(); 125 cache.clearStale();
111 assertEquals(doc, cache.unwrap(wrappedDoc)); 126 assertEquals(doc, unwrap(wrappedDoc, cache));
112 assertEquals(div, cache.unwrap(wrappedDiv)); 127 assertEquals(div, unwrap(wrappedDiv, cache));
113 try { 128 try {
114 cache.unwrap(wrappedSpan); 129 unwrap(wrappedSpan, cache);
130 assert(false);
115 } catch (e) { 131 } catch (e) {
116 return;
117 } 132 }
118 assert(false);
119 } 133 }
120 134
121 function testCacheQuerySelector() { 135 function testCacheQuerySelector() {
122 var cache = new Cache(); 136 clearCache();
137
138 var cache = getPageCache();
123 assertEquals(document.querySelector('div'), 139 assertEquals(document.querySelector('div'),
124 cache.unwrap(cache.wrap(document.querySelector('div')))); 140 unwrap(wrap(document.querySelector('div')), cache));
125 assertEquals(document.querySelectorAll('div')[0], 141 assertEquals(document.querySelectorAll('div')[0],
126 cache.unwrap(cache.wrap(document.querySelectorAll('div')))[0]); 142 unwrap(wrap(document.querySelectorAll('div')), cache)[0]);
127 } 143 }
128 144
129 function testCacheStaleRef() { 145 function testCacheStaleRef() {
130 var cache = new Cache(); 146 clearCache();
147
148 var cache = getPageCache();
131 var img = document.createElement('img'); 149 var img = document.createElement('img');
132 document.body.appendChild(img); 150 document.body.appendChild(img);
133 var wrappedImg = cache.wrap(img); 151 var wrappedImg = wrap(img);
134 document.body.removeChild(img); 152 document.body.removeChild(img);
135 cache.clearStale(); 153 cache.clearStale();
136 try { 154 try {
137 cache.unwrap(wrappedImg); 155 unwrap(wrappedImg, cache);
156 assert(false);
138 } catch (e) { 157 } catch (e) {
139 assertEquals(StatusCode.STALE_ELEMENT_REFERENCE, e.code); 158 assertEquals(StatusCode.STALE_ELEMENT_REFERENCE, e.code);
140 return;
141 } 159 }
142 assert(false);
143 } 160 }
144 161
145 </script> 162 </script>
146 <body> 163 <body>
147 <div><span></span></div> 164 <div><span></span></div>
148 </body> 165 </body>
149 </html> 166 </html>
OLDNEW
« no previous file with comments | « chrome/test/chromedriver/js/call_function.js ('k') | chrome/test/chromedriver/test_expectations » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698