1414root_dir = Path (os .path .realpath (__file__ )).parent .parent
1515
1616
17- def get_chrome_milestone ( ):
18- """Get the Chrome milestone from the channel.
17+ def latest_for_channel ( channel ):
18+ """Newest Chrome-for-Testing version entry for a channel.
1919
20- This is the same method from pinned_browser. Use --chrome_channel=Beta if
21- using early stable release .
20+ Uses Chrome-for-Testing's channel designation, which tracks the latest milestone and is
21+ unaffected by N-1 security respins .
2222 """
23- parser = argparse .ArgumentParser ()
24- parser .add_argument ("--chrome_channel" , default = "Stable" , help = "Set the Chrome channel" )
25- args = parser .parse_args ()
26- channel = args .chrome_channel
27-
28- r = http .request (
29- "GET" ,
30- f"https://chromiumdash.appspot.com/fetch_releases?channel={ channel } &num=1&platform=Mac,Linux" ,
31- )
32- all_versions = json .loads (r .data )
33- # use the same milestone for all Chrome releases, so pick the lowest
34- milestones = [version ["milestone" ] for version in all_versions if version ["milestone" ]]
35- if not milestones :
36- raise ValueError (f"No Chrome versions with milestones found for channel '{ channel } '" )
37- milestone = min (milestones )
38- r = http .request (
39- "GET" ,
40- "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json" ,
41- )
23+ url = "https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json"
24+ r = http .request ("GET" , url )
25+ if r .status != 200 :
26+ raise ValueError (f"Fetch failed (HTTP { r .status } ): { url } " )
27+ milestone = json .loads (r .data )["channels" ][channel ]["version" ].split ("." )[0 ]
28+ url = "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json"
29+ r = http .request ("GET" , url )
30+ if r .status != 200 :
31+ raise ValueError (f"Fetch failed (HTTP { r .status } ): { url } " )
4232 versions = json .loads (r .data )["versions" ]
43-
4433 return sorted (
4534 filter (lambda v : v ["version" ].split ("." )[0 ] == str (milestone ), versions ),
4635 key = lambda v : parse (v ["version" ]),
@@ -49,6 +38,8 @@ def get_chrome_milestone():
4938
5039def fetch_and_save (url , file_path ):
5140 response = http .request ("GET" , url )
41+ if response .status != 200 :
42+ raise ValueError (f"Fetch failed (HTTP { response .status } ): { url } " )
5243 with open (file_path , "wb" ) as file :
5344 file .write (response .data )
5445
@@ -79,6 +70,8 @@ def flatten_browser_pdl(file_path, chrome_version):
7970 for domain_file in includes :
8071 url = base_url + domain_file
8172 response = http .request ("GET" , url )
73+ if response .status != 200 :
74+ raise ValueError (f"Fetch failed (HTTP { response .status } ): { url } " )
8275 concatenated += response .data .decode ("utf-8" ) + "\n "
8376 # Overwrite the file with version block + concatenated domains
8477 with open (file_path , "w" ) as file :
@@ -213,7 +206,11 @@ def update_js(chrome_milestone):
213206
214207
215208if __name__ == "__main__" :
216- chrome_milestone = get_chrome_milestone ()
209+ parser = argparse .ArgumentParser ()
210+ parser .add_argument ("--chrome_channel" , default = "Stable" , help = "Set the Chrome channel (use Beta for early stable)" )
211+ args = parser .parse_args ()
212+
213+ chrome_milestone = latest_for_channel (args .chrome_channel )
217214 add_pdls (chrome_milestone )
218215 update_java (chrome_milestone )
219216 update_dotnet (chrome_milestone )
0 commit comments