cda577d421ddf8cbef69ffe0753248f6bb2769a4.svn-base 5.0 KB
package com.espeed.ua;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class SafariUtils {
	private static final String[][] webKitToSafariVersion = new String[][] {
		{"48", "0.8"},
		{"73", "0.9"},
		{"85", "1.0"},
		{"85.8.5", "1.0.3"},
		{"100", "1.1"},
		{"125", "1.2"},
		{"312", "1.3"},
		{"312.3", "1.3.1"},
		{"312.5", "1.3.2"},
		{"312.6", "1.3.2"},
		{"412", "2.0"},
		{"416.11", "2.0.2"},
		{"419.3", "2.0.4"},
		{"522.11", "3.0"},
		{"522.12", "3.0.2"},
		{"522.12.1", "3.0.3"},
		{"523.10", "3.0.4"},
		{"525.20", "3.1.1"},
		{"525.21", "3.1.2"},
		{"525.26", "3.2"},
		{"525.27", "3.2.1"},
		{"525.28", "3.2.3"},
		// {"530.17", "4.0.1"}, // ambiguity: Safari 4.0 for Mac 10.4-10.5 and Safari 4.0.1 for Windows vista and XP 
		{"530.18", "4.0.1"},
		{"530.19", "4.0.2"},
		{"531.9", "4.0.3"},
		{"531.21.10", "4.0.4"},
		{"531.22.7", "4.0.5"},
		
		// {"533.16", "4.1"}, // ambiguity: Safari 4.1  on MacOsX 10.4, Safari 5.0 on MacOsX 10.5-10.6 and Windows XP, Vista and 7  
		// {"533.17.8", "4.1.1"}, // ambiguity: Safari 4.1.1  on MacOsX 10.4, Safari 5.0.1 on MacOsX 10.5-10.6 and Windows XP, Vista and 7
		//{"533.18.5", "4.1.2"}, // ambiguity: Safari 4.1.2  on MacOsX 10.4, Safari 5.0.2 on MacOsX 10.5-10.6 and Windows XP, Vista and 7
		//{"533.19.4", "4.1.3"},// ambiguity: Safari 4.1.3  on MacOsX 10.4, Safari 5.0.3 on MacOsX 10.5-10.6 and Windows XP, Vista and 7
		
		{"533.20.27", "5.0.4"},
		{"533.21.1", "5.0.5"},
		{"533.22.3", "5.0.6"},
		{"534.48.3", "5.1"},
		{"534.51.22", "5.1.1"},
		{"534.52.7", "5.1.2"},
		{"534.53.10", "5.1.3"},
		{"534.54.16", "5.1.4"},
		{"534.55.3", "5.1.5"},
		{"534.56.5", "5.1.6"},
		{"534.57.2", "5.1.7"},
		{"534.58.2", "5.1.8"},
		{"534.59.8", "5.1.9"},
		{"534.59.10", "5.1.10"},
		{"536.25", "6.0"},
		{"536.26", "6.0.1"},
		{"536.26.17", "6.0.2"},
		{"536.28.10", "6.0.3"},
		{"536.29.13", "6.0.4"},
		{"536.30.1", "6.0.5"},
		{"537.43.58", "6.1"},
		//{"537.73.11", "6.1.1"}, // ambiguity: Safari 6.1.1 on OsX 10.7-10.8 and 7.0.1 on OsX 10.9
		
		
		// data is absent in wikipedia
//		{"", "6.1.2"},
//		{"", "6.1.3"},
//		{"", "6.1.4"},
//		{"", "6.1.5"},
		// {"537.78.2", "6.1.6"}, // ambiguity: Safari 6.1.6 on OsX 10.7-10.8 and 7.0.6 on OsX 10.9
		// data is absent in wikipedia
//		{"", "6.2"},
//		{"", "6.2.1"},
//		{"", "6.2.2"},
//		{"", "6.2.3"},
//		{"", "6.2.4"},
//		{"", "6.2.5"},
//		{"", "6.2.6"},
//		{"", "6.2.7"},
		
		
		// {"537.85.17", "6.2.8"}, // ambiguity: Safari 6.2.8 on OsX 10.8 and 7.1.8 on OsX 10.9 
		
		{"537.71", "7.0"},
		// data is absent in wikipedia
//		{"", "7.0.2"},
		{"537.75.14", "7.0.3"},
		{"537.76.4", "7.0.4"},
		{"537.77.4", "7.0.5"},
		
		////{"537.78.2", "7.0.6"}, //TODO ambiguity
		
		// data is absent in wikipedia
//		{"", "7.1"},
//		{"", "7.1.1"},
//		{"", "7.1.2"},
//		{"", "7.1.3"},
//		{"", "7.1.4"},
//		{"", "7.1.5"},
//		{"", "7.1.6"},
//		{"", "7.1.7"},
		{"538.35.8", "8.0"},

		// data is absent in wikipedia
//		{"", "8.0.1"},
//		{"", "8.0.2"},
//		{"", "8.0.3"},
//		{"", "8.0.4"},
//		{"", "8.0.5"},
		
		{"600.6.3", "8.0.6"},
		{"600.7.12", "8.0.7"},
		// data is absent in wikipedia
//		{"", "8.0.8"},
//		{"", "9.0"},
		
		{"601.2.7", "9.0.1"},
		{"601.3.9", "9.0.2"},
		{"601.4.4", "9.0.3"},
		{"601.5.17", "9.1"},
		{"601.6.17", "9.1.1"},
		{"601.7.1", "9.1.2"},
		{"601.7.8", "9.1.3"},
		
		// Safari 10.x
		{"602.1.50", "10"},
		{"602.2.14", "10.0.1"}, 
		{"602.3.12", "10.0.2"}, 
		{"602.4.8", "10.0.3"}, 
		{"603.1.30", "10.1"}, // New web technology additions and improvements.
		{"603.2.4", "10.1.1"},
		{"603.3.8", "10.1.2"},
		
		//Safari 11.x ... TODO
		
		{"522.11.3", "3.0"},
		{"522.13.1", "3.0.2"},
		{"522.12.2", "3.0.1"},
		{"522.15.5", "3.0.3"},
		{"523.12.9", "3.0.4"},
		{"523.13", "3.0.4"},
		{"523.15", "3.0.4"},
		// mac os 10.4 - 10.5 and Windows XP, Vista
		{"525.13", "3.1"},  
		{"525.17", "3.1.1"}, 
		{"525.21", "3.1.2"},
		
		{"525.26.13", "3.2"},
		{"525.27.1", "3.2.1"},
		{"525.28.1", "3.2.2"},
		{"525.29.1", "3.2.3"},
		
		{"526.12.2", "4.0"},
		{"528.1.1", "4.0"},

		{"526.11.2", "4.0"}, // actually 4.0 beta
		// 4.0 and 4.0 beta but since it is the same version we do not distinguish between 4.0 and 4.0 beta
		{"528.16", "4.0"}, 
		{"528.17", "4.0"},
		// end of 4.0 and 4.0 beta
		
		{"530.19.1", "4.0.2"},
		{"531.9.1", "4.0.3"},
		{"531.22.7", "4.0.5"},
		{"534.50", "5.1"},
	};
	private static final Map<String, Version> safariVersions;
	
	static {
		Map<String, Version> versions = new HashMap<String, Version>();
		for (String[] pair : webKitToSafariVersion) {
			String webKitVersion = pair[0];
			String browserVersion = pair[1];
			String[] parts = browserVersion.split("\\.");
			String majorVersion = parts[0]; 
			String minorVersion = parts.length > 1 ? parts[1] : null; 
			Version version = new Version(browserVersion, majorVersion, minorVersion);
			versions.put(webKitVersion, version);
		}
		safariVersions = Collections.unmodifiableMap(versions);
	}

	public static Map<String, Version> getWebKitToSafariVersion() {
		return safariVersions;
	}
}