-
Notifications
You must be signed in to change notification settings - Fork 54
/
pagevistestharness.js
121 lines (99 loc) · 3 KB
/
pagevistestharness.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
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');
step_timeout(function() { open_link.close(); }, 2000);
}