browser 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -8
  3. data/CHANGELOG.md +9 -0
  4. data/README.md +12 -1
  5. data/Rakefile +1 -1
  6. data/bot_exceptions.yml +2 -0
  7. data/bots.yml +6 -2
  8. data/lib/browser.rb +1 -0
  9. data/lib/browser/accept_language.rb +5 -1
  10. data/lib/browser/action_controller.rb +1 -0
  11. data/lib/browser/aliases.rb +32 -0
  12. data/lib/browser/alipay.rb +1 -0
  13. data/lib/browser/base.rb +37 -31
  14. data/lib/browser/blackberry.rb +1 -0
  15. data/lib/browser/bot.rb +1 -0
  16. data/lib/browser/browser.rb +1 -0
  17. data/lib/browser/chrome.rb +1 -0
  18. data/lib/browser/detect_version.rb +1 -0
  19. data/lib/browser/device.rb +2 -1
  20. data/lib/browser/device/base.rb +1 -0
  21. data/lib/browser/device/blackberry_playbook.rb +1 -0
  22. data/lib/browser/device/ipad.rb +1 -0
  23. data/lib/browser/device/iphone.rb +1 -0
  24. data/lib/browser/device/ipod_touch.rb +1 -0
  25. data/lib/browser/device/kindle.rb +1 -0
  26. data/lib/browser/device/kindle_fire.rb +1 -0
  27. data/lib/browser/device/playstation3.rb +1 -0
  28. data/lib/browser/device/playstation4.rb +1 -0
  29. data/lib/browser/device/psp.rb +1 -0
  30. data/lib/browser/device/psvita.rb +1 -0
  31. data/lib/browser/device/surface.rb +1 -0
  32. data/lib/browser/device/tv.rb +1 -0
  33. data/lib/browser/device/unknown.rb +1 -0
  34. data/lib/browser/device/wii.rb +1 -0
  35. data/lib/browser/device/wiiu.rb +1 -0
  36. data/lib/browser/device/xbox_360.rb +1 -0
  37. data/lib/browser/device/xbox_one.rb +1 -0
  38. data/lib/browser/edge.rb +1 -0
  39. data/lib/browser/firefox.rb +1 -0
  40. data/lib/browser/generic.rb +1 -0
  41. data/lib/browser/internet_explorer.rb +1 -0
  42. data/lib/browser/meta.rb +1 -0
  43. data/lib/browser/meta/base.rb +1 -0
  44. data/lib/browser/meta/device.rb +1 -0
  45. data/lib/browser/meta/generic_browser.rb +1 -0
  46. data/lib/browser/meta/id.rb +1 -0
  47. data/lib/browser/meta/ie.rb +1 -0
  48. data/lib/browser/meta/ios.rb +1 -0
  49. data/lib/browser/meta/mobile.rb +1 -0
  50. data/lib/browser/meta/modern.rb +1 -0
  51. data/lib/browser/meta/platform.rb +1 -0
  52. data/lib/browser/meta/proxy.rb +1 -0
  53. data/lib/browser/meta/safari.rb +1 -0
  54. data/lib/browser/meta/tablet.rb +1 -0
  55. data/lib/browser/meta/webkit.rb +1 -0
  56. data/lib/browser/micro_messenger.rb +1 -0
  57. data/lib/browser/middleware.rb +1 -0
  58. data/lib/browser/middleware/context.rb +1 -0
  59. data/lib/browser/middleware/context/additions.rb +1 -0
  60. data/lib/browser/middleware/context/url_methods.rb +1 -0
  61. data/lib/browser/nokia.rb +1 -0
  62. data/lib/browser/opera.rb +1 -0
  63. data/lib/browser/phantom_js.rb +1 -0
  64. data/lib/browser/platform.rb +5 -4
  65. data/lib/browser/platform/adobe_air.rb +1 -0
  66. data/lib/browser/platform/android.rb +1 -0
  67. data/lib/browser/platform/base.rb +1 -0
  68. data/lib/browser/platform/blackberry.rb +1 -0
  69. data/lib/browser/platform/chrome_os.rb +1 -0
  70. data/lib/browser/platform/firefox_os.rb +1 -0
  71. data/lib/browser/platform/ios.rb +1 -0
  72. data/lib/browser/platform/linux.rb +1 -0
  73. data/lib/browser/platform/mac.rb +1 -0
  74. data/lib/browser/platform/other.rb +1 -0
  75. data/lib/browser/platform/windows.rb +1 -0
  76. data/lib/browser/platform/windows_mobile.rb +1 -0
  77. data/lib/browser/platform/windows_phone.rb +1 -0
  78. data/lib/browser/qq.rb +1 -0
  79. data/lib/browser/rails.rb +1 -0
  80. data/lib/browser/safari.rb +1 -0
  81. data/lib/browser/testing.rb +1 -0
  82. data/lib/browser/uc_browser.rb +1 -0
  83. data/lib/browser/version.rb +2 -1
  84. data/lib/browser/weibo.rb +1 -0
  85. data/test/browser_test.rb +5 -1
  86. data/test/middleware_test.rb +1 -0
  87. data/test/rails_test.rb +1 -0
  88. data/test/sample_app.rb +2 -1
  89. data/test/test_helper.rb +3 -2
  90. data/test/ua.yml +1 -0
  91. data/test/ua_bots.yml +4 -0
  92. data/test/unit/accept_language_test.rb +38 -1
  93. data/test/unit/adobe_air_test.rb +1 -0
  94. data/test/unit/aliases_test.rb +42 -0
  95. data/test/unit/alipay_test.rb +6 -0
  96. data/test/unit/android_test.rb +1 -0
  97. data/test/unit/blackberry_test.rb +1 -0
  98. data/test/unit/bots_test.rb +11 -0
  99. data/test/unit/chrome_test.rb +11 -0
  100. data/test/unit/console_test.rb +1 -0
  101. data/test/unit/device_test.rb +8 -0
  102. data/test/unit/edge_test.rb +60 -0
  103. data/test/unit/firefox_test.rb +6 -0
  104. data/test/unit/generic_test.rb +1 -0
  105. data/test/unit/{ie_test.rb → internet_explorer_test.rb} +1 -50
  106. data/test/unit/ios_app_test.rb +1 -0
  107. data/test/unit/ios_test.rb +1 -0
  108. data/test/unit/kindle_test.rb +1 -0
  109. data/test/unit/meta_test.rb +1 -0
  110. data/test/unit/micro_messenger_test.rb +6 -0
  111. data/test/unit/nokia_test.rb +6 -0
  112. data/test/unit/opera_test.rb +11 -0
  113. data/test/unit/platform_test.rb +3 -0
  114. data/test/unit/proxy_test.rb +1 -0
  115. data/test/unit/qq_test.rb +1 -0
  116. data/test/unit/safari_test.rb +6 -0
  117. data/test/unit/uc_browser_test.rb +6 -0
  118. data/test/unit/weibo_test.rb +7 -1
  119. data/test/unit/windows_phone_test.rb +1 -0
  120. data/test/unit/windows_test.rb +1 -0
  121. metadata +10 -6
  122. data/gemfiles/rails3.gemfile +0 -4
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class PSP < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class PSVita < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class Surface < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class TV < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class Unknown < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class Wii < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class WiiU < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class Xbox360 < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Device
4
5
  class XboxOne < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Edge < InternetExplorer
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Firefox < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Generic < Base
4
5
  NAMES = {
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class InternetExplorer < Base
4
5
  # https://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx#TriToken
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "browser/meta/base"
3
4
  require "browser/meta/generic_browser"
4
5
  require "browser/meta/id"
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  def self.rules
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Device < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class GenericBrowser < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Id < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class IE < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class IOS < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Mobile < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Modern < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Platform < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Proxy < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Safari < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Tablet < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  module Meta
4
5
  class Webkit < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class MicroMessenger < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "uri"
3
4
  require "browser/middleware/context"
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Middleware
4
5
  class Context
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "browser/middleware/context/url_methods"
3
4
 
4
5
  module Browser
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Middleware
4
5
  class Context
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Nokia < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Opera < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class PhantomJS < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "browser/platform/base"
3
4
  require "browser/platform/ios"
4
5
  require "browser/platform/linux"
@@ -48,12 +49,12 @@ module Browser
48
49
  .find(&:match?)
49
50
  end
50
51
 
51
- def adobe_air?
52
- id == :adobe_air
52
+ def adobe_air?(expected_version = nil)
53
+ id == :adobe_air && detect_version?(version, expected_version)
53
54
  end
54
55
 
55
- def chrome_os?
56
- id == :chrome_os
56
+ def chrome_os?(expected_version = nil)
57
+ id == :chrome_os && detect_version?(version, expected_version)
57
58
  end
58
59
 
59
60
  def android?(expected_version = nil)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class AdobeAir < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class Android < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class BlackBerry < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class ChromeOS < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class FirefoxOS < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class IOS < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class Linux < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class Mac < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class Other < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class Windows < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class WindowsMobile < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Platform
4
5
  class WindowsPhone < Base
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class QQ < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "rails/railtie"
3
4
  require "browser/action_controller"
4
5
  require "browser/middleware/context/additions"
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Safari < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  def self.user_agents
4
5
  @user_agents ||= browser_user_agents
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class UCBrowser < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
- VERSION = "2.3.0".freeze
4
+ VERSION = "2.4.0".freeze
4
5
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Browser
3
4
  class Weibo < Base
4
5
  def id
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
 
4
5
  class BrowserTest < Minitest::Test
@@ -73,6 +74,7 @@ class BrowserTest < Minitest::Test
73
74
  assert browser.quicktime?
74
75
  assert_equal "7.6.8", browser.full_version
75
76
  assert_equal "7", browser.version
77
+ assert browser.quicktime?(%w[>=7 <8])
76
78
  end
77
79
 
78
80
  test "detects core media" do
@@ -82,6 +84,7 @@ class BrowserTest < Minitest::Test
82
84
  assert browser.core_media?
83
85
  assert_equal "1.0.0.10", browser.full_version
84
86
  assert_equal "1", browser.version
87
+ assert browser.core_media?(%w[>=1 <2])
85
88
  end
86
89
 
87
90
  test "detects phantom.js" do
@@ -93,6 +96,7 @@ class BrowserTest < Minitest::Test
93
96
  assert browser.modern?
94
97
  assert_equal "1.9.0", browser.full_version
95
98
  assert_equal "1", browser.version
99
+ assert browser.phantom_js?(%w[>=1 <2])
96
100
  end
97
101
 
98
102
  test "returns a zero version" do
@@ -133,7 +137,7 @@ class BrowserTest < Minitest::Test
133
137
 
134
138
  test "removes duplicate items" do
135
139
  browser = Browser.new(Browser["SAFARI"])
136
- assert_equal ["safari"], browser.meta.select {|item| item == "safari" }
140
+ assert_equal ["safari"], (browser.meta.select {|item| item == "safari" })
137
141
  end
138
142
 
139
143
  test "detects meta aliased as to_a" do
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "test_helper"
3
4
  require "browser/rails"
4
5
  require "sample_app"