4 <style type="text/css" media="screen">
5 @media (max-device-width: 478px) and (max-device-height: 959px) {
6 #main { background: red; }
9 @media (max-device-width: 480px) and (max-device-height: 960px) {
10 #main { background: green; }
13 @media (min-device-width: 481px) and (min-device-height: 961px) {
14 #main { background: yellow; }
28 <script src="../../http/tests/inspector/inspector-test.js"></script>
29 <script src="../../http/tests/inspector/elements-test.js"></script>
34 return JSON.stringify({
35 screen: window.screen.width + "x" + window.screen.height,
36 inner: window.innerWidth + "x" + window.innerHeight,
37 body: document.body.offsetWidth + "x" + document.body.offsetHeight
43 var exceededDimension = 10000001;
44 var originalScreenSize;
46 function saveSizeCallback(jsonResult)
48 var value = JSON.parse(jsonResult.value);
49 originalScreenSize = value.screen;
50 if (!originalScreenSize || originalScreenSize.indexOf("x") === -1)
51 InspectorTest.addResult("Invalid original screen size: " + originalScreenSize + ". Expect runtime failures later on.");
53 InspectorTest.selectNodeAndWaitForStyles("main", step0);
56 InspectorTest.evaluateInPage("getSizes()", saveSizeCallback);
61 overrideAndDumpData(480, 800, step1);
66 function compareSizeCallback(jsonResult)
68 // Check that the screen size reported is the same as the original one.
69 var result = JSON.parse(jsonResult.value);
70 if (result.screen !== originalScreenSize)
71 InspectorTest.addResult("Original size " + originalScreenSize + " not restored, found: " + result.screen);
75 function overrideCallback()
77 InspectorTest.evaluateInPage("getSizes()", compareSizeCallback);
81 PageAgent.setDeviceMetricsOverride(0, 0, 1, true, overrideCallback);
86 overrideAndDumpData(800, 480, step3);
91 applyOverride(exceededDimension, 800, step4);
96 applyOverride(-1, 800, step5);
101 applyOverride(480, exceededDimension, step6);
108 InspectorTest.addResult("Current dimensions:");
109 getAndDumpSizes(step7);
111 applyOverride(480, -1, callback);
116 function callback(jsonResult)
118 var value = JSON.parse(jsonResult.value);
119 if (value.screen !== originalScreenSize)
120 InspectorTest.addResult("Screen size not restored, actual: " + value.screen + ", expected: " + originalScreenSize);
122 InspectorTest.addResult("Screen size same as original - OK");
126 InspectorTest.addResult("Disable PageAgent:");
128 InspectorTest.evaluateInPage("getSizes()", callback);
133 function callback(jsonResult)
135 var value = JSON.parse(jsonResult.value);
136 if (value.screen !== originalScreenSize)
137 InspectorTest.addResult("Screen size not restored, actual: " + value.screen + ", expected: " + originalScreenSize);
139 InspectorTest.addResult("Screen size same as original - OK");
140 InspectorTest.completeTest();
143 InspectorTest.addResult("Enable PageAgent:");
145 InspectorTest.evaluateInPage("getSizes()", callback);
148 function applyOverride(width, height, userCallback)
150 function callback(error)
153 InspectorTest.addResult("Override: " + width + "x" + height + " => ERROR");
156 PageAgent.setDeviceMetricsOverride(width, height, 1, true, callback);
159 function overrideAndDumpData(width, height, callback)
161 function selectCallback()
163 InspectorTest.addResult("Main style:");
164 InspectorTest.dumpSelectedElementStyles(true, false, true);
168 function applyCallback()
170 getAndDumpSizes(selectCallback);
173 InspectorTest.addResult("Override: " + width + "x" + height);
174 applyOverride(width, height, applyCallback);
177 function getAndDumpSizes(callback)
179 function getSizesCallback(jsonResult)
181 var result = JSON.parse(jsonResult.value);
182 InspectorTest.addResult("Screen from page: " + result.screen);
183 InspectorTest.addResult("Window from page: " + result.inner);
184 InspectorTest.addResult("Body from page: " + result.body);
188 InspectorTest.evaluateInPage("getSizes()", getSizesCallback);
194 <body onload="runTest()">
196 Tests that screen dimension overrides affect media rules, body dimensions, and window.screen.
199 <div id="main"></div>