Development branch of Chromium for Wayland
Switch branches/tags
Clone or download
Pull request Compare This branch is 47219 commits ahead of mirror:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
android_webview Revert "Make //content layer default to --site-per-process mode on de… Aug 11, 2018
apps [TaskScheduler] Remove temporary forwarding headers and mass migrate … Aug 6, 2018
ash Finishes Assistant container opt in UI. Aug 11, 2018
base Ensure StrCat means StrCat Aug 11, 2018
blink Move third_party/WebKit/API_OWNERS to third_party/blink/ Apr 26, 2018
build Roll Fuchsia SDK from 7e1509cb5b0c to 67cc392116d9 Aug 12, 2018
build_overrides Roll SPIRV-Tools and add build_overrides/spirv_tools.gni Aug 7, 2018
cc cc: Make EvictAllUIResources only evict resources, not destroy them Aug 11, 2018
chrome Implements Drag and Drop for Ozone/Wayland Aug 15, 2018
chrome_elf Fix to remove /wd4018 (-Wno-sign-compare) for /chrome_elf Jul 27, 2018
chromecast Roll Fuchsia SDK from f209e0ff1228 to 7e1509cb5b0c Aug 12, 2018
chromeos Automated Commit: LKGM 10960.0.0 for chromeos. Aug 12, 2018
cloud_print Change ownership to the Chrome Print team. Jul 11, 2018
components [unified-consent] Revoke unified consent when user has custom passphrase Aug 12, 2018
content [DoNotCarryForward] [ozone/Wayland] Implement Wayland dmabuf approach. Aug 13, 2018
courgette Remove references to exe_and_shlib_deps in src May 30, 2018
crypto [TaskScheduler] Remove temporary forwarding headers and mass migrate … Aug 6, 2018
dbus dbus: Remove LOG(ERROR) in ObjectProxy Aug 9, 2018
device Fix defacto mapping for OpenVR controllers Aug 11, 2018
docs Update build instructions to recommend using autoninja instead of ninja. Aug 10, 2018
extensions Remove tabindex from the GuestViewContainer element. Aug 10, 2018
gin [TaskScheduler] Remove temporary forwarding headers and mass migrate … Aug 6, 2018
google_apis Revert "Revert "Migrate gcm to network service's socket APIs"" Aug 10, 2018
google_update Reland "Update Google Update COM interface definitions in google_upda… Mar 1, 2018
gpu In-process SharedImageInterface Aug 11, 2018
headless Revert "Make //content layer default to --site-per-process mode on de… Aug 11, 2018
infra Bump tablet tester execution timeout Aug 11, 2018
ios Updating XTBs based on .GRDs from branch master Aug 11, 2018
ipc Revert "Avoid unbounded queueing of IPC messages for crashed renderers." Jul 27, 2018
jingle Move browser side WebRTC code to services/network so that it can work… Aug 4, 2018
mash Remove QuitCurrent*() calls from //services. Aug 10, 2018
media Add mmap via libv4l to generic_v4l2_device Aug 13, 2018
mojo Mojo: Add ArrayTraits for std::unordered_set Aug 11, 2018
native_client_sdk Revert "Stop using -std=gnu*" Aug 8, 2018
net Revert "Revert "Migrate gcm to network service's socket APIs"" Aug 10, 2018
pdf Fix some nits in PDFiumEngine. Aug 10, 2018
ppapi Set proper PPAPI SandBoxSupport thread check Aug 7, 2018
printing [Printing] Remove extra |askUserForSettingsReply()| call Aug 10, 2018
remoting Ensure StrCat means StrCat Aug 11, 2018
rlz Ensure StrCat means StrCat Aug 11, 2018
sandbox Ensure StrCat means StrCat Aug 11, 2018
services Add X11DisplayManager to get display information Aug 13, 2018
skia rebaseline SK_LEGACY_CONVERT_PIXELS_IMPL Aug 10, 2018
sql fixup! Qualify const char[] sql queries with |static| Aug 10, 2018
storage Use OnceCallback for SnapshotFileCallback. Aug 10, 2018
styleguide Add Desugar gotchas to java style guide. Aug 3, 2018
testing Revert "Make //content layer default to --site-per-process mode on de… Aug 11, 2018
third_party Roll Fuchsia SDK from f209e0ff1228 to 7e1509cb5b0c Aug 12, 2018
tools [DoNotCarryForward] [ozone/Wayland] Implement Wayland dmabuf approach. Aug 13, 2018
ui fixup! Implements Drag and Drop for Ozone/Wayland Aug 17, 2018
url Reuse base::EmptyString in GURL implementation. Aug 4, 2018
webrunner Fuchsia: Produce CIPD archives for service packages and FIDL files. Aug 10, 2018
.clang-format Make .clang-format files smaller after clang-format roll Mar 15, 2017
.eslintrc.js MD Extensions: Convert all usages of .bind(this) to use ES6 arrow fun… Jul 27, 2017
.git-blame-ignore-revs Add spelling-fix commits section to .git-blame-ignore-revs Jun 18, 2018
.gitattributes Update Git EOL policies for source files Jul 9, 2018
.gitignore [scheduling_metrics] Create //components/scheduling_metrics Jul 26, 2018
.gn Fix misspelling "existance" Aug 10, 2018
.vpython Gracefully kill child procs of CrOS VM tests on SIGTERM. Jun 7, 2018
AUTHORS Remove individual AUTHORS that are already covered under corporate si… Aug 10, 2018 Enable SwiftShader on Fuchsia Aug 10, 2018 Updated Code of Conduct. Dec 1, 2017
DEPS Roll src/third_party/skia 02d174687cc9..f1a25c06cd15 (1 commits) Aug 12, 2018
ENG_REVIEW_OWNERS Remove brettw from owners files. Jan 29, 2018
LICENSE Happy (belated) New Year, 2015 edition! Jul 27, 2015
LICENSE.chromium_os Fix third-party license information for a number of projects Jul 27, 2012
OWNERS GN: Add "python_library" template for group()s that use ".pydeps" May 18, 2018 Ensure StrCat means StrCat Aug 11, 2018 Ensure StrCat means StrCat Aug 11, 2018 Check parameter types in FilterSourceFile() mock Jul 31, 2018 Add a README with newest development activities. Aug 13, 2018
WATCHLISTS [TaskScheduler] Cleanup all remaining base/task_scheduler references … Aug 10, 2018
codereview.settings Clean up a stale line in codereview.settings. Sep 18, 2017

