| /* |
| Distributed under both the W3C Test Suite License [1] and the W3C |
| 3-clause BSD License [2]. To contribute to a W3C Test Suite, see the |
| policies and contribution forms [3]. |
| |
| [1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license |
| [2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license |
| [3] http://www.w3.org/2004/10/27-testcases |
| */ |
| |
| // |
| // Helper Functions for PageVisibility W3C tests |
| // |
| var VISIBILITY_STATES = |
| { |
| HIDDEN: "hidden", |
| VISIBLE: "visible" |
| }; |
| |
| var feature_check = false; |
| |
| // |
| // All test() functions in the WebPerf PageVis test suite should use pv_test() instead. |
| // |
| // pv_test() validates the document.hidden and document.visibilityState attributes |
| // exist prior to running tests and immediately shows a failure if they do not. |
| // |
| |
| function pv_test(func, msg, doc) |
| { |
| if (!doc) |
| { |
| doc = document; |
| } |
| |
| // only run the feature check once, unless func == null, in which case, |
| // this call is intended as a feature check |
| if (!feature_check) |
| { |
| feature_check = true; |
| |
| var hiddenVal = doc.hidden; |
| var visStateVal = doc.visibilityState; |
| |
| // show a single error that the Page Visibility feature is undefined |
| test(function() |
| { |
| assert_true(hiddenVal !== undefined && hiddenVal != null, |
| "document.hidden is defined and not null.");}, |
| "document.hidden is defined and not null."); |
| |
| test(function() |
| { |
| assert_true(visStateVal !== undefined && hiddenVal != null, |
| "document.visibilityState is defined and not null.");}, |
| "document.visibilityState is defined and not null."); |
| |
| } |
| |
| if (func) |
| { |
| test(func, msg); |
| } |
| } |
| |
| |
| function test_feature_exists(doc, msg) |
| { |
| if (!msg) |
| { |
| msg = ""; |
| } |
| var hiddenMsg = "document.hidden is defined" + msg + "."; |
| var stateMsg = "document.visibilityState is defined" + msg + "."; |
| pv_test(function(){assert_true(document.hidden !== undefined, hiddenMsg);}, hiddenMsg, doc); |
| pv_test(function(){assert_true(document.visibilityState !== undefined, stateMsg);}, stateMsg, doc); |
| } |
| |
| // |
| // Common helper functions |
| // |
| |
| function test_true(value, msg) |
| { |
| pv_test(function() { assert_true(value, msg); }, msg); |
| } |
| |
| function test_equals(value, equals, msg) |
| { |
| pv_test(function() { assert_equals(value, equals, msg); }, msg); |
| } |
| |
| // |
| // asynchronous test helper functions |
| // |
| |
| function add_async_result(test_obj, pass_state) |
| { |
| // add assertion to manual test for the pass state |
| test_obj.step(function() { assert_true(pass_state) }); |
| |
| // end manual test |
| test_obj.done(); |
| } |
| |
| function add_async_result_assert(test_obj, func) |
| { |
| // add assertion to manual test for the pass state |
| test_obj.step(func); |
| |
| // end manual test |
| test_obj.done(); |
| } |
| |
| var open_link; |
| function TabSwitch() |
| { |
| //var open_link = window.open("http://www.bing.com"); |
| open_link = window.open('', '_blank'); |
| setTimeout(function() { open_link.close(); }, 2000); |
| } |