summaryrefslogtreecommitdiff
path: root/chromium/docs
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-08-01 12:59:39 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-08-04 12:40:43 +0000
commit28b1110370900897ab652cb420c371fab8857ad4 (patch)
tree41b32127d23b0df4f2add2a27e12dc87bddb260e /chromium/docs
parent399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (diff)
downloadqtwebengine-chromium-28b1110370900897ab652cb420c371fab8857ad4.tar.gz
BASELINE: Update Chromium to 53.0.2785.41
Also adds a few extra files for extensions. Change-Id: Iccdd55d98660903331cf8b7b29188da781830af4 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/docs')
-rw-r--r--chromium/docs/clang.md10
-rw-r--r--chromium/docs/linux_build_instructions.md185
-rw-r--r--chromium/docs/linux_build_instructions_prerequisites.md162
-rw-r--r--chromium/docs/linux_chromium_arm.md2
-rw-r--r--chromium/docs/linux_debugging.md2
-rw-r--r--chromium/docs/linux_eclipse_dev.md2
-rw-r--r--chromium/docs/linux_faster_builds.md69
-rw-r--r--chromium/docs/linux_sublime_dev.md584
-rw-r--r--chromium/docs/mac_build_instructions.md9
-rw-r--r--chromium/docs/shift_based_development.md2
-rw-r--r--chromium/docs/tpm_quick_ref.md2
-rw-r--r--chromium/docs/ui/views/macviews_release.md85
-rw-r--r--chromium/docs/updating_clang.md4
-rw-r--r--chromium/docs/useful_urls.md55
-rw-r--r--chromium/docs/windows_build_instructions.md66
15 files changed, 872 insertions, 367 deletions
diff --git a/chromium/docs/clang.md b/chromium/docs/clang.md
index 4e12a7e48c0..7f9da04d69d 100644
--- a/chromium/docs/clang.md
+++ b/chromium/docs/clang.md
@@ -33,10 +33,8 @@ Build: `ninja -C out/Debug chrome`
## Reverting to gcc on linux
We don't have bots that test this, but building with gcc4.8+ should still work
-on Linux. If your system gcc is new enough, use this to build with gcc if you
-don't want to build with clang:
-
- GYP_DEFINES=clang=0 build/gyp_chromium
+on Linux. If your system gcc is new enough, run `gn args` and add `is_clang =
+false`.
## Mailing List
@@ -62,7 +60,7 @@ To test the FindBadConstructs plugin, run:
../../../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so)
To run [other plugins](writing_clang_plugins.md), add these to your
-`GYP_DEFINES`:
+`GYP_DEFINES` (this is not currently set up in GN):
* `clang_load`: Absolute path to a dynamic library containing your plugin
* `clang_add_plugin`: tells clang to run a specific PluginASTAction
@@ -95,7 +93,7 @@ ninja -C out\Debug chrome
```
The `update.py` script only needs to be run once per checkout. Clang will be
-kept up-to-date by `gclient runhooks`.
+kept up to date by `gclient runhooks`.
Current brokenness:
diff --git a/chromium/docs/linux_build_instructions.md b/chromium/docs/linux_build_instructions.md
index 11a3b23e224..4f97bf2ea3e 100644
--- a/chromium/docs/linux_build_instructions.md
+++ b/chromium/docs/linux_build_instructions.md
@@ -1,133 +1,152 @@
# Linux-specific build instructions
-[TOC]
+## Common checkout instructions
-## Get the code
-
-[Get the Code](https://www.chromium.org/developers/how-tos/get-the-code). The
-general instructions on the "Get the code" page cover basic Linux build setup
-and configuration.
-
-This page documents some additional Linux-specific build issues.
+This page covers Linux-specific setup and configuration. The
+[general checkout
+instructions](http://dev.chromium.org/developers/how-tos/get-the-code) cover
+installing depot tools and checking out the code via git.
## Overview
-Due its complexity, Chromium uses a set of custom tools to check out and build.
-Here's an overview of the steps you'll run:
-
-1. **gclient**. A checkout involves pulling nearly 100 different SVN
- repositories of code. This process is managed with a tool called `gclient`.
-1. **GN**. Cross-platform build configuration system. It generates ninja
- build files. Running `gn` is analogous to the `./configure` step seen in
- most other software.
-1. **ninja**. The actual build itself uses `ninja`. A prebuilt binary is in
- `depot_tools` and should already be in your path if you followed the steps
- to check out Chromium.
-1. We don't provide any sort of "install" step.
-1. You may want to
- [use a chroot](using_a_linux_chroot.md) to
- isolate yourself from versioning or packaging conflicts (or to run the
- layout tests).
+Due its complexity, Chromium uses a set of custom tools to check out and build
+rather than configure/make like most projects. You _must_ use gclient and
+ninja, and there is no "install" step provided.
-## Getting a checkout
+### System requirements
-[Prerequisites](linux_build_instructions_prerequisites.md): what you need before
-you build.
+* **64-bits**: x86 builds are not supported on Linux.
+* **Memory**: >16GB is highly recommended.
+* **Disk space**: Expect a full checkout and build to take nearly 100GB.
+* **Distribution**: You should be able to build Chromium on any reasonably modern Linux
+ distribution, but there are a lot of distributions and we sometimes break
+ things on one or another. Internally, our development platform has been a
+ variant of Ubuntu 14.04 (Trusty Tahr); we expect you will have the most
+ luck on this platform.
-**Note**. If you are working on Chromium OS and already have sources in
-`chromiumos/chromium`, you **must** run `chrome_set_ver --runhooks` to set the
-correct dependencies. This step is otherwise performed by `gclient` as part of
-your checkout.
+## Software setup
-## Compilation
+Non-Ubuntu distributions are not officially supported for building and the
+instructions below might be outdated.
-The "`src/`" directory is an artifact of `gclient`. Start with:
+### Ubuntu
- $ cd src
+Once you have checked out the code, run
+[build/install-build-deps.sh](/build/install-build-deps.sh) The script only
+supports current releases as listed on https://wiki.ubuntu.com/Releases.
+This script is used to set up the canonical builders, and as such is the most
+up to date reference for the required prerequisites.
-### Faster builds
+### Debian
-See [Linux Faster Builds](linux_faster_builds.md)
+Follow the Ubuntu instructions above. If you want to install the build-deps
+manually, note that the original packages are for Ubuntu. Here are the Debian
+equivalents:
-### Build every test
+* libexpat-dev -> libexpat1-dev
+* freetype-dev -> libfreetype6-dev
+* libbzip2-dev -> libbz2-dev
+* libcupsys2-dev -> libcups2-dev
- $ ninja -C out/Debug
+Additionally, if you're building Chromium components for Android, you'll need to
+install the package: lib32z1
-The above builds all libraries and tests in all components. **It will take
-hours.**
+### openSUSE
-Specifying other target names to restrict the build to just what you're
-interested in. To build just the simplest unit test:
+For openSUSE 11.0 and later, see
+[Linux openSUSE Build Instructions](linux_open_suse_build_instructions.md).
- $ ninja -C out/Debug base_unittests
+### Fedora
-### Clang builds
+Recent systems:
-Information about building with Clang can be found [here](clang.md).
+ su -c 'yum install subversion pkgconfig python perl gcc-c++ bison flex \
+ gperf nss-devel nspr-devel gtk2-devel glib2-devel freetype-devel atk-devel \
+ pango-devel cairo-devel fontconfig-devel GConf2-devel dbus-devel \
+ alsa-lib-devel libX11-devel expat-devel bzip2-devel dbus-glib-devel \
+ elfutils-libelf-devel libjpeg-devel mesa-libGLU-devel libXScrnSaver-devel \
+ libgnome-keyring-devel cups-devel libXtst-devel libXt-devel pam-devel httpd \
+ mod_ssl php php-cli wdiff'
-### Output
+The msttcorefonts packages can be obtained by following the instructions
+present [here](http://www.fedorafaq.org/#installfonts). For the optional
+packages:
-Executables are written in `src/out/Debug/` for Debug builds, and
-`src/out/Release/` for Release builds.
+* php-cgi is provided by the php-cli package
+* wdiff doesn't exist in Fedora repositories, a possible alternative would be
+ dwdiff
+* sun-java6-fonts doesn't exist in Fedora repositories, needs investigating
-### Release mode
+### Arch Linux
-Pass `-C out/Release` to the ninja invocation:
+Most of these packages are probably already installed since they're often used,
+and the parameter --needed ensures that packages up to date are not reinstalled.
- $ ninja -C out/Release chrome
+ sudo pacman -S --needed python perl gcc gcc-libs bison flex gperf pkgconfig \
+ nss alsa-lib gconf glib2 gtk2 nspr ttf-ms-fonts freetype2 cairo dbus \
+ libgnome-keyring
-### Seeing the commands
+For the optional packages on Arch Linux:
-If you want to see the actual commands that ninja is invoking, add `-v` to the
-ninja invocation.
+* php-cgi is provided with pacman
+* wdiff is not in the main repository but dwdiff is. You can get wdiff in
+ AUR/yaourt
+* sun-java6-fonts do not seem to be in main repository or AUR.
- $ ninja -v -C out/Debug chrome
+### Mandriva
-This is useful if, for example, you are debugging gyp changes, or otherwise need
-to see what ninja is actually doing.
+ urpmi lib64fontconfig-devel lib64alsa2-devel lib64dbus-1-devel \
+ lib64GConf2-devel lib64freetype6-devel lib64atk1.0-devel lib64gtk+2.0_0-devel \
+ lib64pango1.0-devel lib64cairo-devel lib64nss-devel lib64nspr-devel g++ python \
+ perl bison flex subversion gperf
-### Clean builds
+* msttcorefonts are not available, you will need to build your own (see
+instructions, not hard to do, see
+[mandriva_msttcorefonts.md](mandriva_msttcorefonts.md)) or use drakfont to
+import the fonts from a windows installation
+* These packages are for 64 bit, to download the 32 bit packages,
+substitute lib64 with lib
+* Some of these packages might not be explicitly necessary as they come as
+ dependencies, there is no harm in including them however.
-You can clean the build directory (`out/Default` in this example):
+### Gentoo
- gn clean out/Default
+ emerge www-client/chromium
-This will delete all files except a bootstrap ninja file necessary for
-recreating the build.
-
-Ninja can also be used to clean a build with `ninja -C out/Debug -t clean` but
-this will not be as complete as the above methods.
+## Troubleshooting
### Linker Crashes
If, during the final link stage:
- LINK(target) out/Debug/chrome
+ LINK out/Debug/chrome
You get an error like:
-```
-collect2: ld terminated with signal 6 Aborted terminate called after throwing an
-instance of 'std::bad_alloc'
+ collect2: ld terminated with signal 6 Aborted terminate called after throwing an
+ instance of 'std::bad_alloc'
-collect2: ld terminated with signal 11 [Segmentation fault], core dumped
-```
-you are probably running out of memory when linking. Try one of:
+ collect2: ld terminated with signal 11 [Segmentation fault], core dumped
-1. Use the `gold` linker
-1. Build on a 64-bit computer
-1. Build in Release mode (debugging symbols require a lot of memory)
-1. Build as shared libraries (note: this build is for developers only, and may
- have broken functionality)
+you are probably running out of memory when linking. You *must* use a 64-bit
+system to build. Try the following build settings (see [GN build
+configuration](https://www.chromium.org/developers/gn-build-configuration) for
+setting):
-Most of these are described on the [Linux Faster Builds](linux_faster_builds.md)
-page.
+* Build in release mode (debugging symbols require more memory).
+ `is_debug = false`
+* Turn off symbols. `symbol_level = 0`
+* Build in component mode (this is for developers only, it will be slower and
+ may have broken functionality). `is_component_build = true`
-## Advanced Features
+## More links
-* Want to use the (in development) GN build workflow? See
- [GN Quick Start](../tools/gn/docs/quick_start.md).
-* Building frequently? See [LinuxFasterBuilds](linux_faster_builds.md).
+* [Faster builds on Linux](linux_faster_builds.md)
+* Information about [building with Clang](clang.md).
+* You may want to
+ [use a chroot](using_a_linux_chroot.md) to
+ isolate yourself from versioning or packaging conflicts (or to run the
+ layout tests).
* Cross-compiling for ARM? See [LinuxChromiumArm](linux_chromium_arm.md).
* Want to use Eclipse as your IDE? See
[LinuxEclipseDev](linux_eclipse_dev.md).
diff --git a/chromium/docs/linux_build_instructions_prerequisites.md b/chromium/docs/linux_build_instructions_prerequisites.md
index c42297a2e6d..0d84aa258cd 100644
--- a/chromium/docs/linux_build_instructions_prerequisites.md
+++ b/chromium/docs/linux_build_instructions_prerequisites.md
@@ -1,161 +1,7 @@
-# Linux Build Instructions — Prerequisites
+# Linux Build Instructions Prerequisites
-This page describes system requirements for building Chromium on Linux.
+The contents of this page have been folded into the
+[Linux build instructions](linux_build_instructions.md).
-[TOC]
+This file will be deleted in the future, please update your links.
-## System Requirements
-
-### Linux distribution
-
-You should be able to build Chromium on any reasonably modern Linux
-distribution, but there are a lot of distributions and we sometimes break things
-on one or another. Internally, our development platform has been a variant of
-Ubuntu 14.04 (Trusty Tahr); we expect you will have the most luck on this
-platform, although directions for other popular platforms are included below.
-
-### Disk space
-
-It takes about 10GB or so of disk space to check out and build the source tree.
-This number grows over time.
-
-### Memory space
-
-It takes about 8GB of swap file to link chromium and its tests. If you get an
-out-of-memory error during the final link, you will need to add swap space with
-swapon. It's recommended to have at least 4GB of memory available for building a
-statically linked debug build. Dynamic linking and/or building a release build
-lowers memory requirements. People with less than 8GB of memory may want to not
-build tests since they are quite large.
-
-### 64-bit Systems
-
-Chromium can be compiled as either a 32-bit or 64-bit application. Chromium
-requires several system libraries to compile and run. While it is possible to
-compile and run a 32-bit Chromium on 64-bit Linux, many distributions are
-missing the necessary 32-bit libraries, and will result in build or run-time
-errors.
-
-### Depot tools
-
-Before setting up the environment, make sure you install the
-[depot tools](http://dev.chromium.org/developers/how-tos/depottools) first.
-
-## Software Requirements
-
-### Ubuntu Setup
-
-Run [build/install-build-deps.sh](/build/install-build-deps.sh) The script only
-supports current releases as listed on https://wiki.ubuntu.com/Releases.
-
-Building on Linux requires software not usually installed with the
-distributions.
-
-The script attempts to automate installing the required software. This script is
-used to set up the canonical builders, and as such is the most up to date
-reference for the required prerequisites.
-
-### Other distributions
-
-Note: Other distributions are not officially supported for building and the
-instructions below might be outdated.
-
-#### Debian Setup
-
-Follow the Ubuntu instructions above.
-
-If you want to install the build-deps manually, note that the original packages
-are for Ubuntu. Here are the Debian equivalents:
-
-* libexpat-dev -> libexpat1-dev
-* freetype-dev -> libfreetype6-dev
-* libbzip2-dev -> libbz2-dev
-* libcupsys2-dev -> libcups2-dev
-
-Additionally, if you're building Chromium components for Android, you'll need to
-install the package: lib32z1
-
-#### openSUSE Setup
-
-For openSUSE 11.0 and later, see
-[Linux openSUSE Build Instructions](linux_open_suse_build_instructions.md).
-
-#### Fedora Setup
-
-Recent systems:
-
-```shell
-su -c 'yum install subversion pkgconfig python perl gcc-c++ bison \
-flex gperf nss-devel nspr-devel gtk2-devel glib2-devel freetype-devel \
-atk-devel pango-devel cairo-devel fontconfig-devel GConf2-devel \
-dbus-devel alsa-lib-devel libX11-devel expat-devel bzip2-devel \
-dbus-glib-devel elfutils-libelf-devel libjpeg-devel \
-mesa-libGLU-devel libXScrnSaver-devel \
-libgnome-keyring-devel cups-devel libXtst-devel libXt-devel pam-devel'
-```
-
-The msttcorefonts packages can be obtained by following the instructions present
-here: http://www.fedorafaq.org/#installfonts
-
-For the optional packages:
-
-* php-cgi is provided by the php-cli package
-* wdiff doesn't exist in Fedora repositories, a possible alternative would be
- dwdiff
-* sun-java6-fonts doesn't exist in Fedora repositories, needs investigating
-
- su -c 'yum install httpd mod_ssl php php-cli wdiff'
-
-#### Arch Linux Setup
-
-Most of these packages are probably already installed since they're often used,
-and the parameter --needed ensures that packages up to date are not reinstalled.
-
-```shell
-sudo pacman -S --needed python perl gcc gcc-libs bison flex gperf pkgconfig \
- nss alsa-lib gconf glib2 gtk2 nspr ttf-ms-fonts freetype2 cairo dbus \
- libgnome-keyring
-```
-
-For the optional packages on Arch Linux:
-
-* php-cgi is provided with pacman
-* wdiff is not in the main repository but dwdiff is. You can get wdiff in
- AUR/yaourt
-* sun-java6-fonts do not seem to be in main repository or AUR.
-
-For a successful build, add `'remove_webcore_debug_symbols': 1,` to the
-variables-object in include.gypi. Tested on 64-bit Arch Linux.
-
-TODO: Figure out how to make it build with the WebCore debug symbols. `make V=1`
-can be useful for solving the problem.
-
-#### Mandriva setup
-
-```shell
-urpmi lib64fontconfig-devel lib64alsa2-devel lib64dbus-1-devel \
-lib64GConf2-devel lib64freetype6-devel lib64atk1.0-devel lib64gtk+2.0_0-devel \
-lib64pango1.0-devel lib64cairo-devel lib64nss-devel lib64nspr-devel g++ python \
-perl bison flex subversion gperf
-```
-
-*** note
-Note 1: msttcorefonts are not available, you will need to build your own (see
-instructions, not hard to do, see
-[mandriva_msttcorefonts.md](mandriva_msttcorefonts.md)) or use drakfont to
-import the fonts from a windows installation
-***
-
-*** note
-Note 2: these packages are for 64 bit, to download the 32 bit packages,
-substitute lib64 with lib
-***
-
-*** note
-Note 3: some of these packages might not be explicitly necessary as they come as
-dependencies, there is no harm in including them however.
-***
-
-#### Gentoo setup
-
- emerge www-client/chromium
diff --git a/chromium/docs/linux_chromium_arm.md b/chromium/docs/linux_chromium_arm.md
index 68e4b0f3fd4..c0b6ec3ea6c 100644
--- a/chromium/docs/linux_chromium_arm.md
+++ b/chromium/docs/linux_chromium_arm.md
@@ -22,7 +22,7 @@ and library dependencies directly from Ubuntu:
### Installing the sysroot
-A prebuilt sysroot image is kept up-to-date on Cloud Storage. It will
+A prebuilt sysroot image is kept up to date on Cloud Storage. It will
automatically be installed by gclient runhooks installed if you have
`target_arch=arm` in your `GYP_DEFINES`.
diff --git a/chromium/docs/linux_debugging.md b/chromium/docs/linux_debugging.md
index 8e6298e4c95..66dff13d5f3 100644
--- a/chromium/docs/linux_debugging.md
+++ b/chromium/docs/linux_debugging.md
@@ -408,7 +408,7 @@ or within gdb:
If some messages show as unknown, check if the list of IPC message headers in
[chrome/common/logging_chrome.cc](/chrome/common/logging_chrome.cc) is
-up-to-date. In case this file reference goes out of date, try looking for usage
+up to date. In case this file reference goes out of date, try looking for usage
of macros like `IPC_MESSAGE_LOG_ENABLED` or `IPC_MESSAGE_MACROS_LOG_ENABLED`.
## Using valgrind
diff --git a/chromium/docs/linux_eclipse_dev.md b/chromium/docs/linux_eclipse_dev.md
index 83889c53371..78cee842f3d 100644
--- a/chromium/docs/linux_eclipse_dev.md
+++ b/chromium/docs/linux_eclipse_dev.md
@@ -147,7 +147,7 @@ In the Project Explorer on the left side:
* Include only
* Files, all children (recursive)
* Name matches
- `.*\.(c|cc|cpp|h|mm|inl|idl|js|json|css|html|gyp|gypi|grd|grdp|gn)`
+ `.*\.(c|cc|cpp|h|mm|inl|idl|js|json|css|html|gyp|gypi|grd|grdp|gn|gni|mojom)`
regular expression
1. Add another filter:
* Exclude all
diff --git a/chromium/docs/linux_faster_builds.md b/chromium/docs/linux_faster_builds.md
index 53f2e5a2ef6..9582b389c18 100644
--- a/chromium/docs/linux_faster_builds.md
+++ b/chromium/docs/linux_faster_builds.md
@@ -6,6 +6,16 @@ This list is sorted such that the largest speedup is first; see
[TOC]
+## General configuration
+
+The [GN build configuration](https://www.chromium.org/developers/gn-build-configuration)
+page discusses a number of options that will speed up your build. In particular:
+
+ is_component_build = true
+ enable_nacl = false
+ symbol_level = 0
+ remove_webcore_debug_symbols = true
+
## Use goma
If you work at Google, you can use goma for distributed builds; this is similar
@@ -24,70 +34,31 @@ build processes with `-jX` where `X` is the number of processes to start.
central scheduler to share build load. Currently, many external contributors use
it. e.g. Intel, Opera, Samsung.
-When you use Icecc, you need to set some gyp variables.
+When you use Icecc, you need to [set some GN variables](https://www.chromium.org/developers/gn-build-configuration).
- linux_use_bundled_binutils=0**
+ linux_use_bundled_binutils = false
-`-B` option is not supported.
+The `-B` option is not supported.
[relevant commit](https://github.com/icecc/icecream/commit/b2ce5b9cc4bd1900f55c3684214e409fa81e7a92)
- linux_use_debug_fission=0
+ linux_use_debug_fission = false
[debug fission](http://gcc.gnu.org/wiki/DebugFission) is not supported.
[bug](https://github.com/icecc/icecream/issues/86)
- clang=0
+ is_clang = false
Icecc doesn't support clang yet.
- use_sysroot=0
+ use_sysroot = false
Icecc doesn't work with sysroot.
- linux_use_bundled_gold=0
-
Using the system linker is necessary when using glibc 2.21 or newer. See
[related bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808181).
-
-## Build only specific targets
-
-If you specify just the target(s) you want built, the build will only walk that
-portion of the dependency graph:
-
- cd $CHROMIUM_ROOT/src
- ninja -C out/Debug base_unittests
-
-## Linking
-
-### Dynamically link
-
-We normally statically link everything into one final executable, which produces
-enormous (nearly 1gb in debug mode) files. If you dynamically link, you save a
-lot of time linking for a bit of time during startup, which is fine especially
-when you're in an edit/compile/test cycle.
-
-Add the flag `is_component_build=true` in your build args (to edit build args
-run `gn args out/foo` where `out/foo` is your build directory).
-
-See the
-[component build page](http://www.chromium.org/developers/how-tos/component-build)
-for more information.
-
-### Linking using gold
-
-The experimental "gold" linker is much faster than the standard BFD linker.
-
-On some systems (including Debian experimental, Ubuntu Karmic and beyond), there
-exists a `binutils-gold` package. Do not install this version! Having gold as
-the default linker is known to break kernel / kernel module builds.
-
-The Chrome tree now includes a binary of gold compiled for x64 Linux. It is used
-by default on those systems.
-
-On other systems, to safely install gold, make sure the final binary is named
-`ld` and then set `CC/CXX` appropriately, e.g.
-`export CC="gcc -B/usr/local/gold/bin"` and similarly for `CXX`. Alternatively,
-you can add `/usr/local/gold/bin` to your `PATH` in front of `/usr/bin`.
+Previously these instructions listed the linux_use_bundled_gold GYP variable
+which no longer exists. If you know about this, please update or delete this
+section.
## WebKit
@@ -123,7 +94,7 @@ logical directory (and make sure `CCACHE_BASEDIR` also refers to a physical
parent).
If you tune ccache correctly, a second working directory that uses a branch
-tracking trunk and is up-to-date with trunk and was gclient sync'ed at about the
+tracking trunk and is up to date with trunk and was gclient sync'ed at about the
same time should build chrome in about 1/3 the time, and the cache misses as
reported by `ccache -s` should barely increase.
diff --git a/chromium/docs/linux_sublime_dev.md b/chromium/docs/linux_sublime_dev.md
new file mode 100644
index 00000000000..dc12dbcc223
--- /dev/null
+++ b/chromium/docs/linux_sublime_dev.md
@@ -0,0 +1,584 @@
+# Linux Sublime Dev
+
+Sublime Text is a fast, powerful and easily extensible code editor. Check out
+some [visual demos](http://www.sublimetext.com) for a quick demonstration.
+
+You can download and install Sublime Text 3 from the [Sublime Text
+Website](http://www.sublimetext.com/3). Assuming you have access to the right
+repositories, you can also install Sublime via apt-get on Linux. Help and
+general documentation is available in the [Sublime Text 3
+Docs](http://www.sublimetext.com/docs/3/).
+
+Sublime can be used on Linux, Windows and Mac as an IDE for developing Chromium.
+Here's what works:
+
+* Editing code works well (especially if you're used to it and get used to the
+ shortcuts).
+* Navigating around the code works well. There are multiple ways to do this (a
+ full list of keyboard shortcuts is available for [Windows/Linux](http://
+ docs.sublimetext.info/en/latest/reference/keyboard_shortcuts_win.html) and
+ [Mac](http://docs.sublimetext.info/en/latest/reference/keyboard_shortcuts_osx.html)).
+* Building works fairly well and it does a decent job of parsing errors so
+ that you can click and jump to the problem spot.
+
+[TOC]
+
+## Setup
+
+### Configuring Sublime
+
+All global configuration for Sublime (including installed packages) is stored in
+`~/.config/sublime-text-3` (or `%APPDATA\Sublime Text 3` on Windows, or
+`~/Library/Application Support/Sublime Text 3` on Mac). We will reference the
+Linux folder for the rest of this tutorial, but replace with your own path if
+using a different OS. If you ever want a clean install, just remove this folder.
+
+**Warning**: If you have installed a license key for a paid version Sublime
+Text, removing this folder will delete the license key, too.
+
+Most of the packages you will install will be placed in `~/.config/sublime-
+text-3/Packages/User`, where Sublime Text can detect them. You can also get to
+this folder by selecting `Preferences > Browse Packages...` (or `Sublime Text >
+Preferences > Browse Packages...` on Mac).
+
+### A short word about paths
+
+Certain packages require executables to be on your `PATH`, but Sublime gets the
+`$PATH` variable from a login shell, not an interactive session (i.e. your path
+needs to be set in `~/.bash_profile`, `~/.zprofile`, etc, not `~/.bashrc`,
+`~/.zshrc`, etc). For more info, see
+[Debugging Path Problems](http://sublimelinter.readthedocs.io/en/latest/troubleshooting.html#debugging-path-problems).
+
+### Editing Preferences
+
+Sublime configuration (including project files, key bindings, etc) is done via
+JSON files. All configurations have a Default config (usually provided with the
+program or package to document the available commands) and a User config
+(overrides the default; this is where your overrides go). For example, select
+`Preferences > Settings - Default` to see all the available settings for
+Sublime. You can override any of these in `Preferences > Settings - User`.
+
+Here are some settings that help match the Chromium style guide:
+```
+{
+ // Basic Chromium style preferences
+ "rulers": [80],
+ "tab_size": 2,
+ "trim_trailing_white_space_on_save": true,
+ "ensure_newline_at_eof_on_save": true,
+ "translate_tabs_to_spaces" : true,
+
+ // Optional, but also useful, preferences
+ "always_show_minimap_viewport": true,
+ "bold_folder_labels": true,
+ "draw_white_space": "all",
+ "enable_tab_scrolling": false,
+ "highlight_line": true,
+}
+```
+
+The settings will take effect as soon as you save the file.
+
+#### Tips
+* `View > Side Bar > Show Open Files` will add a list of open files to the top
+ of the sidebar
+* ``Ctrl+` `` will show the console; it shows errors and debugging output, and
+ you can run Python
+* `View > Distractio-Free Mode` goes into fullscreen and removes Sublime's
+ header and footer
+* `View > Layout > ...` changes the configuration of files you can open side-
+ by-side
+* `Ctrl + P` (`Cmd + P` on Mac) quickly opens a search box to find a file or
+ definition
+* `Alt + O` (`Alt + Cmd + Up` on Mac) switches between the source/header file
+* `Alt + PageUp`/`Alt + PageDown` (`Alt + Cmd + Left`/`Alt + Cmd + Right` on
+ Mac) moves between tabs
+* `F12` (`Alt + Cmd + Down` on Mac) goes to the symbol's definition
+* With text selected, `Ctrl + D` will multi-select the next occurrance (so
+ typing in one types in all of them), and `Ctrl+U` deselects
+* Similarly, after finding something with `Ctrl + F`, `Alt + Enter` will
+ select all occurrances of the search query, which can be multi-edited
+* `Ctrl + X` without anything selected cuts the current line, then move to a
+ different line and `Ctrl + V` pastes it below the current line
+
+### Setting Sublime as the default Terminal editor
+
+Add `export EDITOR="subl -w"` to your `~/.bashrc` file (or similar) to open git
+commit messages, gn args, etc with Sublime Text. Since you may want to only open
+sublime when using a non-SSH session, you can wrap it in the following:
+
+```
+if [ "$SSH_CONNECTION" ]; then
+ export EDITOR='vim'
+else
+ export EDITOR='subl -w'
+fi
+```
+
+### Installing the Package Manager
+
+The Sublime Package Manager is the way most Sublime packages are installed and
+configured. You can install the package manager by following in the
+[installation instructions](https://packagecontrol.io/installation) on their
+website. Once the package manager is installed, restart Sublime.
+
+To install a package, press `Ctrl + Shift + P` and select `Package Manager:
+Install Package` (the string match is fairly leniant; you can just type
+`"instp"` and it should find it). Then type or select the package you want to
+install.
+
+#### Mac Paths Fix
+
+There is a known bug on Mac where Sublime doesn't detect the current path
+correctly. If you're using Mac, install the package `SublimeFixMacPath` to find
+the path from your `~/.bashrc` file or similar.
+
+## Making a New Project
+
+Once you have a copy of the Chromium checkout, we'll make a new Sublime project
+with the src directory as the root.
+
+To do this, create a new file `chromium.sublime-project` (or whatever name you'd
+like) in the folder above your `src/` directory, with the following contents
+(the exclude patterns are needed - Sublime can't handle indexing all of Chrome's
+files):
+
+```json
+{
+ "folders": [
+ {
+ "name": "chromium",
+ "path": "src",
+ "file_exclude_patterns":
+ [
+ "*.vcproj",
+ "*.vcxproj",
+ "*.sln",
+ "*.gitignore",
+ "*.gitmodules",
+ "*.vcxproj.*",
+ ],
+ "folder_exclude_patterns":
+ [
+ "build",
+ "out",
+ "third_party",
+ ".git",
+ ],
+ },
+ {
+ "name": "Generated Files",
+ "path": "src/out/Debug/gen",
+ },
+ ],
+}
+```
+
+If you are working on Blink, or any other third-party subproject, you can add it
+as a separate entry in the `folders` array:
+
+```json
+{
+ "name": "blink",
+ "path": "src/third_party/WebKit",
+}
+```
+
+Once you've saved the file, select `Project > Switch Project` and navigate to
+the `chromium.sublime-project` file.
+
+### Code Linting with CPPLint (Chromium only)
+
+**Note:** CPPLint enforces the Google/Chromium style guide, and hence is not
+useful on third_party projects that use another style.
+
+1. Install the SublimeLinter package (`Ctrl + Shift + P > Install Package >
+ SublimeLinter`).
+1. `cpplint` should be somewhere on your path so that SublimeLinter finds it.
+ depot_tools includes `cpplint.py`, but it needs to be named `cpplint`, so on
+ Linux and Mac you have to make a symlink to it:
+
+ ```shell
+ cd /path/to/depot_tools
+ ln -s cpplint.py cpplint
+ chmod a+x cpplint
+ ```
+
+1. Install the SublimeLinter-cpplint package (`Ctrl + Shift + P > Install
+ Package > SublimeLinter-cpplint`).
+
+Now when you save a C++ file, red dots should appear next to lines that
+invalidate the style. You can change this behavior with Choose Lint Mode (`Ctrl
++ Shift + P > "lint mode"`).
+
+You can also see and navigate all the linter errors with Show All Errors (`Ctrl
++ Shift + P > "show all"`). You can also use Next Error/Previous Error (and
+their associated shortcuts) to navigate the errors. The gutter at the bottom of
+the screen shows the message for the error on the current line.
+
+You can also change the style of dot next to the line with Choose Gutter Theme
+(`Ctrl + Shift + P > "gutter"`)
+
+For a list of all preferences, see `Preferences > Package Settings >
+SublimeLinter > Settings - Default` (or `Settings - User` to edit your
+preferences).
+
+### Format Selection with Clang-Format (Chromium only)
+
+**Note:** Like CPPLint, Clang-format enforces the Google/Chromium style guide,
+and hence is not useful on third_party projects that use another style.
+
+1. Inside `src/`, run:
+
+ ```shell
+ cd /path/to/chromium/src
+ cp buildtools/clang_format/script/clang-format-sublime.py ~/.config/sublime-text-3/Packages/User/
+ ```
+
+1. This installs a plugin that defines the command "clang\_format". You can add
+ the "clang\_format" command to `Preferences > Key Bindings - User`, e.g.:
+
+ ```json
+ [
+ { "keys": ["ctrl+shift+c"], "command": "clang_format" },
+ ]
+ ```
+
+2. Select some text and press `Ctrl + Shift + C` to format, or select no text to
+ format the entire file
+
+## Code Completion with SublimeClang (Linux Only)
+
+SublimeClang is a powerful autocompletion plugin for Sublime that uses the Clang
+static analyzer to provide real-time type and function completion and
+compilation errors on save. It works with Chromium with a script that finds and
+parses the appropriate *.ninja files to find the necessary include paths for a
+given file.
+
+**Note**: Currently, only the Linux setup of SublimeClang is working. However,
+there are instructions below for Windows/Mac which you are welcome to try -- if
+you can get them to work, please update these instructions ^_^
+
+More information on SublimeClang's functionality (including keyboard shortcuts)
+can be found on the [SublimeClang GitHub
+page](https://github.com/quarnster/SublimeClang).
+
+### Linux
+
+1. Install libclang-dev to get a copy of libclang.so:
+
+ ```shell
+ sudo apt-get install libclang-dev
+ ```
+
+1. Build libclang.so and SublimeClang in your packages directory:
+
+ ```shell
+ cd ~/.config/sublime-text-3/Packages
+ git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang
+ cd SublimeClang
+ # Copy libclang.so to the internals dir
+ cp $(ldconfig -p | grep libclang.so | cut -d" " -f4) internals/libclang.so
+ # Make the project - should be really quick, since libclang.so is already built
+ cd src && mkdir build && cd build
+ cmake ..
+ make
+ ```
+
+1. Edit your project file `Project > Edit Project` to call the script above
+ (replace `out/Debug` with your out directory):
+
+ ```
+ {
+ "folders":
+ [
+ ...
+ ],
+ "settings":
+ {
+ "sublimeclang_options":
+ [
+ "-Wno-attributes",
+ ],
+ "sublimeclang_options_script": "python ${project_path}/src/tools/sublime/ninja_options_script.py ${project_path}/src ${project_path}/src/out/Debug",
+ }
+ }
+ ```
+
+1. Restart Sublime. Now when you save a file, you should see a "Reparsing…"
+ message in the footer and errors will show up in the output panel. Also,
+ variables and function definitions should auto-complete as you type.
+
+**Note:** If you're having issues, adding `"sublimeclang_debug_options": true` to
+your settings file will print more to the console (accessed with ``Ctrl + ` ``)
+which can be helpful when debugging.
+
+### Mac (not working)
+
+1. Install cmake if you don't already have it
+1. Install XCode
+1. Copy libclang.dylib from XCode to the SublimeClang/internals folder:
+
+ ```shell
+ cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages
+ git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang
+ cd SublimeClang
+ cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib internals/libclang.dylib
+ # Remove i386 from the build file since XCode's libclang.dylib is only a 64-bit version
+ sed -ie 's/CMAKE_OSX_ARCHITECTURES i386 x86_64/CMAKE_OSX_ARCHITECTURES x86_64/' src/CMakeLists.txt
+ # Copy libclang.dylib to the internals dir
+ # Make the project - should be really quick, since libclang.dylib is already built
+ cd src && mkdir build && cd build
+ cmake ..
+ make
+ ```
+
+1. The rest of the instructions are the same, but when adding your project
+ settings, add these extra arguments to `sublimeclang_options`:
+
+ ```json
+ "sublimeclang_options":
+ [
+ ...
+ // MAC-ONLY: Include these options, replacing the paths with the correct installed SDK
+ "-isystem", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/",
+ "-isystem", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1",
+ "-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/",
+ "isysroot", "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk",
+ "-mmacosx-version-min=10.7",
+ "-stdlib=libc++",
+ "-isystem", "/usr/include",
+ "-isystem", "/usr/include/c++/*",
+ ]
+ ```
+
+### Windows (not working)
+
+You'll need cl.exe which can be installed with [the Visual C++ Build Tools
+2015](https://blogs.msdn.microsoft.com/vcblog/2016/03/31/announcing-the-official-release-of-the-visual-c-build-tools-2015/).
+You should have cl.exe on your `$PATH`, which you can get by running `C:\Program
+Files (x86)\Microsoft Visual C++ Build Tools\Visual C++ 2015 x64 Native Build
+Tools Command Prompt`.
+
+Then you'll need a copy of libclang.so, which can be found on the [LLVM
+website](http://llvm.org/releases/download.html). The instructions should be the
+same as Linux from there.
+
+## Alternative: Code Completion with Ctags
+
+For a fast way to look up symbols, we recommend installing the CTags plugin.
+
+1. Install Exuberant Ctags and make sure that ctags is in your path:
+ http://ctags.sourceforge.net/ (on linux you should be able to just do `sudo
+ apt-get install ctags`)
+1. Install the Ctags plugin: `Ctrl + Shift + P > Install Package > Ctags`
+
+Once installed, you'll get an entry in the context menu when you right click the
+top level folder(s) in your project that allow you to build the Ctags database.
+If you're working in a Chrome project however, do not do that at this point,
+since it will index much more than you actually want. Instead, do one of:
+
+1. Create a batch file (e.g. ctags_builder.bat) that you can run either
+ manually or automatically after you do a gclient sync:
+
+ ```
+ ctags --languages=C++ --exclude=third_party --exclude=.git --exclude=build --exclude=out -R -f .tmp_tags & ctags --languages=C++ -a -R -f .tmp_tags third_party\platformsdk_win7 & move /Y .tmp_tags .tags
+ ```
+
+ This takes a couple of minutes to run, but you can work while it is indexing.
+1. Edit the `CTags.sublime-settings` file for the ctags plugin so that it runs
+ ctags with the above parameters. Note: the above is a batch file - don't
+ simply copy all of it verbatim and paste it into the CTags settings file)
+
+Once installed, you can quickly look up symbols with `Ctrl+t, Ctrl+t` etc. More
+information on keyboard shortcuts can be found on the [CTags GitHub
+page](https://github.com/SublimeText/CTags).
+
+One more hint - Edit your `.gitignore` file (under `%USERPROFILE%` or `~/`) so
+that git ignores the `.tags` file. You don't want to commit it. :)
+
+If you don't have a `.gitignore` in your profile directory, you can tell git
+about it with this command: Windows: `git config --global core.excludesfile
+%USERPROFILE%\.gitignore` Mac, Linux: `git config --global core.excludesfile
+~/.gitignore`
+
+### Build a single file
+Copy the file `compile_current_file.py` to your Packages directory:
+
+```shell
+cd /path/to/chromium/src
+cp tools/sublime/compile_current_file.py ~/.config/sublime-text-3/Packages/User
+```
+
+This will give you access to a command `"compile_current_file"`, which you can
+then add to your `Preferences > Keybindings - User` file:
+
+```json
+[
+ { "keys": ["ctrl+f7"], "command": "compile_current_file", "args": {"target_build": "Debug"} },
+ { "keys": ["ctrl+shift+f7"], "command": "compile_current_file", "args": {"target_build": "Release"} },
+]
+```
+
+You can then press those key combinations to compile the current file in the
+given target build.
+
+## Building inside Sublime
+
+To build inside Sublime Text, we first have to create a new build system.
+
+You can add the build system to your project file (`Project > Edit Project`),
+replacing `out/Debug` with your output directory (on Windows, replace /'s with
+\s in `cmd` and `working_dir`):
+
+```json
+{
+ "folders": [
+ ...
+ ],
+ "build_systems":
+ [
+ {
+ "name": "Build Chrome",
+ "cmd": ["ninja", "-C", "out/Debug", "chrome"],
+ "working_dir": "${project_path}/src",
+ "file_regex": "^[.\\\\/]*([a-z]?:?[\\w.\\\\/]+)[(:]([0-9]+)[):]([0-9]+)?:?(.*)$",
+ "variants": [],
+ },
+ ],
+}
+```
+
+The file regex will allow you to click on errors to go to the error line.
+
+If you're using goma, add the -j parameter (replace out/Debug with your out directory):
+```
+ "cmd": ["ninja", "-j", "1000", "-C", "out/Debug", "chrome"],
+```
+
+**Regex explanation:** Aims to capture these two error formats while respecting
+[Sublime's perl-like group matching](http://docs.sublimetext.info/en/latest/reference/build_systems/configuration.html#build-capture-error-output):
+
+1. `d:\src\chrome\src\base\threading\sequenced_worker_pool.cc(670): error
+ C2653: 'Foo': is not a class or namespace name`
+1. `../../base/threading/sequenced_worker_pool.cc:670:26: error: use of
+ undeclared identifier 'Foo'`
+
+```
+"file_regex": "^[.\\\\/]*([a-z]?:?[\\w.\\\\/]+)[(:]([0-9]+)[):]([0-9]+)?:?(.*)$"
+ ( 0 ) ( 1 )( 2 ) (3 ) ( 4 ) ( 5 ) ( 6 )(7)(8 )
+
+(0) Cut relative paths (which typically are relative to the out dir and targeting src/ which is already the "working_dir")
+(1) Match a drive letter if any
+(2) Match the rest of the file
+(1)+(2) Capture the "filename group"
+(3) File name is followed by open bracket or colon before line number
+(4) Capture "line number group"
+(5) Line # is either followed by close bracket or another colon
+(6) Capture "column filename group" if any.
+(7) If (6) is non-empty there will be another colon (but can't put it inside brackets as the "column filename group" only wants digits).
+(8) Everything else until EOL is the error message.
+```
+
+### Building other targets
+
+You can add build variants to the `variants` array to have quick access to other
+build targets with `Ctrl + Shift + B`:
+
+```json
+"variants":
+ [
+ {
+ "name": "Unit Tests",
+ "cmd": ["ninja", "-j", "1000", "-C", "out/Debug", "unit_tests"],
+ },
+ {
+ "name": "Browser Tests",
+ "cmd": ["ninja", "-j", "1000", "-C", "out/Debug", "browser_tests"],
+ },
+ ]
+```
+
+You can also add a variant for running chrome, meaning you can assign a keyboard
+shortcut to run it after building:
+
+```json
+"variants":
+ [
+ ...
+ {
+ "cmd": ["out/Debug/chrome"],
+ "name": "run_chrome",
+ "shell": true,
+ "env": {
+ "CHROME_DEVEL_SANDBOX": "/usr/local/sbin/chrome-devel-sandbox",
+ },
+ },
+ ]
+```
+
+### Assigning builds to keyboard shortcuts
+
+To assign a build to a keyboard shortcut, select `Preferences > Key Bindings -
+User` (or `Key Bindings - Default` to see the current key bindings). You can add
+the build variants above with the `"build"` command, like so:
+
+```json
+[
+ ...
+ { "keys": ["ctrl+shift+u"], "command": "build", "args": {"variant": "unit_tests"} },
+ { "keys": ["ctrl+shift+b"], "command": "build", "args": {"variant": "browser_tests"} },
+ { "keys": ["ctrl+shift+x"], "command": "build", "args": {"variant": "run_chrome"} },
+]
+```
+
+For more info on custom key bindings, see the
+[Sublime Text Key Bindings Documentation](http://docs.sublimetext.info/en/latest/customization/key_bindings.html).
+
+## Other useful packages
+
+Some other useful packages that improve sublime can be installed from `Ctrl+Shift+P > Install Package`:
+
+* Git enhancements
+ * [Git](https://packagecontrol.io/packages/Git)
+ * [GitCommitMsg](https://packagecontrol.io/packages/GitCommitMsg) -
+ Performs a 'git blame' for one or more lines of code with `Alt + Shift +
+ M` (`Command + Shift + M` on Mac)
+ * [GitDiffHelper](https://packagecontrol.io/packages/GitDiffHelper) -
+ `Ctrl + Alt + G` to open all files modified since the last commit
+ * [GitOpenChangedFiles](https://packagecontrol.io/packages/GitOpenChangedFiles) -
+ `Ctrl + Shift + O` (`Command + Shift + O` on Mac) to open all files
+ modified on the current branch
+ * [Git Conflict
+ Resolver](https://packagecontrol.io/packages/Git%20Conflict%20Resolver)
+ - A GUI for resolving git conflicts
+ * [GitGutter](https://packagecontrol.io/packages/GitGutter) - Shows an
+ icon next to lines that have been inserted, modified or deleted since
+ the last commit.
+* Visual enhancements
+ * [SyncedSideBar](https://packagecontrol.io/packages/SyncedSideBar) -
+ Syncs the currently open file with the expanded tree in the sidebar
+ * [SideBarEnhancements](https://packagecontrol.io/packages/SideBarEnhancements) -
+ Adds more file management options to the sidebar context menu.
+ * [SyncedSidebarBg](https://packagecontrol.io/packages/SyncedSidebarBg) -
+ A purely aesthetic improvement that syncs the sidebar background with
+ the background color for the current theme.
+ * [Theme - Soda](http://buymeasoda.github.io/soda-theme/) - A global theme
+ for Sublime that matches the default color scheme. Needs `"theme": "Soda
+ Light 3.sublime-theme"` in your Preferences > Settings - User` file.
+* Code navigation tools
+ * [AutoFileName](https://packagecontrol.io/packages/AutoFileName) - Auto-
+ completes filenames in #includes
+ * [Open-Include](https://packagecontrol.io/packagenavigations/Open-Include)
+ - Opens the file path under the cursor with `Alt + D`
+* Text tools
+ * [Case Conversion](https://packagecontrol.io/packages/Case%20Conversion) -
+ automatically changes the case of selected text, e.g. `kConstantName` to
+ `CONSTANT_NAME`
+ * [Text Pastry](https://packagecontrol.io/packages/Text%20Pastry) -
+ Inserts incremental number sequences with multi-select
+ * [Wrap Plus](https://packagecontrol.io/packages/Wrap%20Plus) - Auto-wraps
+ a comment block to 80 columns with `Alt + Q` (was used to write this
+ document! ;-)
+ * [Diffy](https://packagecontrol.io/packages/Diffy) - With two files
+ opened side-by-side, `Ctrl + k Ctrl + d` will show the differences
diff --git a/chromium/docs/mac_build_instructions.md b/chromium/docs/mac_build_instructions.md
index 83eb887c441..818b2e3cc74 100644
--- a/chromium/docs/mac_build_instructions.md
+++ b/chromium/docs/mac_build_instructions.md
@@ -7,10 +7,13 @@
* A Mac running 10.9+.
* [Xcode](https://developer.apple.com/xcode) 5+.
* [depot\_tools](http://dev.chromium.org/developers/how-tos/depottools).
-* Install Xcode's "Command Line Tools" via Xcode menu -> Preferences ->
- Downloads
+* Xcode Command Line Tools. Run
+ ```
+ xcode-select --install
+ ```
+ to install them.
* The OSX 10.10 SDK. Run
- ```sh
+ ```
ls `xcode-select -p`/Platforms/MacOSX.platform/Developer/SDKs
```
to check whether you have it. If you don't have it, you need to get one from
diff --git a/chromium/docs/shift_based_development.md b/chromium/docs/shift_based_development.md
index ffc62c952c5..43b718ef932 100644
--- a/chromium/docs/shift_based_development.md
+++ b/chromium/docs/shift_based_development.md
@@ -106,7 +106,7 @@ branch.
e) Also at the start of each shift, we updated the local upstream
branches for each branch to match the upstream relationships that the
-person ending their shift had on his end. One case is if the oldest
+person ending their shift had on their end. One case is if the oldest
branch in the pipeline has been merged to a new LKGR, then we did this:
```
diff --git a/chromium/docs/tpm_quick_ref.md b/chromium/docs/tpm_quick_ref.md
index 296e4a8d4b3..eae952bb573 100644
--- a/chromium/docs/tpm_quick_ref.md
+++ b/chromium/docs/tpm_quick_ref.md
@@ -4,7 +4,7 @@ TODO: this page looks very outdated. glossary.md does not exist,
git.chromium.org does not exist. Delete it?
This page is meant to help keep track of TPM use across the system. It may not
-be up-to-date at any given point, but it's a wiki so you know what to do.
+be up to date at any given point, but it's a wiki so you know what to do.
## Details
diff --git a/chromium/docs/ui/views/macviews_release.md b/chromium/docs/ui/views/macviews_release.md
new file mode 100644
index 00000000000..ac5dd380b73
--- /dev/null
+++ b/chromium/docs/ui/views/macviews_release.md
@@ -0,0 +1,85 @@
+# MacViews Release Plan
+
+## Handy Links
+
+* [Phase 1 bugs](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Proj%3DMacViews+label%3Aphase1&colspec=ID+Pri+M+Stars+ReleaseBlock+Component+Status+Owner+Summary+OS+Modified&x=m&y=releaseblock&cells=ids)
+* [Phase 2 bugs](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Proj%3DMacViews+label%3Aphase2&colspec=ID+Pri+M+Stars+ReleaseBlock+Component+Status+Owner+Summary+OS+Modified&x=m&y=releaseblock&cells=ids)
+* [Other MacViews bugs](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Proj%3DMacViews+-label%3APhase1+-label%3APhase2&colspec=ID+Pri+M+Stars+ReleaseBlock+Component+Status+Owner+Summary+OS+Modified&x=m&y=releaseblock&cells=ids)
+* [Catalog of chromium dialogs](https://docs.google.com/spreadsheets/d/1rChQOblJDsXevMxpUpvaPqK3QIMPdmd2iAvJtdeOeeY/edit#gid=0)
+
+## Phase 1: Controls
+
+Implement Shiny Modern L&F for individual controls, most-commonly-used first. In
+rough order:
+
+1. Buttons
+2. Editboxes
+3. Comboboxes
+4. Radiobuttons/checkboxes
+5. Menubuttons
+6. Treeviews
+7. Tableviews
+
+This phase overlaps with phase 2.
+
+## Phase 2: WebUI Cocoa Dialogs, Rubberband
+
+Once enough controls are done, wire up the Views versions of WebUI-styled Cocoa
+dialogs, behind a new `MacViewsWebUIDialogs` feature. The WebUI-styled Cocoa
+dialogs are:
+
+1. Collected/blocked cookies UI
+2. Device permissions
+3. Extension install
+4. HTTP auth
+5. One-click signin
+6. Site permissions bubble
+7. "Card unmask prompt" (TODO(ellyjones): what is this?)
+8. Website settings dialog
+
+Once all of these dialogs are converted and tested behind the feature, we can
+ship to canary and dev channels and watch for any performance or crash rate
+regressions. Doing all the WebUI-style dialogs at once will avoid having three
+separate dialog UIs.
+
+This phase also includes implementation of rubber-band overscroll and fling
+scrolling. This technology exists already in the renderer compositor - it needs
+to be transplanted to the ui compositor.
+
+## Phase 3: The Other Dialogs
+
+Once WebUI dialogs are converted en masse, we can convert other dialogs to Views
+individually, and ship them without a flag flip or field trial. Cocoa dialogs
+that are in native Cocoa style will gradually migrate to Views dialogs that are
+in the Shiny Modern style.
+
+## Phase 4: Omnibox & Top Chrome
+
+At this point, all dialogs are in Shiny Modern, but the rest of the browser
+chrome is still Cocoa.
+
+Implement Cocoa L&F for any controls still needed for omnibox and top chrome.
+TODO(ellyjones): which controls are these?
+Implement Views versions of the omnibox and top chrome behind a new flag
+`mac-views-browser-chrome`.
+Get UI review of the new versions of the omnibox and top chrome.
+Make the Views versions the default.
+
+## Phase 5: `mac_views_browser=1`
+At this point, all user-visible UI is done via Views, and we need to switch the
+entire browser to a Views-only build:
+
+Check for performance regressions against `mac_views_browser=0`.
+Check for stability regressions against `mac_views_browser=0`.
+Check for a11y regressions through manual testing.
+TODO(ellyjones): Figure out how feasible automated a11y regression testing is.
+Switch `mac_views_browser` to 1 for Canary.
+Cross fingers.
+Watch metrics carefully.
+If there's no surprising metrics changes or public outcry, keep
+mac_views_browser=1 for dev, then beta, then stable.
+
+## Phase 6: delete Cocoa
+Since much of the Cocoa code is dead and we are no longer building with
+`mac_views_browser=0`, remove dead Cocoa UI code.
+
diff --git a/chromium/docs/updating_clang.md b/chromium/docs/updating_clang.md
index e5b6d877bf5..67846db5e71 100644
--- a/chromium/docs/updating_clang.md
+++ b/chromium/docs/updating_clang.md
@@ -11,9 +11,9 @@
```
git cl try &&
git cl try -m tryserver.chromium.mac -b mac_chromium_asan_rel_ng \
- -b mac_chromium_gn_dbg &&
+ -b mac_chromium_gyp_dbg &&
git cl try -m tryserver.chromium.linux -b linux_chromium_chromeos_dbg_ng \
- -b linux_chromium_chromeos_asan_rel_ng -b linux_chromium_msan_rel_ng &&
+ -b linux_chromium_chromeos_asan_rel_ng -b linux_chromium_msan_rel_ng &&
git cl try -m tryserver.blink -b linux_blink_rel
```
1. Commit roll CL from the first step
diff --git a/chromium/docs/useful_urls.md b/chromium/docs/useful_urls.md
index b49606cb77c..9366ddcca71 100644
--- a/chromium/docs/useful_urls.md
+++ b/chromium/docs/useful_urls.md
@@ -5,45 +5,40 @@ This page aims to be a repository of useful links that people may find useful.
## Build Status
-|:---------------------------------------------|:------------------------|
-| http://build.chromium.org/p/chromium/console | Main buildbot waterfall |
-| http://chromium-status.appspot.com/lkgr | Last Known Good Revision. Trybots pull this revision from trunk. |
-| http://chromium-status.appspot.com/revisions | List of the last 100 potential LKGRs |
-| http://build.chromium.org/p/chromium/lkgr-status/ | Status dashboard for LKGR |
-| http://build.chromium.org/p/tryserver.chromium/waterfall?committer=developer@chromium.org | Trybot runs, by developer |
-| http://chromium-status.appspot.com/status_viewer | Tree uptime stats |
-| http://chromium-cq-status.appspot.com | Commit queue status |
-| http://codereview.chromium.org/search?closed=3&commit=2&limit=50 | Pending commit queue jobs |
-| http://chromium-build-logs.appspot.com/ | Search for historical test failures by test name |
-| http://chromium-build-logs.appspot.com/list | Filterable list of most recent build logs |
+* [Main buildbot waterfall](http://build.chromium.org/p/chromium/console)
+* [Last Known Good Revision](http://chromium-status.appspot.com/lkgr) : Trybots pull this revision from trunk
+* [List of the last 100 potential LKGRs](http://chromium-status.appspot.com/revisions)
+* [Status dashboard for LKGR](http://build.chromium.org/p/chromium/lkgr-status/)
+* http://build.chromium.org/p/tryserver.chromium/waterfall?committer=developer@chromium.org : Trybot runs, by developer
+* [Tree uptime stats](http://chromium-status.appspot.com/status_viewer)
+* [Commit queue status](http://chromium-cq-status.appspot.com)
+* [Pending commit queue jobs](http://codereview.chromium.org/search?closed=3&commit=2&limit=50)
+* [Search for historical test failures by test name](http://chromium-build-logs.appspot.com/)
+* [Filterable list of most recent build logs](http://chromium-build-logs.appspot.com/list)
## For Sheriffs
-|:---------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------|
-| http://build.chromium.org/p/chromium.chromiumos/waterfall?show_events=true&reload=120&failures_only=true | List of failing bots for a waterfall (chromium.chromiumos as an example) |
-| http://build.chromium.org/p/chromium.linux/waterfall?show_events=true&reload=120&builder=Linux%20Builder%20x64&builder=Linux%20Builder%20(dbg) | Monitor one or multiple bots (Linux Builder x64 and Linux Builder (dbg) on chromium.linux as an example) |
-| http://build.chromium.org/p/chromium.win/waterfall/help | Customize the waterfall view for a waterfall (using chromium.win as an example) |
-| http://chromium-sheriffing.appspot.com | Alternate waterfall view that helps with test failure triage |
-| http://test-results.appspot.com/dashboards/flakiness_dashboard.html | Lists historical test results for the bots |
+* http://build.chromium.org/p/chromium.chromiumos/waterfall?show_events=true&reload=120&failures_only=true : List of failing bots for a waterfall(chromium.chromiumos as an example)
+* http://build.chromium.org/p/chromium.linux/waterfall?show_events=true&reload=120&builder=Linux%20Builder%20x64&builder=Linux%20Builder%20(dbg) : Monitor one or multiple bots(Linux Builder x64 and Linux Builder (dbg) on chromium.linux as an example)
+* http://build.chromium.org/p/chromium.win/waterfall/help : Customize the waterfall view for a waterfall(using chromium.win as an example)
+* [Alternate waterfall view that helps with test failure triage](http://chromium-sheriffing.appspot.com)
+* [Lists historical test results for the bots](http://test-results.appspot.com/dashboards/flakiness_dashboard.html)
## Release Information
-|:--------------------------------------|:---------------------------------------------------|
-| https://omahaproxy.appspot.com/viewer | Current release versions of Chrome on all channels |
-| https://omahaproxy.appspot.com/ | Looks up the revision of a build/release version |
+* [Current release versions of Chrome on all channels](https://omahaproxy.appspot.com/viewer)
+* [Looks up the revision of a build/release version](https://omahaproxy.appspot.com/)
## Source Information
-|:------------------------|:------------|
-| http://cs.chromium.org/ | Code Search |
-| http://cs.chromium.org/SEARCH_TERM | Code Search for a specific SEARCH\_TERM |
-| https://chromium.googlesource.com/chromium/src/ | Gitiles Source Code Browser |
-| https://chromium.googlesource.com/chromium/src/+log/b6cfa6a..9a2e0a8?pretty=fuller | Git changes in revision range (also works for build numbers) |
-| http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&mode=html&range=SUCCESS_REV:FAILURE_REV | SVN changes in revision range |
-| http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog_blink.html?url=/trunk&mode=html&range=SUCCESS_REV:FAILURE_REV | Blink changes in revision range |
+* [Code Search](http://cs.chromium.org/)
+* http://cs.chromium.org/SEARCH_TERM : Code Search for a specific SEARCH\_TERM
+* [Gitiles Source Code Browser](https://chromium.googlesource.com/chromium/src/)
+* https://chromium.googlesource.com/chromium/src/+log/b6cfa6a..9a2e0a8?pretty=fuller : Git changes in revision range(also works for build numbers)
+* http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&mode=html&range=SUCCESS_REV:FAILURE_REV : SVN changes in revision range
+* http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog_blink.html?url=/trunk&mode=html&range=SUCCESS_REV:FAILURE_REV : Blink changes in revision range
## Communication
-|:------------------------------------------------------------------|:-------------------------|
-| http://groups.google.com/a/chromium.org/group/chromium-dev/topics | Chromium Developers List |
-| http://groups.google.com/a/chromium.org/group/chromium-discuss/topics | Chromium Users List |
+* [Chromium Developers List](http://groups.google.com/a/chromium.org/group/chromium-dev/topics)
+* [Chromium Users List](http://groups.google.com/a/chromium.org/group/chromium-discuss/topics)
diff --git a/chromium/docs/windows_build_instructions.md b/chromium/docs/windows_build_instructions.md
index 826a4c42ef5..16b007d9adb 100644
--- a/chromium/docs/windows_build_instructions.md
+++ b/chromium/docs/windows_build_instructions.md
@@ -1,5 +1,12 @@
# Windows Build Instructions
+## Common checkout instructions
+
+This page covers Windows-specific setup and configuration. The
+[general checkout
+instructions](http://dev.chromium.org/developers/how-tos/get-the-code) cover
+installing depot tools and checking out the code via git.
+
## Setting up Windows
You must set your Windows system locale to English, or else you may get
@@ -13,11 +20,7 @@ supported.
You must have Windows 7 x64 or later. x86 OSs are unsupported.
-## Step 1: Getting depot_tools
-
-Get [depot\_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up).
-
-## Step 2: Getting the compiler toolchain
+## Getting the compiler toolchain
Follow the appropriate path below:
@@ -48,8 +51,7 @@ authentication instructions. **Note that you must authenticate with your
@google.com credentials**, not @chromium.org. Enter "0" if asked for a
project-id.
-Once you've done this, the toolchain will be installed automatically for
-you in Step 3, below (near the end of the step).
+Run: `gclient sync` again to download and install the toolchain automatically.
The toolchain will be in `depot_tools\win_toolchain\vs_files\<hash>`, and windbg
can be found in `depot_tools\win_toolchain\vs_files\<hash>\win_sdk\Debuggers`.
@@ -57,31 +59,35 @@ can be found in `depot_tools\win_toolchain\vs_files\<hash>\win_sdk\Debuggers`.
If you want the IDE for debugging and editing, you will need to install
it separately, but this is optional and not needed to build Chromium.
-## Step 3: Getting the Code
+## Using the Visual Studio IDE
-Follow the steps to [check out the
-code](https://www.chromium.org/developers/how-tos/get-the-code) (largely
-`fetch chromium`).
+If you want to use the Visual Studio IDE, use the `--ide` command line
+argument to `gn gen` when you generate your output directory (as described on
+the [get the code](http://dev.chromium.org/developers/how-tos/get-the-code)
+page):
-## Step 4: Building
+```gn gen --ide=vs out\Default
+devenv out\Default\all.sln
+```
-Build the target you are interested in.
+GN will produce a file `all.sln` in your build directory. It will internally
+use Ninja to compile while still allowing most IDE functions to work (there is
+no native Visual Studio compilation mode). If you manually run "gen" again you
+will need to resupply this argument, but normally GN will keep the build and
+IDE files up to date automatically when you build.
-```shell
-ninja -C out\Debug chrome
-```
+The generated solution will contain several thousand projects and will be very
+slow to load. Use the `--filters` argument to restrict generating project files
+for only the code you're interested in, although this will also limit what
+files appear in the project explorer. A minimal solution that will let you
+compile and run Chrome in the IDE but will not show any source files is:
+
+```gn gen --ide=vs --filters=//chrome out\Default```
-Alternative (Graphical user interface): Open a generated .sln
-file such as chrome.sln, right-click the chrome project and select build.
-This will invoke the real step 4 above. Do not build the whole solution
-since that conflicts with ninja's build management and everything will
-explode.
-Substitute the build directory given to `-C` with `out\Debug_x64` for
-[64-bit
-builds](https://www.chromium.org/developers/design-documents/64-bit-support)
-in GYP, or whatever build directory you have configured if using GN.
+There are other options for controlling how the solution is generated, run `gn
+help gen` for the current documentation.
-### Performance tips
+## Performance tips
1. Have a lot of fast CPU cores and enough RAM to keep them all busy.
(Minimum recommended is 4-8 fast cores and 16-32 GB of RAM)
@@ -89,11 +95,9 @@ in GYP, or whatever build directory you have configured if using GN.
antivirus and indexing software.
3. Store the build tree on a fast disk (preferably SSD).
4. If you are primarily going to be doing debug development builds, you
- should use the component build:
- - for [GYP](https://www.chromium.org/developers/gyp-environment-variables)
- set `GYP_DEFINES=component=shared_library`
- - for [GN](https://www.chromium.org/developers/gn-build-configuration),
- set the build arg `is_component_build = true`.
+ should use the component build. Set the [build
+ arg](https://www.chromium.org/developers/gn-build-configuration)
+ `is_component_build = true`.
This will generate many DLLs and enable incremental linking, which makes
linking **much** faster in Debug.