Chromium for Wayland

The goal of this project is to enable Chromium browser to run on Wayland. Note that contrary to, the idea is to keep it very close to upstream developments as well as aligned on Google's own plans. In particular, this fork is rebased against Chromium ToT each week and patches are upstreamed as soon as possible.

The implementation also relies on actively developed Chromium technologies:

Notice that the effort done here is also useful to run Chromium with Ozone on Linux Desktop for X11/Wayland.

What is Chromium browser?

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the Web.

Documentation in the source is rooted in docs/

Learn how to Get Around the Chromium Source Code Directory Structure .

Building Chromium

General information is provided by the upstream documentation for Chromium on Linux and Ozone. Here is the summary of commands to build and run Chrome for Wayland:

gn args out/Ozone --args="use_ozone=true use_xkbcommon=true"
ninja -C out/Ozone chrome
./out/Ozone/chrome --ozone-platform=wayland --in-process-gpu

Note that GN defaults to debug builds, which naturally take longer to finish and produce slower binaries at runtime. The 'is_debug=false' GN arguments disables it.

Also note that some touch oriented Web pages like Google Maps, work better when the Touch Event API is explicitly enabled
in chrome://flags or a command line argument --touch-events=enabled is passed.

It is also possible to enable proprietary codecs (so that mp4, h264 medias play) with the following GN args: 'proprietary_codecs=true ffmpeg_branding=\"Chrome\"'.

By default, the headless, x11 and wayland Ozone backends are compiled and X11 is selected when --ozone-platform is not specified. Please refer to the GN Configuration notes for details on how to change that behavior.

Running Tests

To be added.

Rebase Strategy

The fork is rebased every week against Chromium ToT. The goal is to be as close as possible to the latest code, which is constantly receiving performance and stability fixes.

Here is the current process:

  • Every week, a member of the Igalia Chromium team takes the rebase shift.

  • Commits that are complementary of each other, receive a "fixup!" prefix on the commit title, and keep the rest of original commit title unchanged.

For example:

$ git log --oneline
commit 1
commit 2
commit 3
fixup! commit 1
fixup! commit 2
commit 4
fixup! commit 2

This allows an easy identification of "fixup" commits, which should be squashed into their original counterpart commit as part of the next rebase cycle. That way we keep our Git history clean, and commits as atomic as possible, for when upstreaming.

Git has an optimized flow for this as well.

  • We always keep the 'ozone-wayland-dev-refactoring' branch as our primarily development branch.

This means that force pushes will happen. So every time one of the team members rebases our branch, the developer should first back up the existing ozone-wayland-dev browser, with the following naming: ozone-wayland-dev-refactoring-rXXXX, where XXXX is the respective Chromium baseline of the branch.

  • Branch acceptance criteria

To be added.