OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 (function() { | |
6 | |
7 'use strict'; | |
8 | |
9 module('client_session'); | |
10 | |
11 function size(width, height) { | |
12 return {width: width, height: height}; | |
13 } | |
14 | |
15 function dpi(x, y) { | |
16 return {x: x, y: y}; | |
17 } | |
18 | |
19 test('choosePluginSize() handles same-DPI client & host', | |
Jamie
2015/02/09 23:52:35
s/same/low/? (since you have a test for both being
Wez
2015/02/13 18:59:08
Done.
| |
20 function() { | |
21 // 1. Client & host size the same. | |
22 var pluginSize = remoting.ClientSession.choosePluginSize( | |
23 size(640, 480), 1.0, size(640, 480), dpi(96, 96), 1.0, false, true); | |
24 QUnit.deepEqual(pluginSize, size(640, 480)); | |
25 | |
26 // 2. Client logical dimensions smaller than host's. | |
27 pluginSize = remoting.ClientSession.choosePluginSize( | |
28 size(640, 480), 1.0, size(1024, 600), dpi(96, 96), 1.0, false, true); | |
29 QUnit.deepEqual(pluginSize, size(640, (640 / 1024) * 600)); | |
30 | |
31 // 3. Client Y dimension larger than hosts, X dimension smaller. | |
32 pluginSize = remoting.ClientSession.choosePluginSize( | |
33 size(640, 640), 1.0, size(1024, 600), dpi(96, 96), 1.0, false, true); | |
34 QUnit.deepEqual(pluginSize, size(640, (640 / 1024) * 600)); | |
35 | |
36 // 4. Client dimensions larger than host's by <2x. | |
37 pluginSize = remoting.ClientSession.choosePluginSize( | |
38 size(1280, 900), 1.0, size(640, 480), dpi(96, 96), 1.0, false, true); | |
39 QUnit.deepEqual(pluginSize, size(640, 480)); | |
40 | |
41 // 5. Client dimensions larger than host's by >2x. | |
42 pluginSize = remoting.ClientSession.choosePluginSize( | |
43 size(1280, 1024), 1.0, size(640, 480), dpi(96, 96), 1.0, false, true); | |
44 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
Jamie
2015/02/09 23:52:35
I realize it's mathematically the same, but if you
Wez
2015/02/13 18:59:08
Done.
| |
45 }); | |
46 | |
47 test('choosePluginSize() handles high-DPI client, low-DPI host', | |
48 function() { | |
49 // 1. Client & host size the same. | |
50 var pluginSize = remoting.ClientSession.choosePluginSize( | |
51 size(640, 480), 2.0, size(640, 480), dpi(96, 96), 1.0, false, true); | |
52 QUnit.deepEqual(pluginSize, size(640, 480)); | |
53 | |
54 // 2. Client logical dimensions smaller than host's. | |
55 pluginSize = remoting.ClientSession.choosePluginSize( | |
56 size(640, 480), 2.0, size(1024, 600), dpi(96, 96), 1.0, false, true); | |
57 QUnit.deepEqual(pluginSize, size(640, (640 / 1024) * 600)); | |
58 | |
59 // 3. Client Y dimension larger than hosts, X dimension smaller. | |
60 pluginSize = remoting.ClientSession.choosePluginSize( | |
61 size(640, 640), 2.0, size(1024, 600), dpi(96, 96), 1.0, false, true); | |
62 QUnit.deepEqual(pluginSize, size(640, (640 / 1024) * 600)); | |
63 | |
64 // 4. Client logical dimensions larger than host's by <2x. | |
65 pluginSize = remoting.ClientSession.choosePluginSize( | |
66 size(1280, 900), 2.0, size(640, 480), dpi(96, 96), 1.0, false, true); | |
67 QUnit.deepEqual(pluginSize, size(640 * 3 / 2.0, 480 * 3 / 2.0)); | |
Jamie
2015/02/09 23:52:35
I don't understand how 3/2 is relevant to these ca
Wez
2015/02/13 18:59:08
Done.
| |
68 | |
69 // 5. Client dimensions larger than host's by >2x. | |
70 pluginSize = remoting.ClientSession.choosePluginSize( | |
71 size(1280, 1024), 2.0, size(640, 480), dpi(96, 96), 1.0, false, true); | |
72 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
73 }); | |
74 | |
75 test('choosePluginSize() handles low-DPI client, high-DPI host', | |
76 function() { | |
77 // 1. Client & host size the same. | |
78 var pluginSize = remoting.ClientSession.choosePluginSize( | |
79 size(640, 480), 1.0, size(640, 480), dpi(192, 192), 1.0, false, true); | |
80 QUnit.deepEqual(pluginSize, size(640, 480)); | |
81 | |
82 // 2. Client logical dimensions smaller than host's. | |
83 pluginSize = remoting.ClientSession.choosePluginSize( | |
84 size(640, 480), 1.0, size(1024, 600), dpi(192, 192), 1.0, false, true); | |
85 QUnit.deepEqual(pluginSize, size(640, (640 / 1024) * 600)); | |
86 | |
87 // 3. Client Y dimension larger than hosts, X dimension smaller. | |
88 pluginSize = remoting.ClientSession.choosePluginSize( | |
89 size(640, 640), 1.0, size(1024, 600), dpi(192, 192), 1.0, false, true); | |
90 QUnit.deepEqual(pluginSize, size(640, (640 / 1024) * 600)); | |
91 | |
92 // 4. Client dimensions larger than host's by <2x. | |
93 pluginSize = remoting.ClientSession.choosePluginSize( | |
94 size(1280, 900), 1.0, size(640, 480), dpi(192, 192), 1.0, false, true); | |
95 QUnit.deepEqual(pluginSize, size(640, 480)); | |
96 | |
97 // 5. Client dimensions larger than host's by >2x. | |
98 pluginSize = remoting.ClientSession.choosePluginSize( | |
99 size(1280, 1024), 1.0, size(640, 480), dpi(192, 192), 1.0, false, true); | |
100 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
101 }); | |
102 | |
103 test('choosePluginSize() handles high-DPI client and host', | |
104 function() { | |
105 // 1. Client & host size the same. | |
106 var pluginSize = remoting.ClientSession.choosePluginSize( | |
107 size(640, 480), 2.0, size(640, 480), dpi(192, 192), 1.0, false, true); | |
108 QUnit.deepEqual(pluginSize, size(640, 480)); | |
109 | |
110 // 2. Client logical dimensions smaller than host's. | |
111 pluginSize = remoting.ClientSession.choosePluginSize( | |
112 size(640, 480), 2.0, size(1024, 600), dpi(192, 192), 1.0, false, true); | |
113 QUnit.deepEqual(pluginSize, size(1024 / 2.0, 600 / 2.0)); | |
114 | |
115 // 3. Client Y dimension larger than hosts, X dimension smaller. | |
116 pluginSize = remoting.ClientSession.choosePluginSize( | |
117 size(640, 640), 2.0, size(1024, 600), dpi(192, 192), 1.0, false, true); | |
118 QUnit.deepEqual(pluginSize, size(1024 / 2.0, 600 / 2.0)); | |
119 | |
120 // 4. Client logical dimensions larger than host's by <2x. | |
121 pluginSize = remoting.ClientSession.choosePluginSize( | |
122 size(1280, 900), 2.0, size(640, 480), dpi(192, 192), 1.0, false, true); | |
123 QUnit.deepEqual(pluginSize, size(640 * 3 / 2.0, 480 * 3 / 2.0)); | |
124 | |
125 // 5. Client dimensions larger than host's by >2x. | |
126 pluginSize = remoting.ClientSession.choosePluginSize( | |
127 size(1280, 1024), 2.0, size(640, 480), dpi(192, 192), 1.0, false, true); | |
128 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
129 }); | |
130 | |
131 test('choosePluginSize() handles high-DPI client, 150% DPI host', | |
132 function() { | |
133 // 1. Client & host size the same. | |
134 var pluginSize = remoting.ClientSession.choosePluginSize( | |
135 size(640, 480), 2.0, size(640, 480), dpi(144, 144), 1.0, false, true); | |
136 QUnit.deepEqual(pluginSize, size(640, 480)); | |
137 | |
138 // 2. Client dimensions smaller than host's. | |
139 pluginSize = remoting.ClientSession.choosePluginSize( | |
140 size(640, 480), 2.0, size(1024, 600), dpi(144, 144), 1.0, false, true); | |
141 QUnit.deepEqual(pluginSize, size(1024 / 2.0, 600 / 2.0)); | |
142 | |
143 // 3. Client Y dimension larger than hosts, X dimension smaller. | |
144 pluginSize = remoting.ClientSession.choosePluginSize( | |
145 size(640, 640), 2.0, size(1024, 600), dpi(144, 144), 1.0, false, true); | |
146 QUnit.deepEqual(pluginSize, size(1024 / 2.0, 600 / 2.0)); | |
147 | |
148 // 4. Client dimensions larger than host's by <2x. | |
149 pluginSize = remoting.ClientSession.choosePluginSize( | |
150 size(1280, 900), 2.0, size(640, 480), dpi(144, 144), 1.0, false, true); | |
151 QUnit.deepEqual(pluginSize, size(640 * 3 / 2.0, 480 * 3 / 2.0)); | |
152 | |
153 // 5. Client dimensions larger than host's by >2x. | |
154 pluginSize = remoting.ClientSession.choosePluginSize( | |
155 size(1280, 1024), 2.0, size(640, 480), dpi(144, 144), 1.0, false, true); | |
156 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
157 }); | |
158 | |
159 test('choosePluginSize() handles high-DPI client, 125% DPI host', | |
160 function() { | |
161 // 1. Client & host size the same. | |
162 var pluginSize = remoting.ClientSession.choosePluginSize( | |
163 size(640, 480), 2.0, size(640, 480), dpi(120, 120), 1.0, false, true); | |
164 QUnit.deepEqual(pluginSize, size(640, 480)); | |
165 | |
166 // 2. Client dimensions smaller than host's. | |
167 pluginSize = remoting.ClientSession.choosePluginSize( | |
168 size(640, 480), 2.0, size(1024, 600), dpi(120, 120), 1.0, false, true); | |
169 QUnit.deepEqual(pluginSize, size(640, 600 * (640 / 1024))); | |
170 | |
171 // 3. Client Y dimension larger than hosts, X dimension smaller. | |
172 pluginSize = remoting.ClientSession.choosePluginSize( | |
173 size(640, 640), 2.0, size(1024, 600), dpi(120, 120), 1.0, false, true); | |
174 QUnit.deepEqual(pluginSize, size(640, 600 * (640 / 1024))); | |
175 | |
176 // 4. Client dimensions larger than host's by <2x. | |
177 pluginSize = remoting.ClientSession.choosePluginSize( | |
178 size(1280, 900), 2.0, size(640, 480), dpi(120, 120), 1.0, false, true); | |
179 QUnit.deepEqual(pluginSize, size(640 * 3 / 2.0, 480 * 3 / 2.0)); | |
180 | |
181 // 5. Client dimensions larger than host's by >2x. | |
182 pluginSize = remoting.ClientSession.choosePluginSize( | |
183 size(1280, 1024), 2.0, size(640, 480), dpi(120, 120), 1.0, false, true); | |
184 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
185 }); | |
186 | |
187 test('choosePluginSize() with shrink-to-fit disabled', | |
188 function() { | |
189 // 1. Client & host size the same. | |
190 var pluginSize = remoting.ClientSession.choosePluginSize( | |
191 size(640, 480), 1.0, size(640, 480), dpi(96, 96), 1.0, false, false); | |
192 QUnit.deepEqual(pluginSize, size(640, 480)); | |
193 | |
194 // 2. Client logical dimensions smaller than host's. | |
195 pluginSize = remoting.ClientSession.choosePluginSize( | |
196 size(640, 480), 1.0, size(1024, 600), dpi(96, 96), 1.0, false, false); | |
197 QUnit.deepEqual(pluginSize, size(1024, 600)); | |
198 | |
199 // 3. Client dimensions larger than host's by <2x. | |
200 pluginSize = remoting.ClientSession.choosePluginSize( | |
201 size(1280, 900), 1.0, size(640, 480), dpi(96, 96), 1.0, false, false); | |
202 QUnit.deepEqual(pluginSize, size(640, 480)); | |
203 | |
204 // 4. Client dimensions larger than host's by >2x. | |
205 pluginSize = remoting.ClientSession.choosePluginSize( | |
206 size(1280, 1024), 1.0, size(640, 480), dpi(96, 96), 1.0, false, false); | |
207 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
208 | |
209 // 5. Client smaller than host, client high-DPI, host low-DPI. | |
210 pluginSize = remoting.ClientSession.choosePluginSize( | |
211 size(640, 480), 2.0, size(1024, 600), dpi(96, 96), 1.0, false, false); | |
212 QUnit.deepEqual(pluginSize, size(1024, 600)); | |
213 | |
214 // 6. Client smaller than host, client low-DPI, host high-DPI. | |
215 pluginSize = remoting.ClientSession.choosePluginSize( | |
216 size(640, 480), 1.0, size(1024, 600), dpi(192, 192), 1.0, false, false); | |
217 QUnit.deepEqual(pluginSize, size(1024, 600)); | |
218 | |
219 // 7. Client smaller than host, both high-DPI. | |
220 pluginSize = remoting.ClientSession.choosePluginSize( | |
221 size(640, 480), 2.0, size(1024, 600), dpi(192, 192), 1.0, false, false); | |
222 QUnit.deepEqual(pluginSize, size(512, (512 / 1024) * 600)); | |
223 | |
224 // 8. Client smaller than host, client high-DPI, host 150% DPI. | |
225 pluginSize = remoting.ClientSession.choosePluginSize( | |
226 size(640, 480), 2.0, size(1024, 600), dpi(144, 144), 1.0, false, false); | |
227 QUnit.deepEqual(pluginSize, size(512, (512 / 1024) * 600)); | |
228 }); | |
229 | |
230 test('choosePluginSize() full-screen multi-monitor optimization', | |
231 function() { | |
232 // Each test has a host sized to approximate two or more monitors. | |
233 | |
234 // 1. Client & host per-monitor dimensions match, two monitors side-by-side. | |
235 var pluginSize = remoting.ClientSession.choosePluginSize( | |
236 size(640, 480), 1.0, size(2 * 640, 480), dpi(96, 96), 1.0, true, true); | |
237 QUnit.deepEqual(pluginSize, size(2 * 640, 480)); | |
238 | |
239 // 2. Client & host per-monitor dimensions match, two monitors stacked. | |
240 pluginSize = remoting.ClientSession.choosePluginSize( | |
241 size(640, 480), 1.0, size(640, 2 * 480), dpi(96, 96), 1.0, true, true); | |
242 QUnit.deepEqual(pluginSize, size(640, 2 * 480)); | |
243 | |
244 // 3. Client larger, two monitors stacked. | |
245 pluginSize = remoting.ClientSession.choosePluginSize( | |
246 size(1024, 768), 1.0, size(640, 2 * 480), dpi(96, 96), 1.0, true, true); | |
247 QUnit.deepEqual(pluginSize, size(640 * (768 / (2 * 480)), 768)); | |
248 | |
249 // 4. Client smaller, two monitors stacked. | |
250 pluginSize = remoting.ClientSession.choosePluginSize( | |
251 size(640, 480), 1.0, size(1024, 2 * 768), dpi(96, 96), 1.0, true, true); | |
252 QUnit.deepEqual(pluginSize, size(640, 2 * 768 * (640 / 1024))); | |
253 | |
254 // 5. Client wide-screen, host two standard monitors stacked. | |
255 pluginSize = remoting.ClientSession.choosePluginSize( | |
256 size(1920, 1080), 1.0, size(1024, 2 * 768), dpi(96, 96), 1.0, | |
257 true, true); | |
258 QUnit.deepEqual(pluginSize, size(1024 * (1080 / (2 * 768)), 1080)); | |
259 | |
260 // 6. Client & host per-monitor dimensions match, two monitors stacked, | |
261 // high-DPI client. | |
262 pluginSize = remoting.ClientSession.choosePluginSize( | |
263 size(640, 480), 2.0, size(640, 2 * 480), dpi(96, 96), 1.0, true, true); | |
264 QUnit.deepEqual(pluginSize, size(640, 2 * 480)); | |
265 | |
266 // 7. Client & host per-monitor dimensions match, two monitors stacked, | |
267 // high-DPI host. | |
268 pluginSize = remoting.ClientSession.choosePluginSize( | |
269 size(640, 480), 1.0, size(640, 2 * 480), dpi(192, 192), | |
270 1.0, true, true); | |
271 QUnit.deepEqual(pluginSize, size(640, 2 * 480)); | |
272 | |
273 // 8. Client & host per-monitor dimensions match, two monitors stacked, | |
274 // high-DPI client & host. | |
275 pluginSize = remoting.ClientSession.choosePluginSize( | |
276 size(640, 480), 2.0, size(640, 2 * 480), dpi(192, 192), | |
277 1.0, true, true); | |
278 QUnit.deepEqual(pluginSize, size(640 / 2.0, (2 * 480) / 2.0)); | |
279 }); | |
280 | |
281 })(); | |
OLD | NEW |