Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
firefox-merge-…
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
executable file 81 lines (69 sloc) 3.3 KB
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import UIKit
open class DeviceInfo {
// List of device names that don't support advanced visual settings
static let lowGraphicsQualityModels = ["iPad", "iPad1,1", "iPhone1,1", "iPhone1,2", "iPhone2,1", "iPhone3,1", "iPhone3,2", "iPhone3,3", "iPod1,1", "iPod2,1", "iPod2,2", "iPod3,1", "iPod4,1", "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4", "iPad3,1", "iPad3,2", "iPad3,3"]
open static var specificModelName: String {
var systemInfo = utsname()
uname(&systemInfo)
let machine = systemInfo.machine
let mirror = Mirror(reflecting: machine)
var identifier = ""
// Parses the string for the model name via NSUTF8StringEncoding, refer to
// http://stackoverflow.com/questions/26028918/ios-how-to-determine-iphone-model-in-swift
for child in mirror.children.enumerated() {
if let value = child.1.value as? Int8, value != 0 {
identifier.append(String(UnicodeScalar(UInt8(value))))
}
}
return identifier
}
/// Return the client name, which can be either "Fennec on Stefan's iPod" or simply "Stefan's iPod" if the application display name cannot be obtained.
open class func defaultClientName() -> String {
let format = NSLocalizedString("%@ on %@", tableName: "Shared", comment: "A brief descriptive name for this app on this device, used for Send Tab and Synced Tabs. The first argument is the app name. The second argument is the device name.")
return String(format: format, AppInfo.displayName, UIDevice.current.name)
}
open class func clientIdentifier(_ prefs: Prefs) -> String {
if let id = prefs.stringForKey("clientIdentifier") {
return id
}
let id = UUID().uuidString
prefs.setString(id, forKey: "clientIdentifier")
return id
}
open class func deviceModel() -> String {
return UIDevice.current.model
}
open class func isSimulator() -> Bool {
return ProcessInfo.processInfo.environment["SIMULATOR_ROOT"] != nil
}
open class func isBlurSupported() -> Bool {
// We've tried multiple ways to make this change visible on simulators, but we
// haven't found a solution that worked:
// 1. http://stackoverflow.com/questions/21603475/how-can-i-detect-if-the-iphone-my-app-is-on-is-going-to-use-a-simple-transparen
// 2. https://gist.github.com/conradev/8655650
// Thus, testing has to take place on actual devices.
return !lowGraphicsQualityModels.contains(specificModelName)
}
open class func hasConnectivity() -> Bool {
let status = Reach().connectionStatus()
switch status {
case .online(.wwan), .online(.wiFi):
return true
default:
return false
}
}
// Cliqz: added hasWwanConnectivity() method to check if the device is connected via wwan
open class func hasWwanConnectivity() -> Bool {
let status = Reach().connectionStatus()
switch status {
case .online(.wwan):
return true
default:
return false
}
}
}