class Browser::Platform

Attributes

ua[R]

Public Class Methods

matchers() click to toggle source

Hold the list of platform matchers. Order is important.

# File lib/browser/platform.rb, line 26
def self.matchers
  @matchers ||= [
    AdobeAir,
    ChromeOS,
    WindowsMobile,
    WindowsPhone,
    Android,
    BlackBerry,
    IOS,
    Mac,
    KaiOS,
    FirefoxOS,
    Windows,
    Linux,
    Unknown
  ]
end
new(ua) click to toggle source
# File lib/browser/platform.rb, line 44
def initialize(ua)
  @ua = ua
end

Public Instance Methods

==(other) click to toggle source
# File lib/browser/platform.rb, line 122
def ==(other)
  id == other
end
adobe_air?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 54
def adobe_air?(expected_version = nil)
  id == :adobe_air && detect_version?(version, expected_version)
end
android?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 62
def android?(expected_version = nil)
  id == :android && detect_version?(version, expected_version)
end
android_app?() click to toggle source

Detect if in an Android app webview (Lollipop and newer) developer.chrome.com/multidevice/user-agent#webview_user_agent

# File lib/browser/platform.rb, line 138
def android_app?
  android? && ua.match?(/\bwv\b/)
end
Also aliased as: android_webview?
android_webview?()
Alias for: android_app?
blackberry?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 94
def blackberry?(expected_version = nil)
  id == :blackberry && detect_version?(version, expected_version)
end
chrome_os?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 58
def chrome_os?(expected_version = nil)
  id == :chrome_os && detect_version?(version, expected_version)
end
firefox_os?() click to toggle source
# File lib/browser/platform.rb, line 82
def firefox_os?
  id == :firefox_os
end
id() click to toggle source
# File lib/browser/platform.rb, line 106
def id
  subject.id
end
ios?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 90
def ios?(expected_version = nil)
  id == :ios && detect_version?(version, expected_version)
end
ios_app?() click to toggle source

Detect if running on iOS app webview.

# File lib/browser/platform.rb, line 127
def ios_app?
  ios? && !ua.include?("Safari")
end
ios_webview?() click to toggle source

Detect if is iOS webview.

# File lib/browser/platform.rb, line 132
def ios_webview?
  ios_app?
end
kai_os?() click to toggle source
# File lib/browser/platform.rb, line 86
def kai_os?
  id == :kai_os
end
linux?() click to toggle source
# File lib/browser/platform.rb, line 70
def linux?
  id == :linux
end
mac?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 74
def mac?(expected_version = nil)
  id == :mac && detect_version?(version, expected_version)
end
name() click to toggle source
# File lib/browser/platform.rb, line 114
def name
  subject.name
end
to_s() click to toggle source
# File lib/browser/platform.rb, line 118
def to_s
  id.to_s
end
unknown?() click to toggle source
# File lib/browser/platform.rb, line 66
def unknown?
  id == :unknown_platform
end
version() click to toggle source
# File lib/browser/platform.rb, line 110
def version
  subject.version
end
windows10?() click to toggle source
# File lib/browser/platform.rb, line 164
def windows10?
  windows? && ua.include?("Windows NT 10")
end
windows7?() click to toggle source
# File lib/browser/platform.rb, line 152
def windows7?
  windows? && ua.include?("Windows NT 6.1")
end
windows8?() click to toggle source
# File lib/browser/platform.rb, line 156
def windows8?
  windows? && ua.match?(/Windows NT 6\.[2-3]/)
end
windows8_1?() click to toggle source
# File lib/browser/platform.rb, line 160
def windows8_1?
  windows? && ua.include?("Windows NT 6.3")
end
windows?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 78
def windows?(expected_version = nil)
  id == :windows && detect_version?(version, expected_version)
end
windows_mobile?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 102
def windows_mobile?(expected_version = nil)
  id == :windows_mobile && detect_version?(version, expected_version)
end
windows_phone?(expected_version = nil) click to toggle source
# File lib/browser/platform.rb, line 98
def windows_phone?(expected_version = nil)
  id == :windows_phone && detect_version?(version, expected_version)
end
windows_rt?() click to toggle source
# File lib/browser/platform.rb, line 168
def windows_rt?
  windows8? && ua.include?("ARM")
end
windows_touchscreen_desktop?() click to toggle source
# File lib/browser/platform.rb, line 185
def windows_touchscreen_desktop?
  windows? && ua.include?("Touch")
end
windows_vista?() click to toggle source
# File lib/browser/platform.rb, line 148
def windows_vista?
  windows? && ua.include?("Windows NT 6.0")
end
windows_wow64?() click to toggle source
# File lib/browser/platform.rb, line 177
def windows_wow64?
  windows? && ua.match?(/WOW64/i)
end
windows_x64?() click to toggle source

Detect if current platform is Windows in 64-bit architecture.

# File lib/browser/platform.rb, line 173
def windows_x64?
  windows? && ua.match?(/(Win64|x64|Windows NT 5\.2)/)
end
windows_x64_inclusive?() click to toggle source
# File lib/browser/platform.rb, line 181
def windows_x64_inclusive?
  windows_x64? || windows_wow64?
end
windows_xp?() click to toggle source

msdn.microsoft.com/fr-FR/library/ms537503.aspx#PltToken

# File lib/browser/platform.rb, line 144
def windows_xp?
  windows? && ua.match?(/Windows NT 5\.[12]/)
end

Private Instance Methods

subject() click to toggle source
# File lib/browser/platform.rb, line 48
def subject
  @subject ||= self.class.matchers
                   .map {|matcher| matcher.new(ua, self) }
                   .find(&:match?)
end