- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / chromedriver / archive.py
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """Downloads items from the Chromium continuous archive."""
6
7 import os
8 import platform
9 import urllib
10
11 import util
12
13 CHROME_29_REVISION = '208261'
14 CHROME_30_REVISION = '217281'
15 CHROME_31_REVISION = '225096'
16
17 _SITE = 'http://commondatastorage.googleapis.com'
18
19
20 class Site(object):
21   CONTINUOUS = _SITE + '/chromium-browser-continuous'
22   SNAPSHOT = _SITE + '/chromium-browser-snapshots'
23
24
25 def GetLatestRevision(site=Site.CONTINUOUS):
26   """Returns the latest revision (as a string) available for this platform.
27
28   Args:
29     site: the archive site to check against, default to the continuous one.
30   """
31   url = site + '/%s/LAST_CHANGE'
32   return urllib.urlopen(url % _GetDownloadPlatform()).read()
33
34
35 def DownloadChrome(revision, dest_dir, site=Site.CONTINUOUS):
36   """Downloads the packaged Chrome from the archive to the given directory.
37
38   Args:
39     revision: the revision of Chrome to download.
40     dest_dir: the directory to download Chrome to.
41     site: the archive site to download from, default to the continuous one.
42
43   Returns:
44     The path to the unzipped Chrome binary.
45   """
46   def GetZipName():
47     if util.IsWindows():
48       return 'chrome-win32'
49     elif util.IsMac():
50       return 'chrome-mac'
51     elif util.IsLinux():
52       return 'chrome-linux'
53   def GetChromePathFromPackage():
54     if util.IsWindows():
55       return 'chrome.exe'
56     elif util.IsMac():
57       return 'Chromium.app/Contents/MacOS/Chromium'
58     elif util.IsLinux():
59       return 'chrome'
60   zip_path = os.path.join(dest_dir, 'chrome-%s.zip' % revision)
61   if not os.path.exists(zip_path):
62     url = site + '/%s/%s/%s.zip' % (_GetDownloadPlatform(), revision,
63                                     GetZipName())
64     print 'Downloading', url, '...'
65     urllib.urlretrieve(url, zip_path)
66   util.Unzip(zip_path, dest_dir)
67   return os.path.join(dest_dir, GetZipName(), GetChromePathFromPackage())
68
69
70 def _GetDownloadPlatform():
71   """Returns the name for this platform on the archive site."""
72   if util.IsWindows():
73     return 'Win'
74   elif util.IsMac():
75     return 'Mac'
76   elif util.IsLinux():
77     if platform.architecture()[0] == '64bit':
78       return 'Linux_x64'
79     else:
80       return 'Linux'