3.9 KiB
			
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.9 KiB
			
		
	
	
	
	
	
	
	
Upgrading Chromium Workflow
This document is meant to serve as an overview of what steps are needed on each Chromium upgrade in Electron.
Update libchromiumcontent (a.k.a. libcc)
- Clone the repo:
 
git clone git@github.com:electron/libchromiumcontent.git
cd libchromiumcontent
- Run bootstrap script to init and sync git submodules:
 
./script/bootstrap -v
- Update 
VERSIONfile to correspond to Chromium version. - Run 
script/update, it will probably fail applying patches. - Fix failing patches. 
script/patch.pymight help.- Don't forget to fix patches in the 
patches-mas/folder. 
 - Don't forget to fix patches in the 
 - Build libcc:
 
./script/build
- Create dist folders which will be used by electron:
 
./script/create-dist --no_zip
cd dist/main
../../tools/generate_filenames_gypi filenames.gypi src shared_library static_library
cd -
- Open a pull request to 
electron/libchromiumcontentwith the changes. - Fix compilation on the all supported platforms/arches.
 
Update Electron
- Set 
vendor/libchromiumcontentrevision to a version with the new Chromium.- It will be great if GH builds for this libcc version are already green and its archives are already available. Otherwise everyone would need to build libcc locally in order to try build a new Electron.
 
 - Set 
CLANG_REVISIONinscript/update-clang.shto match the version Chromium is using. You can find it in filesrc/tools/clang/scripts/update.pyin updatedelectron/libchromiumcontentrepo. - Run 
script/bootstrap.py. - Upgrade Node.js if you are willing to. See the notes below.
 - Fix compilation.
 - Open a pull request on 
electron/electronwith the changes.- This should include upgrading the submodules in 
vendor/as needed. 
 - This should include upgrading the submodules in 
 - Fix failing tests.
 
Upgrade Node.js
- Upgrade 
vendor/nodeto the Node release that corresponds to the v8 version being used in the new Chromium release. See the v8 versions in Node on https://nodejs.org/en/download/releases for more details.- You can find v8 version Chromium is using on OmahaProxy.
If it's not available check 
v8/include/v8-version.hin the Chromium checkout. 
 - You can find v8 version Chromium is using on OmahaProxy.
If it's not available check 
 
Troubleshooting
TODO
Verify ffmpeg Support
Electron ships with a version of ffmpeg that includes proprietary codecs by
default. A version without these codecs is built and distributed with each
release as well. Each Chrome upgrade should verify that switching this version is
still supported.
You can verify Electron's support for multiple ffmpeg builds by loading the
following page. It should work with the default ffmpeg library distributed
with Electron and not work with the ffmpeg library built without proprietary
codecs.
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Proprietary Codec Check</title>
  </head>
  <body>
    <p>Checking if Electron is using proprietary codecs by loading video from http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4</p>
    <p id="outcome"></p>
    <video style="display:none" src="http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4" autoplay></video>
    <script>
      const video = document.querySelector('video')
      video.addEventListener('error', ({target}) => {
        if (target.error.code === target.error.MEDIA_ERR_SRC_NOT_SUPPORTED) {
          document.querySelector('#outcome').textContent = 'Not using proprietary codecs, video emitted source not supported error event.'
        } else {
          document.querySelector('#outcome').textContent = `Unexpected error: ${target.error.code}`
        }
      })
      video.addEventListener('playing', () => {
        document.querySelector('#outcome').textContent = 'Using proprietary codecs, video started playing.'
      })
    </script>
  </body>
</html>