browser2 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.hound.yml +90 -0
- data/.rubocop.yml +90 -0
- data/.travis.yml +14 -0
- data/CONTRIBUTING.md +44 -0
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.md +125 -0
- data/Rakefile +33 -0
- data/browser2.gemspec +42 -0
- data/config.ru +2 -0
- data/data/bots.json +176 -0
- data/data/languages.json +115 -0
- data/gemfiles/rails3.gemfile +4 -0
- data/lib/browser/action_controller.rb +20 -0
- data/lib/browser/data/bots.rb +5 -0
- data/lib/browser/data/languages.rb +5 -0
- data/lib/browser/data/search_engines.rb +14 -0
- data/lib/browser/meta/base.rb +20 -0
- data/lib/browser/meta/generic_browser.rb +15 -0
- data/lib/browser/meta/id.rb +9 -0
- data/lib/browser/meta/ie.rb +18 -0
- data/lib/browser/meta/ios.rb +9 -0
- data/lib/browser/meta/mobile.rb +9 -0
- data/lib/browser/meta/modern.rb +9 -0
- data/lib/browser/meta/platform.rb +9 -0
- data/lib/browser/meta/safari.rb +9 -0
- data/lib/browser/meta/webkit.rb +9 -0
- data/lib/browser/methods/blackberry.rb +51 -0
- data/lib/browser/methods/bots.rb +37 -0
- data/lib/browser/methods/consoles.rb +43 -0
- data/lib/browser/methods/devices.rb +41 -0
- data/lib/browser/methods/ie.rb +104 -0
- data/lib/browser/methods/language.rb +16 -0
- data/lib/browser/methods/mobile.rb +30 -0
- data/lib/browser/methods/platform.rb +142 -0
- data/lib/browser/methods/tv.rb +8 -0
- data/lib/browser/middleware/context/additions.rb +16 -0
- data/lib/browser/middleware/context/url_methods.rb +13 -0
- data/lib/browser/middleware/context.rb +20 -0
- data/lib/browser/middleware.rb +66 -0
- data/lib/browser/rails.rb +14 -0
- data/lib/browser/version.rb +8 -0
- data/lib/browser.rb +255 -0
- data/test/benchmark_test.rb +83 -0
- data/test/browser_test.rb +248 -0
- data/test/middleware_test.rb +50 -0
- data/test/sample_app.rb +31 -0
- data/test/test_helper.rb +20 -0
- data/test/ua.yml +122 -0
- data/test/unit/adobe_air_test.rb +13 -0
- data/test/unit/android_test.rb +93 -0
- data/test/unit/blackberry_test.rb +104 -0
- data/test/unit/bots_test.rb +116 -0
- data/test/unit/chrome_test.rb +56 -0
- data/test/unit/console_test.rb +67 -0
- data/test/unit/firefox_test.rb +37 -0
- data/test/unit/ie_test.rb +377 -0
- data/test/unit/ios_test.rb +139 -0
- data/test/unit/kindle_test.rb +37 -0
- data/test/unit/opera_test.rb +42 -0
- data/test/unit/windows_phone_test.rb +50 -0
- data/test/unit/windows_test.rb +60 -0
- metadata +240 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class BrowserTest < Minitest::Test
|
|
4
|
+
test "yields self when block is given" do
|
|
5
|
+
browser = nil
|
|
6
|
+
Browser.new(ua: 'Chrome') {|b| browser = b }
|
|
7
|
+
assert_kind_of Browser, browser
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "responds to ua methods" do
|
|
11
|
+
@browser = Browser.new ua: 'Chrome'
|
|
12
|
+
assert @browser.respond_to?(:ua)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "delegates ua methods" do
|
|
16
|
+
@browser = Browser.new ua: 'Safari'
|
|
17
|
+
assert_equal 'Safari', @browser.ua
|
|
18
|
+
|
|
19
|
+
@browser = Browser.new ua: 'Mozilla'
|
|
20
|
+
assert_equal 'Mozilla', @browser.user_agent
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test "sets accept language while instantiating object" do
|
|
24
|
+
@browser = Browser.new ua: 'Chrome', accept_language: "pt-br"
|
|
25
|
+
assert_equal ["pt-br"], @browser.accept_language
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "sets user agent while instantianting object" do
|
|
29
|
+
@browser = Browser.new(:ua => "Safari")
|
|
30
|
+
assert_equal "Safari", @browser.ua
|
|
31
|
+
|
|
32
|
+
@browser = Browser.new(:user_agent => "Chrome")
|
|
33
|
+
assert_equal "Chrome", @browser.ua
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
test "detects android" do
|
|
37
|
+
@browser = Browser.new ua: $ua["ANDROID"]
|
|
38
|
+
|
|
39
|
+
assert_equal "Android", @browser.name
|
|
40
|
+
assert @browser.android?
|
|
41
|
+
refute @browser.safari?
|
|
42
|
+
assert @browser.webkit?
|
|
43
|
+
assert @browser.mobile?
|
|
44
|
+
refute @browser.tablet?
|
|
45
|
+
assert @browser.modern?
|
|
46
|
+
assert_equal "3.1.2", @browser.full_version
|
|
47
|
+
assert_equal "3", @browser.version
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
test "detects android tablet" do
|
|
51
|
+
@browser = Browser.new ua: $ua["TABLOID"]
|
|
52
|
+
|
|
53
|
+
assert_equal "Android", @browser.name
|
|
54
|
+
assert @browser.android?
|
|
55
|
+
refute @browser.safari?
|
|
56
|
+
assert @browser.webkit?
|
|
57
|
+
refute @browser.mobile?
|
|
58
|
+
assert @browser.tablet?
|
|
59
|
+
assert @browser.modern?
|
|
60
|
+
assert_equal "4.0", @browser.full_version
|
|
61
|
+
assert_equal "4", @browser.version
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
test "detects surface tablet" do
|
|
65
|
+
@browser = Browser.new ua: $ua["SURFACE"]
|
|
66
|
+
|
|
67
|
+
assert_equal "Internet Explorer", @browser.name
|
|
68
|
+
assert @browser.surface?
|
|
69
|
+
assert @browser.ie?
|
|
70
|
+
refute @browser.mobile?
|
|
71
|
+
assert @browser.tablet?
|
|
72
|
+
assert @browser.modern?
|
|
73
|
+
assert_equal "10.0", @browser.full_version
|
|
74
|
+
assert_equal "10", @browser.version
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
test "detects quicktime" do
|
|
78
|
+
@browser = Browser.new ua: $ua["QUICKTIME"]
|
|
79
|
+
|
|
80
|
+
assert_equal "QuickTime", @browser.name
|
|
81
|
+
assert @browser.quicktime?
|
|
82
|
+
assert_equal "7.6.8", @browser.full_version
|
|
83
|
+
assert_equal "7", @browser.version
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
test "detects core media" do
|
|
87
|
+
@browser = Browser.new ua: $ua["COREMEDIA"]
|
|
88
|
+
|
|
89
|
+
assert_equal "Apple CoreMedia", @browser.name
|
|
90
|
+
assert @browser.core_media?
|
|
91
|
+
assert_equal "1.0.0.10F569", @browser.full_version
|
|
92
|
+
assert_equal "1", @browser.version
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
test "detects phantom.js" do
|
|
96
|
+
@browser = Browser.new ua: $ua["PHANTOM_JS"]
|
|
97
|
+
|
|
98
|
+
assert_equal "PhantomJS", @browser.name
|
|
99
|
+
assert @browser.phantom_js?
|
|
100
|
+
refute @browser.tablet?
|
|
101
|
+
refute @browser.mobile?
|
|
102
|
+
assert @browser.modern?
|
|
103
|
+
assert_equal "1.9.0", @browser.full_version
|
|
104
|
+
assert_equal "1", @browser.version
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
test "detects other mobiles" do
|
|
108
|
+
@browser = Browser.new ua: "Symbian OS"
|
|
109
|
+
assert @browser.mobile?
|
|
110
|
+
refute @browser.tablet?
|
|
111
|
+
|
|
112
|
+
@browser = Browser.new ua: "MIDP-2.0"
|
|
113
|
+
assert @browser.mobile?
|
|
114
|
+
refute @browser.tablet?
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
test "detects windows mobile" do
|
|
118
|
+
@browser = Browser.new ua: $ua["WINDOWS_MOBILE"]
|
|
119
|
+
|
|
120
|
+
assert @browser.mobile?
|
|
121
|
+
assert @browser.windows?
|
|
122
|
+
assert @browser.windows_mobile?
|
|
123
|
+
refute @browser.windows_phone?
|
|
124
|
+
refute @browser.tablet?
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
test "returns a zero version" do
|
|
128
|
+
@browser = Browser.new ua: "Bot"
|
|
129
|
+
assert_equal "0.0", @browser.full_version
|
|
130
|
+
assert_equal "0", @browser.version
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
test "sets meta" do
|
|
134
|
+
@browser = Browser.new ua: $ua["CHROME"]
|
|
135
|
+
assert_kind_of Array, @browser.meta
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
test "returns string representation" do
|
|
139
|
+
@browser = Browser.new ua: $ua["CHROME"]
|
|
140
|
+
meta = @browser.to_s
|
|
141
|
+
|
|
142
|
+
assert meta.include?("chrome")
|
|
143
|
+
assert meta.include?("webkit")
|
|
144
|
+
assert meta.include?("mac")
|
|
145
|
+
assert meta.include?("modern")
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
test "returns string representation for mobile" do
|
|
149
|
+
@browser = Browser.new ua: $ua["BLACKBERRY"]
|
|
150
|
+
meta = @browser.to_s
|
|
151
|
+
|
|
152
|
+
assert meta.include?("blackberry")
|
|
153
|
+
assert meta.include?("blackberry4")
|
|
154
|
+
assert meta.include?("other")
|
|
155
|
+
assert meta.include?("mobile")
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
test "detects unknown id" do
|
|
159
|
+
@browser = Browser.new ua: "Unknown"
|
|
160
|
+
assert_equal :other, @browser.id
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
test "detects unknown name" do
|
|
164
|
+
@browser = Browser.new ua: "Unknown"
|
|
165
|
+
assert_equal "Other", @browser.name
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
test "detects mac platform" do
|
|
169
|
+
@browser = Browser.new ua: "Mac OS X"
|
|
170
|
+
assert_equal :mac, @browser.platform
|
|
171
|
+
assert @browser.mac?
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
test "detects linux platform" do
|
|
175
|
+
@browser = Browser.new ua: "Linux"
|
|
176
|
+
assert_equal :linux, @browser.platform
|
|
177
|
+
assert @browser.linux?
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
test "detects unknown platform" do
|
|
181
|
+
@browser = Browser.new ua: "Unknown"
|
|
182
|
+
assert_equal :other, @browser.platform
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
test "returns all known languages" do
|
|
186
|
+
@browser = Browser.new(
|
|
187
|
+
ua: "Unknown",
|
|
188
|
+
accept_language: "en-us,en;q=0.8,pt-br;q=0.5,pt;q=0.3"
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
assert_equal ["en-us", "en", "pt-br", "pt"], @browser.accept_language
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
test "detects xoom" do
|
|
195
|
+
@browser = Browser.new ua: $ua["XOOM"]
|
|
196
|
+
|
|
197
|
+
assert @browser.android?
|
|
198
|
+
assert @browser.tablet?
|
|
199
|
+
refute @browser.mobile?
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
test "detects nexus tablet" do
|
|
203
|
+
@browser = Browser.new ua: $ua["NEXUS_TABLET"]
|
|
204
|
+
|
|
205
|
+
assert @browser.android?
|
|
206
|
+
assert @browser.tablet?
|
|
207
|
+
refute @browser.mobile?
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
test "detects nook" do
|
|
211
|
+
@browser = Browser.new ua: $ua["NOOK"]
|
|
212
|
+
|
|
213
|
+
assert @browser.tablet?
|
|
214
|
+
refute @browser.mobile?
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
test "detects samsung" do
|
|
218
|
+
@browser = Browser.new ua: $ua["SAMSUNG"]
|
|
219
|
+
|
|
220
|
+
assert @browser.tablet?
|
|
221
|
+
refute @browser.mobile?
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
test "removes duplicate items" do
|
|
225
|
+
@browser = Browser.new ua: $ua["SAFARI"]
|
|
226
|
+
assert_equal ["safari"], @browser.meta.select {|item| item == "safari" }
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
test "detects meta aliased as to_a" do
|
|
230
|
+
@browser = Browser.new ua: $ua["SAFARI"]
|
|
231
|
+
assert_equal @browser.meta, @browser.to_a
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
test "detects tv" do
|
|
235
|
+
@browser = Browser.new ua: $ua["SMART_TV"]
|
|
236
|
+
assert @browser.tv?
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
test "knows a supported browser" do
|
|
240
|
+
@browser = Browser.new ua: "Chrome"
|
|
241
|
+
assert @browser.known?
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
test "does not know an unsupported browser" do
|
|
245
|
+
@browser = Browser.new ua: "Fancy new browser"
|
|
246
|
+
refute @browser.known?
|
|
247
|
+
end
|
|
248
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
require "browser/rails"
|
|
3
|
+
require "sample_app"
|
|
4
|
+
|
|
5
|
+
class Browser::MiddlewareTest < Minitest::Test
|
|
6
|
+
include Rack::Test::Methods
|
|
7
|
+
|
|
8
|
+
def app
|
|
9
|
+
Rails.application
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test "redirects with 302" do
|
|
13
|
+
get "/", {}, {"HTTP_USER_AGENT" => "MSIE 6", "HTTP_ACCEPT" => "text/html"}
|
|
14
|
+
assert_equal 302, last_response.status
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
test "redirects ie6 to upgrade path" do
|
|
18
|
+
get "/", {}, {"HTTP_USER_AGENT" => "MSIE 6", "HTTP_ACCEPT" => "text/html"}
|
|
19
|
+
follow_redirect!
|
|
20
|
+
|
|
21
|
+
assert_equal "UPGRADE: ie6", last_response.body
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "redirects ie7 to upgrade path" do
|
|
25
|
+
get "/", {}, {"HTTP_USER_AGENT" => "MSIE 7", "HTTP_ACCEPT" => "text/html"}
|
|
26
|
+
follow_redirect!
|
|
27
|
+
|
|
28
|
+
assert_equal "UPGRADE: ie7", last_response.body
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test "redirects ie8 and returns 404" do
|
|
32
|
+
get "/", {}, {"HTTP_USER_AGENT" => "MSIE 8", "HTTP_ACCEPT" => "text/html"}
|
|
33
|
+
follow_redirect!
|
|
34
|
+
|
|
35
|
+
assert_equal 404, last_response.status
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test "redirects ie8 with wildcard http accept" do
|
|
39
|
+
get "/", {}, {"HTTP_USER_AGENT" => "MSIE 8", "HTTP_ACCEPT" => "*/*"}
|
|
40
|
+
follow_redirect!
|
|
41
|
+
|
|
42
|
+
assert_equal 404, last_response.status
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
test "ignores non-html requests" do
|
|
46
|
+
get "/", {}, {"HTTP_USER_AGENT" => "MSIE 6", "HTTP_ACCEPT" => "image/png"}
|
|
47
|
+
|
|
48
|
+
assert_equal 200, last_response.status
|
|
49
|
+
end
|
|
50
|
+
end
|
data/test/sample_app.rb
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require "rails"
|
|
2
|
+
require "browser"
|
|
3
|
+
|
|
4
|
+
class SampleApp < Rails::Application
|
|
5
|
+
config.secret_token = "99f19f08db7a37bdcb9d6701f54dca"
|
|
6
|
+
config.secret_key_base = "99f19f08db7a37bdcb9d6701f54dca"
|
|
7
|
+
config.eager_load = true
|
|
8
|
+
config.active_support.deprecation = :log
|
|
9
|
+
|
|
10
|
+
routes.append do
|
|
11
|
+
default_headers = {"Content-Type" => "text/html"}
|
|
12
|
+
|
|
13
|
+
root to: -> env { [200, default_headers, ["ROOT"]] }
|
|
14
|
+
get "upgrade", to: -> env {
|
|
15
|
+
browser = Rack::Request.new(env).params["browser"]
|
|
16
|
+
[200, default_headers, ["UPGRADE: #{browser}"]]
|
|
17
|
+
}, as: "upgrade"
|
|
18
|
+
|
|
19
|
+
get "/asset", to: -> env {
|
|
20
|
+
[200, {"Content-Type" => "image/png"}, []]
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
config.middleware.use Browser::Middleware do
|
|
25
|
+
redirect_to upgrade_path(browser: "ie6") if browser.ie?(6)
|
|
26
|
+
redirect_to upgrade_path(browser: "ie7") if browser.ie?(7)
|
|
27
|
+
redirect_to "/invalid" if browser.ie?(8)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
SampleApp.initialize!
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
|
|
2
|
+
require "bundler/setup"
|
|
3
|
+
require "minitest/autorun"
|
|
4
|
+
require "minitest/utils"
|
|
5
|
+
require "browser"
|
|
6
|
+
require "yaml"
|
|
7
|
+
|
|
8
|
+
$ua = YAML.load_file("./test/ua.yml")
|
|
9
|
+
|
|
10
|
+
class Minitest::Test
|
|
11
|
+
setup do
|
|
12
|
+
Browser::Bots.instance_variable_set("@detect_empty_ua", false)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def assert_deprecated(message, file, line, &block)
|
|
16
|
+
message = "#{message} (called from #{file}:#{line})"
|
|
17
|
+
out, err = capture_io(&block)
|
|
18
|
+
assert_includes err, message
|
|
19
|
+
end
|
|
20
|
+
end
|
data/test/ua.yml
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
ADOBE_AIR: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/13.0'
|
|
2
|
+
ANDROID: 'Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'
|
|
3
|
+
ANDROID_CUPCAKE: Mozilla/5.0 (Linux; U; Android 1.5; en-gb; T-Mobile G1 Build/CRC1) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
|
|
4
|
+
ANDROID_DONUT: Mozilla/5.0 (Linux; U; Android 1.6; ar-us; SonyEricssonX10i Build/R2BA026) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
|
|
5
|
+
ANDROID_ECLAIR_21: Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
|
|
6
|
+
ANDROID_FROYO: Mozilla/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
|
|
7
|
+
ANDROID_GINGERBREAD: Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; Sensation_4G Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/5.0 Safari/533.16
|
|
8
|
+
ANDROID_HONEYCOMB_30: Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13
|
|
9
|
+
ANDROID_ICECREAM: Mozilla/5.0 (Linux; U; Android 4.0.1; en-us; sdk Build/ICS_MR0) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
|
|
10
|
+
ANDROID_JELLYBEAN_41: Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Nexus S Build/JRO03E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
|
|
11
|
+
ANDROID_JELLYBEAN_42: Mozilla/5.0 (Linux; U; Android 4.2; en-us; Nexus 10 Build/JVP15I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30
|
|
12
|
+
ANDROID_JELLYBEAN_43: Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JWR66D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.111 Safari/537.36
|
|
13
|
+
ANDROID_KITKAT: Mozilla/5.0 (Linux; Android 4.4; Nexus 7 Build/KOT24) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.105 Safari/537.36
|
|
14
|
+
ANDROID_LOLLIPOP_50: Mozilla/5.0 (Linux; Android 5.0; Nexus 5 Build/LPX13D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36
|
|
15
|
+
ANDROID_LOLLIPOP_51: Mozilla/5.0 (Linux; Android 5.1; Nexus 5 Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.0.0 Mobile Safari/537.36; DailymotionEmbedSDK 1.0
|
|
16
|
+
ANDROID_NEXUS_PLAYER: Mozilla/5.0 (Linux; Android 5.0; Nexus Player Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.0
|
|
17
|
+
ANDROID_TV: Mozilla/5.0 (Linux; Android 5.0; ADT-1 Build/LRW87K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36
|
|
18
|
+
ANDROID_WITH_SAFARI: 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SCH-I535 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
|
|
19
|
+
APPLE_BOT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1)'
|
|
20
|
+
ASK: 'Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://sp.ask.com/docs/about/tech_crawling.html)'
|
|
21
|
+
BAIDU: 'Baiduspider+(+http://www.baidu.com/search/spider.htm)'
|
|
22
|
+
BINGBOT: 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)'
|
|
23
|
+
BLACKBERRY10: 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.1675 Mobile Safari/537.10+'
|
|
24
|
+
BLACKBERRY4: 'BlackBerry8100/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103'
|
|
25
|
+
BLACKBERRY5: 'BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179'
|
|
26
|
+
BLACKBERRY6: 'Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.11+'
|
|
27
|
+
BLACKBERRY7: 'Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.1 Mobile Safari/534.11+'
|
|
28
|
+
BLACKBERRY: 'BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103'
|
|
29
|
+
CHROME: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4'
|
|
30
|
+
CHROME_OS: 'Mozilla/5.0 (X11; CrOS x86_64 3701.81.0) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.57 Safari/537.31.'
|
|
31
|
+
COREMEDIA: 'Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569'
|
|
32
|
+
DAUMOA: Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daumoa 4.0
|
|
33
|
+
DOMAINAREANIMATOR: 'Domain Re-Animator Bot (http://domainreanimator.com) - support@domainreanimator.com'
|
|
34
|
+
DOT_BOT: 'Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)'
|
|
35
|
+
DUCKDUCKGO: 'DuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)'
|
|
36
|
+
FACEBOOK_BOT: 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'
|
|
37
|
+
FIREFOX: 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8'
|
|
38
|
+
FIREFOX_MODERN: 'Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:17.0) Gecko/20100101 Firefox/17.0'
|
|
39
|
+
FIREFOX_TABLET: 'Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0'
|
|
40
|
+
GOOGLE_BOT: 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
|
|
41
|
+
GOOGLE_PAGE_SPEED_INSIGHTS: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko; Google Page Speed Insights) Chrome/22.0.1229 Safari/537.4'
|
|
42
|
+
GOOGLE_STRUCTURED_DATA_TESTING_TOOL: 'Mozilla/5.0 (compatible; X11; Linux x86_64; Google-StructuredDataTestingTool; +http://www.google.com/webmasters/tools/richsnippets)'
|
|
43
|
+
GRAPESHOT: 'Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)'
|
|
44
|
+
IE10: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; EIE10;ENUSMSN)'
|
|
45
|
+
IE10_COMPAT: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; EIE10;ENUSMSN)'
|
|
46
|
+
IE10_X64_WINX64: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)'
|
|
47
|
+
IE11: 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
|
|
48
|
+
IE11_COMPAT: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)'
|
|
49
|
+
IE11_TOUCH_SCREEN: 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; rv:11.0) like Gecko'
|
|
50
|
+
IE6: 'Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)'
|
|
51
|
+
IE7: 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)'
|
|
52
|
+
IE8: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)'
|
|
53
|
+
IE8_COMPAT: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; Media Center PC 5.0; .NET CLR 3.5.21022)'
|
|
54
|
+
IE9: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
|
|
55
|
+
IE9_COMPAT: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)'
|
|
56
|
+
IE_WITHOUT_TRIDENT: Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.0) .NET CLR 2.0.50727)
|
|
57
|
+
IOS4: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7'
|
|
58
|
+
IOS5: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3'
|
|
59
|
+
IOS6: 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'
|
|
60
|
+
IOS7: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53'
|
|
61
|
+
IOS8: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4'
|
|
62
|
+
IOS9: 'Mozilla/5.0 (iPad; CPU OS 9_0 like Mac OS X) AppleWebKit/601.1.17 (KHTML, like Gecko) Version/8.0 Mobile/13A175 Safari/600.1.4'
|
|
63
|
+
IPAD: 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10'
|
|
64
|
+
IPHONE: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/1A542a Safari/419.3'
|
|
65
|
+
IPOD: 'Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3'
|
|
66
|
+
KINDLE: 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate)'
|
|
67
|
+
KINDLE_FIRE: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
|
|
68
|
+
KINDLE_FIRE_HD: 'Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true'
|
|
69
|
+
KINDLE_FIRE_HD_MOBILE: 'Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true'
|
|
70
|
+
LINKDEXBOT: 'Mozilla/5.0 (compatible; linkdexbot/2.0; +http://www.linkdex.com/bots/)'
|
|
71
|
+
LOAD_TIME_BOT: 'Mozilla/5.0 (compatible; LoadTimeBot/0.9; +http://www.loadtime.net/bot.html)'
|
|
72
|
+
LUMIA800: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7'
|
|
73
|
+
MAIL_RU: 'Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots)'
|
|
74
|
+
MEGAINDEX_RU: 'Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +https://www.megaindex.ru/?tab=linkAnalyze)'
|
|
75
|
+
MOBILE_CHROME: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3'
|
|
76
|
+
MS_EDGE: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'
|
|
77
|
+
MS_EDGE_COMPAT: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; Tablet PC 2.0; Microsoft Outlook 15.0.4433; ms-office; MSOffice 15)'
|
|
78
|
+
MS_EDGE_MOBILE: 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0'
|
|
79
|
+
MSN_BOT: 'msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)'
|
|
80
|
+
NEXUS_TABLET: 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
|
|
81
|
+
NINTENDO_WII: 'Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)'
|
|
82
|
+
NINTENDO_WIIU: 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU'
|
|
83
|
+
NOOK: 'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250A Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1'
|
|
84
|
+
OPERA: 'Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64'
|
|
85
|
+
OPERA_MINI: 'Opera/9.80 (Android; Opera Mini/7.029952/28.2359;u; fr) Presto/2.8.119 Version/11.10'
|
|
86
|
+
OPERA_MOBI: 'Opera/9.8 (Android 2.3.5; Linux; Opera Mobi/ADR-1205181138; U; en) Presto/2.10.254 Version/12.00'
|
|
87
|
+
OPERA_NEXT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36 OPR/15.0.1147.44 (Edition Next)'
|
|
88
|
+
PHANTOM_JS: 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34'
|
|
89
|
+
PLAYBOOK: '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+'
|
|
90
|
+
PLAYSTATION3: 'Mozilla/5.0 (PLAYSTATION 3; 3.55)'
|
|
91
|
+
PLAYSTATION4: 'Mozilla/5.0 (PlayStation 4 1.020) AppleWebKit/536.26 (KHTML, like Gecko)'
|
|
92
|
+
PSP: 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)'
|
|
93
|
+
PSP_VITA: 'Mozilla/5.0 (Playstation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2'
|
|
94
|
+
QUERYSEEKER: 'QuerySeekerSpider ( http://queryseeker.com/bot.html )'
|
|
95
|
+
QUICKTIME: 'QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)'
|
|
96
|
+
SAFARI: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8'
|
|
97
|
+
SAFARI_IPAD_WEBAPP_MODE: 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405'
|
|
98
|
+
SAFARI_IPHONE_WEBAPP_MODE: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g'
|
|
99
|
+
SAMSUNG: 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; SAMSUNG-SGH-I497 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30'
|
|
100
|
+
SAMSUNG_CHROME: 'Mozilla/5.0 (Linux; Android 4.4.2; en-gb; SAMSUNG GT-I9195/I9195XXUCNEA Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36'
|
|
101
|
+
SCRAPY: 'Scrapy/0.18.4 (+http://scrapy.org)'
|
|
102
|
+
SMART_TV: 'Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0 SmartTV Safari/531.2+'
|
|
103
|
+
SURFACE: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)'
|
|
104
|
+
TABLOID: 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13'
|
|
105
|
+
TINEYE: 'TinEye-bot/0.51 (see http://www.tineye.com/crawler.html)'
|
|
106
|
+
WINDOWS7: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) chromeframe/10.0.648.205'
|
|
107
|
+
WINDOWS81: 'Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko'
|
|
108
|
+
WINDOWS8: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'
|
|
109
|
+
WINDOWS_MOBILE: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)'
|
|
110
|
+
WINDOWS_PHONE8: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)'
|
|
111
|
+
WINDOWS_PHONE: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)'
|
|
112
|
+
WINDOWS_PHONE_81: 'Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 929) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537'
|
|
113
|
+
WINDOWS_VISTA: 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'
|
|
114
|
+
WINDOWS_WOW64: "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko"
|
|
115
|
+
WINDOWS_XP: 'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; FDM; .NET CLR 1.1.4322)'
|
|
116
|
+
XBOX360: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox), or Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)'
|
|
117
|
+
XBOXONE: 'Mozilla/5.0 (Compatible; MSIE 10.0; Windows NT 6.2; Trident /6.0; Xbox; Xbox One)'
|
|
118
|
+
XOOM: 'Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13'
|
|
119
|
+
YAHOO_SLURP: 'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)'
|
|
120
|
+
YANDEX_BROWSER: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 YaBrowser/15.4.2272.3909 (beta) Yowser/2.0 Safari/537.36'
|
|
121
|
+
YANDEX_DIRECT: 'Mozilla/5.0 (compatible; YandexDirect/3.0; +http://yandex.com/bots)'
|
|
122
|
+
YANDEX_METRIKA: 'Mozilla/5.0 (compatible; YandexMetrika/3.0; +http://yandex.com/bots)'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class AdobeAirTest < Minitest::Test
|
|
4
|
+
test "detects adobe air" do
|
|
5
|
+
@browser = Browser.new ua: $ua["ADOBE_AIR"]
|
|
6
|
+
|
|
7
|
+
assert @browser.adobe_air?
|
|
8
|
+
assert @browser.webkit?
|
|
9
|
+
assert_equal @browser.version, "13"
|
|
10
|
+
assert_equal @browser.full_version, "13.0"
|
|
11
|
+
assert_equal @browser.name, "Other"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class AndroidTest < Minitest::Test
|
|
4
|
+
test "detect android cupcake (1.5)" do
|
|
5
|
+
@browser = Browser.new ua: $ua['ANDROID_CUPCAKE']
|
|
6
|
+
assert @browser.android?
|
|
7
|
+
assert @browser.android?(1.5)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "detect android donut (1.6)" do
|
|
11
|
+
@browser = Browser.new ua: $ua['ANDROID_DONUT']
|
|
12
|
+
assert @browser.android?
|
|
13
|
+
assert @browser.android?(1.6)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test "detect android eclair (2.1)" do
|
|
17
|
+
@browser = Browser.new ua: $ua['ANDROID_ECLAIR_21']
|
|
18
|
+
assert @browser.android?
|
|
19
|
+
assert @browser.android?(2.1)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test "detect android froyo (2.2)" do
|
|
23
|
+
@browser = Browser.new ua: $ua['ANDROID_FROYO']
|
|
24
|
+
assert @browser.android?
|
|
25
|
+
assert @browser.android?(2.2)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "detect android gingerbread (2.3)" do
|
|
29
|
+
@browser = Browser.new ua: $ua['ANDROID_GINGERBREAD']
|
|
30
|
+
assert @browser.android?
|
|
31
|
+
assert @browser.android?(2.3)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test "detect android honeycomb (3.0)" do
|
|
35
|
+
@browser = Browser.new ua: $ua['ANDROID_HONEYCOMB_30']
|
|
36
|
+
assert @browser.android?
|
|
37
|
+
assert @browser.android?(3.0)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "detect android ice cream sandwich (4.0)" do
|
|
41
|
+
@browser = Browser.new ua: $ua['ANDROID_ICECREAM']
|
|
42
|
+
assert @browser.android?
|
|
43
|
+
assert @browser.android?(4.0)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test "detect android jellybean (4.1)" do
|
|
47
|
+
@browser = Browser.new ua: $ua['ANDROID_JELLYBEAN_41']
|
|
48
|
+
assert @browser.android?
|
|
49
|
+
assert @browser.android?(4.1)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test "detect android jellybean (4.2)" do
|
|
53
|
+
@browser = Browser.new ua: $ua['ANDROID_JELLYBEAN_42']
|
|
54
|
+
assert @browser.android?
|
|
55
|
+
assert @browser.android?(4.2)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test "detect android jellybean (4.3)" do
|
|
59
|
+
@browser = Browser.new ua: $ua['ANDROID_JELLYBEAN_43']
|
|
60
|
+
assert @browser.android?
|
|
61
|
+
assert @browser.android?(4.3)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
test "detect android kitkat (4.4)" do
|
|
65
|
+
@browser = Browser.new ua: $ua['ANDROID_KITKAT']
|
|
66
|
+
assert @browser.android?
|
|
67
|
+
assert @browser.android?(4.4)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
test "detect android lollipop (5.0)" do
|
|
71
|
+
@browser = Browser.new ua: $ua['ANDROID_LOLLIPOP_50']
|
|
72
|
+
assert @browser.android?
|
|
73
|
+
assert @browser.android?(5.0)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
test "detect android lollipop (5.1)" do
|
|
77
|
+
@browser = Browser.new ua: $ua['ANDROID_LOLLIPOP_51']
|
|
78
|
+
assert @browser.android?
|
|
79
|
+
assert @browser.android?(5.1)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
test "detect android tv" do
|
|
83
|
+
@browser = Browser.new ua: $ua['ANDROID_TV']
|
|
84
|
+
assert @browser.android?
|
|
85
|
+
assert @browser.tv?
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
test "detect nexus player" do
|
|
89
|
+
@browser = Browser.new ua: $ua['ANDROID_NEXUS_PLAYER']
|
|
90
|
+
assert @browser.android?
|
|
91
|
+
assert @browser.tv?
|
|
92
|
+
end
|
|
93
|
+
end
|