Skip to content

Commit f0b3dcf

Browse files
committed
Better tablet detection
1 parent 9a029a9 commit f0b3dcf

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

ua.go

+16-3
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ func Parse(userAgent string) UserAgent {
171171
ua.Name = Firefox
172172
ua.Version = tokens.get(Firefox)
173173
ua.Mobile = tokens.exists("Mobile")
174-
ua.Tablet = strings.Contains(strings.ToLower(ua.String), "tablet")
174+
ua.Tablet = tokens.exists("Tablet")
175175

176176
case tokens.get("Vivaldi") != "":
177177
ua.Name = Vivaldi
@@ -489,6 +489,15 @@ func (p properties) exists(key string) bool {
489489
return false
490490
}
491491

492+
// func (p properties) existsIgnoreCase(key string) bool {
493+
// for _, prop := range p.list {
494+
// if strings.EqualFold(prop.Key, key) {
495+
// return true
496+
// }
497+
// }
498+
// return false
499+
// }
500+
492501
func (p properties) existsAny(keys ...string) bool {
493502
for _, k := range keys {
494503
for _, prop := range p.list {
@@ -548,7 +557,7 @@ func (p properties) findBestMatch(withVerOnly bool) string {
548557
for i := 0; i < n; i++ {
549558
for _, prop := range p.list {
550559
switch prop.Key {
551-
case Chrome, Firefox, Safari, "Version", "Mobile", "Mobile Safari", "Mozilla", "AppleWebKit", "Windows NT", "Windows Phone OS", Android, "Macintosh", Linux, "GSA", "CrOS":
560+
case Chrome, Firefox, Safari, "Version", "Mobile", "Mobile Safari", "Mozilla", "AppleWebKit", "Windows NT", "Windows Phone OS", Android, "Macintosh", Linux, "GSA", "CrOS", "Tablet":
552561
default:
553562
// don' pick if starts with number
554563
if len(prop.Key) != 0 && prop.Key[0] >= 48 && prop.Key[0] <= 57 {
@@ -589,7 +598,11 @@ func (p *properties) findAndroidDevice(startIndex int) string {
589598
case Chrome, Firefox, Safari, "Opera Mini", "Presto", "Version", "Mobile", "Mobile Safari", "Mozilla", "AppleWebKit", "Windows NT", "Windows Phone OS", Android, "Macintosh", Linux, "CrOS":
590599
// ignore this tokens, not device names
591600
default:
592-
p.list = append(p.list[:i+1], p.list[i+2:]...)
601+
if strings.Contains(strings.ToLower(dev), "tablet") {
602+
p.list[i+1].Key = "Tablet" // leave Tablet tag for later table detection
603+
} else {
604+
p.list = append(p.list[:i+1], p.list[i+2:]...)
605+
}
593606
return strings.TrimSpace(strings.TrimSuffix(dev, "Build"))
594607
}
595608
}

0 commit comments

Comments
 (0)