DeviceDescriptors.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. /**
  2. * Copyright 2017 Google Inc. All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. module.exports = [
  17. {
  18. 'name': 'Blackberry PlayBook',
  19. 'userAgent': 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+',
  20. 'viewport': {
  21. 'width': 600,
  22. 'height': 1024,
  23. 'deviceScaleFactor': 1,
  24. 'isMobile': true,
  25. 'hasTouch': true,
  26. 'isLandscape': false
  27. }
  28. },
  29. {
  30. 'name': 'Blackberry PlayBook landscape',
  31. 'userAgent': 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+',
  32. 'viewport': {
  33. 'width': 1024,
  34. 'height': 600,
  35. 'deviceScaleFactor': 1,
  36. 'isMobile': true,
  37. 'hasTouch': true,
  38. 'isLandscape': true
  39. }
  40. },
  41. {
  42. 'name': 'BlackBerry Z30',
  43. 'userAgent': 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+',
  44. 'viewport': {
  45. 'width': 360,
  46. 'height': 640,
  47. 'deviceScaleFactor': 2,
  48. 'isMobile': true,
  49. 'hasTouch': true,
  50. 'isLandscape': false
  51. }
  52. },
  53. {
  54. 'name': 'BlackBerry Z30 landscape',
  55. 'userAgent': 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+',
  56. 'viewport': {
  57. 'width': 640,
  58. 'height': 360,
  59. 'deviceScaleFactor': 2,
  60. 'isMobile': true,
  61. 'hasTouch': true,
  62. 'isLandscape': true
  63. }
  64. },
  65. {
  66. 'name': 'Galaxy Note 3',
  67. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
  68. 'viewport': {
  69. 'width': 360,
  70. 'height': 640,
  71. 'deviceScaleFactor': 3,
  72. 'isMobile': true,
  73. 'hasTouch': true,
  74. 'isLandscape': false
  75. }
  76. },
  77. {
  78. 'name': 'Galaxy Note 3 landscape',
  79. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
  80. 'viewport': {
  81. 'width': 640,
  82. 'height': 360,
  83. 'deviceScaleFactor': 3,
  84. 'isMobile': true,
  85. 'hasTouch': true,
  86. 'isLandscape': true
  87. }
  88. },
  89. {
  90. 'name': 'Galaxy Note II',
  91. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
  92. 'viewport': {
  93. 'width': 360,
  94. 'height': 640,
  95. 'deviceScaleFactor': 2,
  96. 'isMobile': true,
  97. 'hasTouch': true,
  98. 'isLandscape': false
  99. }
  100. },
  101. {
  102. 'name': 'Galaxy Note II landscape',
  103. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
  104. 'viewport': {
  105. 'width': 640,
  106. 'height': 360,
  107. 'deviceScaleFactor': 2,
  108. 'isMobile': true,
  109. 'hasTouch': true,
  110. 'isLandscape': true
  111. }
  112. },
  113. {
  114. 'name': 'Galaxy S III',
  115. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
  116. 'viewport': {
  117. 'width': 360,
  118. 'height': 640,
  119. 'deviceScaleFactor': 2,
  120. 'isMobile': true,
  121. 'hasTouch': true,
  122. 'isLandscape': false
  123. }
  124. },
  125. {
  126. 'name': 'Galaxy S III landscape',
  127. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
  128. 'viewport': {
  129. 'width': 640,
  130. 'height': 360,
  131. 'deviceScaleFactor': 2,
  132. 'isMobile': true,
  133. 'hasTouch': true,
  134. 'isLandscape': true
  135. }
  136. },
  137. {
  138. 'name': 'Galaxy S5',
  139. 'userAgent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  140. 'viewport': {
  141. 'width': 360,
  142. 'height': 640,
  143. 'deviceScaleFactor': 3,
  144. 'isMobile': true,
  145. 'hasTouch': true,
  146. 'isLandscape': false
  147. }
  148. },
  149. {
  150. 'name': 'Galaxy S5 landscape',
  151. 'userAgent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  152. 'viewport': {
  153. 'width': 640,
  154. 'height': 360,
  155. 'deviceScaleFactor': 3,
  156. 'isMobile': true,
  157. 'hasTouch': true,
  158. 'isLandscape': true
  159. }
  160. },
  161. {
  162. 'name': 'iPad',
  163. 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
  164. 'viewport': {
  165. 'width': 768,
  166. 'height': 1024,
  167. 'deviceScaleFactor': 2,
  168. 'isMobile': true,
  169. 'hasTouch': true,
  170. 'isLandscape': false
  171. }
  172. },
  173. {
  174. 'name': 'iPad landscape',
  175. 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
  176. 'viewport': {
  177. 'width': 1024,
  178. 'height': 768,
  179. 'deviceScaleFactor': 2,
  180. 'isMobile': true,
  181. 'hasTouch': true,
  182. 'isLandscape': true
  183. }
  184. },
  185. {
  186. 'name': 'iPad Mini',
  187. 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
  188. 'viewport': {
  189. 'width': 768,
  190. 'height': 1024,
  191. 'deviceScaleFactor': 2,
  192. 'isMobile': true,
  193. 'hasTouch': true,
  194. 'isLandscape': false
  195. }
  196. },
  197. {
  198. 'name': 'iPad Mini landscape',
  199. 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
  200. 'viewport': {
  201. 'width': 1024,
  202. 'height': 768,
  203. 'deviceScaleFactor': 2,
  204. 'isMobile': true,
  205. 'hasTouch': true,
  206. 'isLandscape': true
  207. }
  208. },
  209. {
  210. 'name': 'iPad Pro',
  211. 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
  212. 'viewport': {
  213. 'width': 1024,
  214. 'height': 1366,
  215. 'deviceScaleFactor': 2,
  216. 'isMobile': true,
  217. 'hasTouch': true,
  218. 'isLandscape': false
  219. }
  220. },
  221. {
  222. 'name': 'iPad Pro landscape',
  223. 'userAgent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
  224. 'viewport': {
  225. 'width': 1366,
  226. 'height': 1024,
  227. 'deviceScaleFactor': 2,
  228. 'isMobile': true,
  229. 'hasTouch': true,
  230. 'isLandscape': true
  231. }
  232. },
  233. {
  234. 'name': 'iPhone 4',
  235. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',
  236. 'viewport': {
  237. 'width': 320,
  238. 'height': 480,
  239. 'deviceScaleFactor': 2,
  240. 'isMobile': true,
  241. 'hasTouch': true,
  242. 'isLandscape': false
  243. }
  244. },
  245. {
  246. 'name': 'iPhone 4 landscape',
  247. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',
  248. 'viewport': {
  249. 'width': 480,
  250. 'height': 320,
  251. 'deviceScaleFactor': 2,
  252. 'isMobile': true,
  253. 'hasTouch': true,
  254. 'isLandscape': true
  255. }
  256. },
  257. {
  258. 'name': 'iPhone 5',
  259. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
  260. 'viewport': {
  261. 'width': 320,
  262. 'height': 568,
  263. 'deviceScaleFactor': 2,
  264. 'isMobile': true,
  265. 'hasTouch': true,
  266. 'isLandscape': false
  267. }
  268. },
  269. {
  270. 'name': 'iPhone 5 landscape',
  271. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
  272. 'viewport': {
  273. 'width': 568,
  274. 'height': 320,
  275. 'deviceScaleFactor': 2,
  276. 'isMobile': true,
  277. 'hasTouch': true,
  278. 'isLandscape': true
  279. }
  280. },
  281. {
  282. 'name': 'iPhone 6',
  283. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  284. 'viewport': {
  285. 'width': 375,
  286. 'height': 667,
  287. 'deviceScaleFactor': 2,
  288. 'isMobile': true,
  289. 'hasTouch': true,
  290. 'isLandscape': false
  291. }
  292. },
  293. {
  294. 'name': 'iPhone 6 landscape',
  295. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  296. 'viewport': {
  297. 'width': 667,
  298. 'height': 375,
  299. 'deviceScaleFactor': 2,
  300. 'isMobile': true,
  301. 'hasTouch': true,
  302. 'isLandscape': true
  303. }
  304. },
  305. {
  306. 'name': 'iPhone 6 Plus',
  307. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  308. 'viewport': {
  309. 'width': 414,
  310. 'height': 736,
  311. 'deviceScaleFactor': 3,
  312. 'isMobile': true,
  313. 'hasTouch': true,
  314. 'isLandscape': false
  315. }
  316. },
  317. {
  318. 'name': 'iPhone 6 Plus landscape',
  319. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  320. 'viewport': {
  321. 'width': 736,
  322. 'height': 414,
  323. 'deviceScaleFactor': 3,
  324. 'isMobile': true,
  325. 'hasTouch': true,
  326. 'isLandscape': true
  327. }
  328. },
  329. {
  330. 'name': 'iPhone 7',
  331. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  332. 'viewport': {
  333. 'width': 375,
  334. 'height': 667,
  335. 'deviceScaleFactor': 2,
  336. 'isMobile': true,
  337. 'hasTouch': true,
  338. 'isLandscape': false
  339. }
  340. },
  341. {
  342. 'name': 'iPhone 7 landscape',
  343. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  344. 'viewport': {
  345. 'width': 667,
  346. 'height': 375,
  347. 'deviceScaleFactor': 2,
  348. 'isMobile': true,
  349. 'hasTouch': true,
  350. 'isLandscape': true
  351. }
  352. },
  353. {
  354. 'name': 'iPhone 7 Plus',
  355. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  356. 'viewport': {
  357. 'width': 414,
  358. 'height': 736,
  359. 'deviceScaleFactor': 3,
  360. 'isMobile': true,
  361. 'hasTouch': true,
  362. 'isLandscape': false
  363. }
  364. },
  365. {
  366. 'name': 'iPhone 7 Plus landscape',
  367. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  368. 'viewport': {
  369. 'width': 736,
  370. 'height': 414,
  371. 'deviceScaleFactor': 3,
  372. 'isMobile': true,
  373. 'hasTouch': true,
  374. 'isLandscape': true
  375. }
  376. },
  377. {
  378. 'name': 'iPhone 8',
  379. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  380. 'viewport': {
  381. 'width': 375,
  382. 'height': 667,
  383. 'deviceScaleFactor': 2,
  384. 'isMobile': true,
  385. 'hasTouch': true,
  386. 'isLandscape': false
  387. }
  388. },
  389. {
  390. 'name': 'iPhone 8 landscape',
  391. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  392. 'viewport': {
  393. 'width': 667,
  394. 'height': 375,
  395. 'deviceScaleFactor': 2,
  396. 'isMobile': true,
  397. 'hasTouch': true,
  398. 'isLandscape': true
  399. }
  400. },
  401. {
  402. 'name': 'iPhone 8 Plus',
  403. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  404. 'viewport': {
  405. 'width': 414,
  406. 'height': 736,
  407. 'deviceScaleFactor': 3,
  408. 'isMobile': true,
  409. 'hasTouch': true,
  410. 'isLandscape': false
  411. }
  412. },
  413. {
  414. 'name': 'iPhone 8 Plus landscape',
  415. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  416. 'viewport': {
  417. 'width': 736,
  418. 'height': 414,
  419. 'deviceScaleFactor': 3,
  420. 'isMobile': true,
  421. 'hasTouch': true,
  422. 'isLandscape': true
  423. }
  424. },
  425. {
  426. 'name': 'iPhone SE',
  427. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
  428. 'viewport': {
  429. 'width': 320,
  430. 'height': 568,
  431. 'deviceScaleFactor': 2,
  432. 'isMobile': true,
  433. 'hasTouch': true,
  434. 'isLandscape': false
  435. }
  436. },
  437. {
  438. 'name': 'iPhone SE landscape',
  439. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
  440. 'viewport': {
  441. 'width': 568,
  442. 'height': 320,
  443. 'deviceScaleFactor': 2,
  444. 'isMobile': true,
  445. 'hasTouch': true,
  446. 'isLandscape': true
  447. }
  448. },
  449. {
  450. 'name': 'iPhone X',
  451. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  452. 'viewport': {
  453. 'width': 375,
  454. 'height': 812,
  455. 'deviceScaleFactor': 3,
  456. 'isMobile': true,
  457. 'hasTouch': true,
  458. 'isLandscape': false
  459. }
  460. },
  461. {
  462. 'name': 'iPhone X landscape',
  463. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
  464. 'viewport': {
  465. 'width': 812,
  466. 'height': 375,
  467. 'deviceScaleFactor': 3,
  468. 'isMobile': true,
  469. 'hasTouch': true,
  470. 'isLandscape': true
  471. }
  472. },
  473. {
  474. 'name': 'iPhone XR',
  475. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1',
  476. 'viewport': {
  477. 'width': 414,
  478. 'height': 896,
  479. 'deviceScaleFactor': 3,
  480. 'isMobile': true,
  481. 'hasTouch': true,
  482. 'isLandscape': false
  483. }
  484. },
  485. {
  486. 'name': 'iPhone XR landscape',
  487. 'userAgent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1',
  488. 'viewport': {
  489. 'width': 896,
  490. 'height': 414,
  491. 'deviceScaleFactor': 3,
  492. 'isMobile': true,
  493. 'hasTouch': true,
  494. 'isLandscape': true
  495. }
  496. },
  497. {
  498. 'name': 'JioPhone 2',
  499. 'userAgent': 'Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5',
  500. 'viewport': {
  501. 'width': 240,
  502. 'height': 320,
  503. 'deviceScaleFactor': 1,
  504. 'isMobile': true,
  505. 'hasTouch': true,
  506. 'isLandscape': false
  507. }
  508. },
  509. {
  510. 'name': 'JioPhone 2 landscape',
  511. 'userAgent': 'Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5',
  512. 'viewport': {
  513. 'width': 320,
  514. 'height': 240,
  515. 'deviceScaleFactor': 1,
  516. 'isMobile': true,
  517. 'hasTouch': true,
  518. 'isLandscape': true
  519. }
  520. },
  521. {
  522. 'name': 'Kindle Fire HDX',
  523. 'userAgent': 'Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true',
  524. 'viewport': {
  525. 'width': 800,
  526. 'height': 1280,
  527. 'deviceScaleFactor': 2,
  528. 'isMobile': true,
  529. 'hasTouch': true,
  530. 'isLandscape': false
  531. }
  532. },
  533. {
  534. 'name': 'Kindle Fire HDX landscape',
  535. 'userAgent': 'Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true',
  536. 'viewport': {
  537. 'width': 1280,
  538. 'height': 800,
  539. 'deviceScaleFactor': 2,
  540. 'isMobile': true,
  541. 'hasTouch': true,
  542. 'isLandscape': true
  543. }
  544. },
  545. {
  546. 'name': 'LG Optimus L70',
  547. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3765.0 Mobile Safari/537.36',
  548. 'viewport': {
  549. 'width': 384,
  550. 'height': 640,
  551. 'deviceScaleFactor': 1.25,
  552. 'isMobile': true,
  553. 'hasTouch': true,
  554. 'isLandscape': false
  555. }
  556. },
  557. {
  558. 'name': 'LG Optimus L70 landscape',
  559. 'userAgent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3765.0 Mobile Safari/537.36',
  560. 'viewport': {
  561. 'width': 640,
  562. 'height': 384,
  563. 'deviceScaleFactor': 1.25,
  564. 'isMobile': true,
  565. 'hasTouch': true,
  566. 'isLandscape': true
  567. }
  568. },
  569. {
  570. 'name': 'Microsoft Lumia 550',
  571. 'userAgent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263',
  572. 'viewport': {
  573. 'width': 640,
  574. 'height': 360,
  575. 'deviceScaleFactor': 2,
  576. 'isMobile': true,
  577. 'hasTouch': true,
  578. 'isLandscape': false
  579. }
  580. },
  581. {
  582. 'name': 'Microsoft Lumia 950',
  583. 'userAgent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263',
  584. 'viewport': {
  585. 'width': 360,
  586. 'height': 640,
  587. 'deviceScaleFactor': 4,
  588. 'isMobile': true,
  589. 'hasTouch': true,
  590. 'isLandscape': false
  591. }
  592. },
  593. {
  594. 'name': 'Microsoft Lumia 950 landscape',
  595. 'userAgent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263',
  596. 'viewport': {
  597. 'width': 640,
  598. 'height': 360,
  599. 'deviceScaleFactor': 4,
  600. 'isMobile': true,
  601. 'hasTouch': true,
  602. 'isLandscape': true
  603. }
  604. },
  605. {
  606. 'name': 'Nexus 10',
  607. 'userAgent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Safari/537.36',
  608. 'viewport': {
  609. 'width': 800,
  610. 'height': 1280,
  611. 'deviceScaleFactor': 2,
  612. 'isMobile': true,
  613. 'hasTouch': true,
  614. 'isLandscape': false
  615. }
  616. },
  617. {
  618. 'name': 'Nexus 10 landscape',
  619. 'userAgent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Safari/537.36',
  620. 'viewport': {
  621. 'width': 1280,
  622. 'height': 800,
  623. 'deviceScaleFactor': 2,
  624. 'isMobile': true,
  625. 'hasTouch': true,
  626. 'isLandscape': true
  627. }
  628. },
  629. {
  630. 'name': 'Nexus 4',
  631. 'userAgent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  632. 'viewport': {
  633. 'width': 384,
  634. 'height': 640,
  635. 'deviceScaleFactor': 2,
  636. 'isMobile': true,
  637. 'hasTouch': true,
  638. 'isLandscape': false
  639. }
  640. },
  641. {
  642. 'name': 'Nexus 4 landscape',
  643. 'userAgent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  644. 'viewport': {
  645. 'width': 640,
  646. 'height': 384,
  647. 'deviceScaleFactor': 2,
  648. 'isMobile': true,
  649. 'hasTouch': true,
  650. 'isLandscape': true
  651. }
  652. },
  653. {
  654. 'name': 'Nexus 5',
  655. 'userAgent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  656. 'viewport': {
  657. 'width': 360,
  658. 'height': 640,
  659. 'deviceScaleFactor': 3,
  660. 'isMobile': true,
  661. 'hasTouch': true,
  662. 'isLandscape': false
  663. }
  664. },
  665. {
  666. 'name': 'Nexus 5 landscape',
  667. 'userAgent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  668. 'viewport': {
  669. 'width': 640,
  670. 'height': 360,
  671. 'deviceScaleFactor': 3,
  672. 'isMobile': true,
  673. 'hasTouch': true,
  674. 'isLandscape': true
  675. }
  676. },
  677. {
  678. 'name': 'Nexus 5X',
  679. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  680. 'viewport': {
  681. 'width': 412,
  682. 'height': 732,
  683. 'deviceScaleFactor': 2.625,
  684. 'isMobile': true,
  685. 'hasTouch': true,
  686. 'isLandscape': false
  687. }
  688. },
  689. {
  690. 'name': 'Nexus 5X landscape',
  691. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  692. 'viewport': {
  693. 'width': 732,
  694. 'height': 412,
  695. 'deviceScaleFactor': 2.625,
  696. 'isMobile': true,
  697. 'hasTouch': true,
  698. 'isLandscape': true
  699. }
  700. },
  701. {
  702. 'name': 'Nexus 6',
  703. 'userAgent': 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  704. 'viewport': {
  705. 'width': 412,
  706. 'height': 732,
  707. 'deviceScaleFactor': 3.5,
  708. 'isMobile': true,
  709. 'hasTouch': true,
  710. 'isLandscape': false
  711. }
  712. },
  713. {
  714. 'name': 'Nexus 6 landscape',
  715. 'userAgent': 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  716. 'viewport': {
  717. 'width': 732,
  718. 'height': 412,
  719. 'deviceScaleFactor': 3.5,
  720. 'isMobile': true,
  721. 'hasTouch': true,
  722. 'isLandscape': true
  723. }
  724. },
  725. {
  726. 'name': 'Nexus 6P',
  727. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  728. 'viewport': {
  729. 'width': 412,
  730. 'height': 732,
  731. 'deviceScaleFactor': 3.5,
  732. 'isMobile': true,
  733. 'hasTouch': true,
  734. 'isLandscape': false
  735. }
  736. },
  737. {
  738. 'name': 'Nexus 6P landscape',
  739. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  740. 'viewport': {
  741. 'width': 732,
  742. 'height': 412,
  743. 'deviceScaleFactor': 3.5,
  744. 'isMobile': true,
  745. 'hasTouch': true,
  746. 'isLandscape': true
  747. }
  748. },
  749. {
  750. 'name': 'Nexus 7',
  751. 'userAgent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Safari/537.36',
  752. 'viewport': {
  753. 'width': 600,
  754. 'height': 960,
  755. 'deviceScaleFactor': 2,
  756. 'isMobile': true,
  757. 'hasTouch': true,
  758. 'isLandscape': false
  759. }
  760. },
  761. {
  762. 'name': 'Nexus 7 landscape',
  763. 'userAgent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Safari/537.36',
  764. 'viewport': {
  765. 'width': 960,
  766. 'height': 600,
  767. 'deviceScaleFactor': 2,
  768. 'isMobile': true,
  769. 'hasTouch': true,
  770. 'isLandscape': true
  771. }
  772. },
  773. {
  774. 'name': 'Nokia Lumia 520',
  775. 'userAgent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)',
  776. 'viewport': {
  777. 'width': 320,
  778. 'height': 533,
  779. 'deviceScaleFactor': 1.5,
  780. 'isMobile': true,
  781. 'hasTouch': true,
  782. 'isLandscape': false
  783. }
  784. },
  785. {
  786. 'name': 'Nokia Lumia 520 landscape',
  787. 'userAgent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)',
  788. 'viewport': {
  789. 'width': 533,
  790. 'height': 320,
  791. 'deviceScaleFactor': 1.5,
  792. 'isMobile': true,
  793. 'hasTouch': true,
  794. 'isLandscape': true
  795. }
  796. },
  797. {
  798. 'name': 'Nokia N9',
  799. 'userAgent': 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13',
  800. 'viewport': {
  801. 'width': 480,
  802. 'height': 854,
  803. 'deviceScaleFactor': 1,
  804. 'isMobile': true,
  805. 'hasTouch': true,
  806. 'isLandscape': false
  807. }
  808. },
  809. {
  810. 'name': 'Nokia N9 landscape',
  811. 'userAgent': 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13',
  812. 'viewport': {
  813. 'width': 854,
  814. 'height': 480,
  815. 'deviceScaleFactor': 1,
  816. 'isMobile': true,
  817. 'hasTouch': true,
  818. 'isLandscape': true
  819. }
  820. },
  821. {
  822. 'name': 'Pixel 2',
  823. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  824. 'viewport': {
  825. 'width': 411,
  826. 'height': 731,
  827. 'deviceScaleFactor': 2.625,
  828. 'isMobile': true,
  829. 'hasTouch': true,
  830. 'isLandscape': false
  831. }
  832. },
  833. {
  834. 'name': 'Pixel 2 landscape',
  835. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  836. 'viewport': {
  837. 'width': 731,
  838. 'height': 411,
  839. 'deviceScaleFactor': 2.625,
  840. 'isMobile': true,
  841. 'hasTouch': true,
  842. 'isLandscape': true
  843. }
  844. },
  845. {
  846. 'name': 'Pixel 2 XL',
  847. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  848. 'viewport': {
  849. 'width': 411,
  850. 'height': 823,
  851. 'deviceScaleFactor': 3.5,
  852. 'isMobile': true,
  853. 'hasTouch': true,
  854. 'isLandscape': false
  855. }
  856. },
  857. {
  858. 'name': 'Pixel 2 XL landscape',
  859. 'userAgent': 'Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36',
  860. 'viewport': {
  861. 'width': 823,
  862. 'height': 411,
  863. 'deviceScaleFactor': 3.5,
  864. 'isMobile': true,
  865. 'hasTouch': true,
  866. 'isLandscape': true
  867. }
  868. }
  869. ];
  870. for (const device of module.exports)
  871. module.exports[device.name] = device;