| Index: chrome/test/chromedriver/js/call_function_test.html
|
| diff --git a/chrome/test/chromedriver/js/call_function_test.html b/chrome/test/chromedriver/js/call_function_test.html
|
| index 7651a3ad0eab8da71587c936026e3a47d4e8d12d..c11bc6cf45f4ed6499f32b46401b617bf6c8623f 100644
|
| --- a/chrome/test/chromedriver/js/call_function_test.html
|
| +++ b/chrome/test/chromedriver/js/call_function_test.html
|
| @@ -4,13 +4,21 @@
|
| <script src='call_function.js'></script>
|
| <script>
|
|
|
| +function clearCache() {
|
| + getPageCache().cache_ = {};
|
| +}
|
| +
|
| function testCallFunctionNoArgs() {
|
| + clearCache();
|
| +
|
| var result = callFunction(function() { return 1; }, []);
|
| assertEquals(0, result.status);
|
| assertEquals(1, result.value);
|
| }
|
|
|
| function testCallFunctionThrows() {
|
| + clearCache();
|
| +
|
| var result = callFunction(function() { throw new Error('fake error'); }, []);
|
| assertEquals(StatusCode.UNKNOWN_ERROR, result.status);
|
| assertEquals('fake error', result.value);
|
| @@ -26,120 +34,129 @@ function testCallFunctionThrows() {
|
| }
|
|
|
| function testCallFunctionArgs() {
|
| + clearCache();
|
| +
|
| function func(primitive, elem) {
|
| return [primitive, elem.querySelector('div')];
|
| }
|
| - var cache = getPageCache();
|
| - var result = callFunction(func, [1, cache.wrap(document)]);
|
| + var result = callFunction(func, [1, wrap(document)]);
|
| assertEquals(0, result.status);
|
| assertEquals(1, result.value[0]);
|
| - assertEquals(document.querySelector('div'), cache.unwrap(result.value[1]));
|
| + var cache = getPageCache();
|
| + assertEquals(document.querySelector('div'), unwrap(result.value[1], cache));
|
| }
|
|
|
| function testCallFunctionArgsUnwrappedReturn() {
|
| + clearCache();
|
| +
|
| function func(elem) {
|
| return elem.querySelector('div');
|
| }
|
| - var cache = getPageCache();
|
| - var result = callFunction(func, [cache.wrap(document)], true);
|
| + var result = callFunction(func, [wrap(document)], true);
|
| assertEquals(document.querySelector('div'), result);
|
| }
|
|
|
| function testCacheWrap() {
|
| - var cache = new Cache();
|
| - assertEquals(1, cache.wrap(1));
|
| - assertEquals(1, cache.unwrap(1));
|
| - assertEquals("1", cache.wrap("1"));
|
| - assertEquals("1", cache.unwrap("1"));
|
| - assertEquals(false, cache.wrap(false));
|
| - assertEquals(false, cache.unwrap(false));
|
| - assertEquals(null, cache.wrap(null));
|
| - assertEquals(null, cache.unwrap(null));
|
| - assertEquals(undefined, cache.wrap(undefined));
|
| - assertEquals(undefined, cache.unwrap(undefined));
|
| + clearCache();
|
| +
|
| + assertEquals(1, wrap(1));
|
| + assertEquals(1, unwrap(1));
|
| + assertEquals("1", wrap("1"));
|
| + assertEquals("1", unwrap("1"));
|
| + assertEquals(false, wrap(false));
|
| + assertEquals(false, unwrap(false));
|
| + assertEquals(null, wrap(null));
|
| + assertEquals(null, unwrap(null));
|
| + assertEquals(undefined, wrap(undefined));
|
| + assertEquals(undefined, unwrap(undefined));
|
| function func() {}
|
| - assertEquals(func, cache.wrap(func));
|
| - assertEquals(func, cache.unwrap(func));
|
| + assertEquals(func, wrap(func));
|
| + assertEquals(func, unwrap(func));
|
|
|
| + var cache = getPageCache();
|
| var arr = [1, new Array(1, new Object({a: 1, b: {a: 1, b: {}, c: 3}}), 3)];
|
| var originalJson = JSON.stringify(arr);
|
| - arr[1][1].b.b[ELEMENT_KEY] = cache.nextId_.toString();
|
| + arr[1][1].b.b[ELEMENT_KEY] = cache.idPrefix_ + ':' + cache.nextId_;
|
| var wrappedJson = JSON.stringify(arr);
|
| arr[1][1].b.b = document;
|
| - assertEquals(wrappedJson, JSON.stringify(cache.wrap(arr)));
|
| - var unwrapped = cache.unwrap(JSON.parse(wrappedJson));
|
| + assertEquals(wrappedJson, JSON.stringify(wrap(arr)));
|
| + var unwrapped = unwrap(JSON.parse(wrappedJson), cache);
|
| assertEquals(document, unwrapped[1][1].b.b);
|
| unwrapped[1][1].b.b = {};
|
| assertEquals(originalJson, JSON.stringify(unwrapped));
|
| }
|
|
|
| function testCacheDoubleWrap() {
|
| - var cache = new Cache();
|
| - assertEquals(cache.wrap(document)[ELEMENT_KEY],
|
| - cache.wrap(document)[ELEMENT_KEY]);
|
| + clearCache();
|
| +
|
| + assertEquals(wrap(document)[ELEMENT_KEY], wrap(document)[ELEMENT_KEY]);
|
| }
|
|
|
| function testCacheUnwrapThrows() {
|
| + clearCache();
|
| +
|
| try {
|
| - var cache = new Cache();
|
| var wrapped = {};
|
| wrapped[ELEMENT_KEY] = '1';
|
| - cache.unwrap(wrapped);
|
| + unwrap(wrapped, getPageCache());
|
| + assert(false);
|
| } catch (e) {
|
| - return;
|
| }
|
| - assert(false);
|
| }
|
|
|
| function testClearStale() {
|
| + clearCache();
|
| +
|
| var doc = document;
|
| var div = doc.querySelector('div');
|
| var span = doc.querySelector('span');
|
|
|
| - var cache = new Cache();
|
| - var wrappedDoc = cache.wrap(doc);
|
| - var wrappedDiv = cache.wrap(div);
|
| - var wrappedSpan = cache.wrap(span);
|
| + var wrappedDoc = wrap(doc);
|
| + var wrappedDiv = wrap(div);
|
| + var wrappedSpan = wrap(span);
|
|
|
| + var cache = getPageCache();
|
| cache.clearStale();
|
| - assertEquals(doc, cache.unwrap(wrappedDoc));
|
| - assertEquals(div, cache.unwrap(wrappedDiv));
|
| - assertEquals(span, cache.unwrap(wrappedSpan));
|
| + assertEquals(doc, unwrap(wrappedDoc, cache));
|
| + assertEquals(div, unwrap(wrappedDiv, cache));
|
| + assertEquals(span, unwrap(wrappedSpan, cache));
|
|
|
| div.removeChild(span);
|
| cache.clearStale();
|
| - assertEquals(doc, cache.unwrap(wrappedDoc));
|
| - assertEquals(div, cache.unwrap(wrappedDiv));
|
| + assertEquals(doc, unwrap(wrappedDoc, cache));
|
| + assertEquals(div, unwrap(wrappedDiv, cache));
|
| try {
|
| - cache.unwrap(wrappedSpan);
|
| + unwrap(wrappedSpan, cache);
|
| + assert(false);
|
| } catch (e) {
|
| - return;
|
| }
|
| - assert(false);
|
| }
|
|
|
| function testCacheQuerySelector() {
|
| - var cache = new Cache();
|
| + clearCache();
|
| +
|
| + var cache = getPageCache();
|
| assertEquals(document.querySelector('div'),
|
| - cache.unwrap(cache.wrap(document.querySelector('div'))));
|
| + unwrap(wrap(document.querySelector('div')), cache));
|
| assertEquals(document.querySelectorAll('div')[0],
|
| - cache.unwrap(cache.wrap(document.querySelectorAll('div')))[0]);
|
| + unwrap(wrap(document.querySelectorAll('div')), cache)[0]);
|
| }
|
|
|
| function testCacheStaleRef() {
|
| - var cache = new Cache();
|
| + clearCache();
|
| +
|
| + var cache = getPageCache();
|
| var img = document.createElement('img');
|
| document.body.appendChild(img);
|
| - var wrappedImg = cache.wrap(img);
|
| + var wrappedImg = wrap(img);
|
| document.body.removeChild(img);
|
| cache.clearStale();
|
| try {
|
| - cache.unwrap(wrappedImg);
|
| + unwrap(wrappedImg, cache);
|
| + assert(false);
|
| } catch (e) {
|
| assertEquals(StatusCode.STALE_ELEMENT_REFERENCE, e.code);
|
| - return;
|
| }
|
| - assert(false);
|
| }
|
|
|
| </script>
|
|
|