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_30_REVISION = '217281' 14 CHROME_31_REVISION = '225096' 15 CHROME_32_REVISION = '232870' 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' 81