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

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

Powered by Google App Engine
This is Rietveld 408576698