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', | |
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 X dimension larger than hosts, Y dimension smaller. | |
Jamie
2015/02/06 23:06:02
I think you've got this the wrong way round, which
Wez
2015/02/09 21:32:28
Typo in description; Y & X got swapped.
Jamie
2015/02/09 23:52:34
Maybe add a test for the case where it's the y-dim
Wez
2015/02/13 18:59:08
Done.
| |
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)); | |
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 X dimension larger than hosts, Y 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)); | |
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 X dimension larger than hosts, Y 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 X dimension larger than hosts, Y 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 X dimension larger than hosts, Y 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() with shrink-to-fit disabled', | |
160 function() { | |
161 // 1. Client & host size the same. | |
162 var pluginSize = remoting.ClientSession.choosePluginSize( | |
163 size(640, 480), 1.0, size(640, 480), dpi(96, 96), 1.0, false, false); | |
164 QUnit.deepEqual(pluginSize, size(640, 480)); | |
165 | |
166 // 2. Client logical dimensions smaller than host's. | |
167 pluginSize = remoting.ClientSession.choosePluginSize( | |
168 size(640, 480), 1.0, size(1024, 600), dpi(96, 96), 1.0, false, false); | |
169 QUnit.deepEqual(pluginSize, size(1024, 600)); | |
170 | |
171 // 3. Client dimensions larger than host's by <2x. | |
172 pluginSize = remoting.ClientSession.choosePluginSize( | |
173 size(1280, 900), 1.0, size(640, 480), dpi(96, 96), 1.0, false, false); | |
174 QUnit.deepEqual(pluginSize, size(640, 480)); | |
175 | |
176 // 4. Client dimensions larger than host's by >2x. | |
177 pluginSize = remoting.ClientSession.choosePluginSize( | |
178 size(1280, 1024), 1.0, size(640, 480), dpi(96, 96), 1.0, false, false); | |
179 QUnit.deepEqual(pluginSize, size(1280, (1280 / 640) * 480)); | |
180 | |
181 // 5. Client smaller than host, client high-DPI, host low-DPI. | |
182 pluginSize = remoting.ClientSession.choosePluginSize( | |
183 size(640, 480), 2.0, size(1024, 600), dpi(96, 96), 1.0, false, false); | |
184 QUnit.deepEqual(pluginSize, size(1024, 600)); | |
185 | |
186 // 6. Client smaller than host, client low-DPI, host high-DPI. | |
187 pluginSize = remoting.ClientSession.choosePluginSize( | |
188 size(640, 480), 1.0, size(1024, 600), dpi(192, 192), 1.0, false, false); | |
189 QUnit.deepEqual(pluginSize, size(1024, 600)); | |
190 | |
191 // 7. Client smaller than host, both high-DPI. | |
192 pluginSize = remoting.ClientSession.choosePluginSize( | |
193 size(640, 480), 2.0, size(1024, 600), dpi(192, 192), 1.0, false, false); | |
194 QUnit.deepEqual(pluginSize, size(512, (512 / 1024) * 600)); | |
195 | |
196 // 8. Client smaller than host, client high-DPI, host 150% DPI. | |
197 pluginSize = remoting.ClientSession.choosePluginSize( | |
198 size(640, 480), 2.0, size(1024, 600), dpi(144, 144), 1.0, false, false); | |
199 QUnit.deepEqual(pluginSize, size(512, (512 / 1024) * 600)); | |
200 }); | |
201 | |
202 test('choosePluginSize() full-screen multi-monitor optimization', | |
203 function() { | |
204 // Each test has a host sized to approximate two or more monitors. | |
205 | |
206 // 1. Client & host per-monitor dimensions match, two monitors side-by-side. | |
207 var pluginSize = remoting.ClientSession.choosePluginSize( | |
208 size(640, 480), 1.0, size(2 * 640, 480), dpi(96, 96), 1.0, true, true); | |
209 QUnit.deepEqual(pluginSize, size(2 * 640, 480)); | |
210 | |
211 // 2. Client & host per-monitor dimensions match, two monitors stacked. | |
212 pluginSize = remoting.ClientSession.choosePluginSize( | |
213 size(640, 480), 1.0, size(640, 2 * 480), dpi(96, 96), 1.0, true, true); | |
214 QUnit.deepEqual(pluginSize, size(640, 2 * 480)); | |
215 | |
216 // 3. Client larger, two monitors stacked. | |
217 pluginSize = remoting.ClientSession.choosePluginSize( | |
218 size(1024, 768), 1.0, size(640, 2 * 480), dpi(96, 96), 1.0, true, true); | |
219 QUnit.deepEqual(pluginSize, size(640 * (768 / (2 * 480)), 768)); | |
220 | |
221 // 4. Client smaller, two monitors stacked. | |
222 pluginSize = remoting.ClientSession.choosePluginSize( | |
223 size(640, 480), 1.0, size(1024, 2 * 768), dpi(96, 96), 1.0, true, true); | |
224 QUnit.deepEqual(pluginSize, size(640, 2 * 768 * (640 / 1024))); | |
225 | |
226 // 5. Client wide-screen, host two standard monitors stacked. | |
227 pluginSize = remoting.ClientSession.choosePluginSize( | |
228 size(1920, 1080), 1.0, size(1024, 2 * 768), dpi(96, 96), 1.0, | |
229 true, true); | |
230 QUnit.deepEqual(pluginSize, size(1024 * (1080 / (2 * 768)), 1080)); | |
231 }); | |
232 | |
233 })(); | |
OLD | NEW |