refs/tags/58.0.3029.109
diff --git a/.clang-format b/.clang-format
deleted file mode 100644
index 8d4b5e4..0000000
--- a/.clang-format
+++ /dev/null
@@ -1,39 +0,0 @@
-# Defines the Chromium style for automatic reformatting.
-# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
-BasedOnStyle: Chromium
-# This defaults to 'Auto'. Explicitly set it for a while, so that
-# 'vector<vector<int> >' in existing files gets formatted to
-# 'vector<vector<int>>'. ('Auto' means that clang-format will only use
-# 'int>>' if the file already contains at least one such instance.)
-Standard: Cpp11
-
-# TODO(thakis): Default this to true in -style=Chromium if we decide to keep it.
-SortIncludes: true
-
-# Make sure code like:
-# IPC_BEGIN_MESSAGE_MAP()
-#   IPC_MESSAGE_HANDLER(WidgetHostViewHost_Update, OnUpdate)
-# IPC_END_MESSAGE_MAP()
-# gets correctly indented.
-MacroBlockBegin: "^\
-BEGIN_MSG_MAP|\
-BEGIN_MSG_MAP_EX|\
-BEGIN_SAFE_MSG_MAP_EX|\
-CR_BEGIN_MSG_MAP_EX|\
-IPC_BEGIN_MESSAGE_MAP|\
-IPC_BEGIN_MESSAGE_MAP_WITH_PARAM|\
-IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN|\
-IPC_STRUCT_BEGIN|\
-IPC_STRUCT_BEGIN_WITH_PARENT|\
-IPC_STRUCT_TRAITS_BEGIN|\
-POLPARAMS_BEGIN|\
-PPAPI_BEGIN_MESSAGE_MAP$"
-MacroBlockEnd: "^\
-CR_END_MSG_MAP|\
-END_MSG_MAP|\
-IPC_END_MESSAGE_MAP|\
-IPC_PROTOBUF_MESSAGE_TRAITS_END|\
-IPC_STRUCT_END|\
-IPC_STRUCT_TRAITS_END|\
-POLPARAMS_END|\
-PPAPI_END_MESSAGE_MAP$"
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
deleted file mode 100644
index b607ea0..0000000
--- a/.git-blame-ignore-revs
+++ /dev/null
@@ -1,400 +0,0 @@
-# git hyper-blame master ignore list.
-#
-# This file contains a list of git hashes of revisions to be ignored by git
-# hyper-blame (in depot_tools). These revisions are considered "unimportant" in
-# that they are unlikely to be what you are interested in when blaming.
-#
-# Instructions:
-# - Only large (generally automated) reformatting or renaming CLs should be
-#   added to this list. Do not put things here just because you feel they are
-#   trivial or unimportant. If in doubt, do not put it on this list.
-# - Precede each revision with a comment containing the first line of its log.
-#   For bulk work over many commits, place all commits in a block with a single
-#   comment at the top describing the work done in those commits.
-# - Only put full 40-character hashes on this list (not short hashes or any
-#   other revision reference).
-# - Append to the bottom of the file (revisions should be in chronological order
-#   from oldest to newest).
-# - Because you must use a hash, you need to append to this list in a follow-up
-#   CL to the actual reformatting CL that you are trying to ignore.
-
-# Mechanically rename scoped_ptr -> std::unique_ptr and
-# make_scoped_ptr -> base::WrapUnique.
-08daa0770adc348a5e3852200352b2cd7f620d21
-c6378bdd46cb9fbeb4e7a0fbb37d820f8b82232d
-c862da8ac734722d6928b64ae87564bf2ee0d2ae
-ea64f7caeafef5b77b656d03b4b8c4ec8edab4c0
-03c6cc125a0f63fcf549db5caa525ad5941fffd8
-ecb4a22b939cdcd3e022ee2c452dd7f866d1dfb5
-d1b5b043fcf499cf46d059f5bb72a6ab07f04d88
-c3d183bef609f3c4dab124572281ba13257d37a6
-1795070c67cd08f5c5437b4e0d3ae6e5d3e5fd13
-1aaf50682f5b06bea8db36316dcddde48444b54e
-093de9b30c0ba6ded896506a297314e5ed818b89
-f1bc82901463a76329b480e1ce55638d105f4616
-d521b63cb0fe3d78ed64bbba2c4cfacfeb7ebfd3
-0765c49ae6fb26c49c98bf9205d690174de3c0e4
-1b185c49a6f2e9eea0bac36132f79b8ce50f529a
-ced9224fbb7866e6ea7e9da221c0b2570008bd55
-a37bedae9c23a82bf8b2f9011d06c9933e0048db
-e0d99834d5d8f817c55828c1f53b4d0946b2d6df
-942f39d75745824a53ef6ce896bb2462010476bb
-abbf4465acfdb9c8d6223c680b634f1fd506813e
-c3df9bafc8db94bd613fbd76c61abe5057f7a82d
-aeceb05e862d97596a0e005a17a4f7d61183b818
-24002d093cd0d2b540b0b1895d0044d44a30450d
-c3e80570c413b058d8f855a695610b38072d6519
-6e25ed32b8e7dca8352af477dbc82b67ac836736
-c963c714c99f34bd80b392d9896ca9cecd66fb6d
-9603ab9714083051fc19942aa171d88af2cd379c
-3c3c93d549f8685459c9d938e81f1e68c888ad6c
-a9454747427889f70d14df4646f7f599d00df02d
-566c3c55ebc5fa4600c3e6259938c3f9e1baf483
-f064cccace7bf4d940a494042754760f07e8164f
-0a6e80cc6b045cb1217a59ad3c9e764c36fb0260
-a500b69aa06c2bc084a3b1867b9824f4218014de
-d1a1847163c0038284a7053b41ba0dedfad9b7b7
-2a193281aac690b3fdfba1246d6b36877553a9be
-c16dc809e7c8026d8fad7d9169f324df7ab6b1ce
-67e2c0a015fb2d2d2584a44b96da1620d2678bf5
-fd6a38135a1dd716d0f00a86900a03a931a697db
-3b4fe476046af664ea30dcfffb10956eeaba3b9e
-40ce7b38f09de969a106da37e4dec11464da18c6
-c864f52514c7e8cf9992a524e0294b1cc32c1db5
-b4e18e45c933153b06833a33bf6352c5da38125a
-f6c40587bc9ee68ef8102992ea5c52cc8e0c6933
-60bc3bcfa8b7141986c5e4b3c357c7e03393f230
-9bfa516692718597507a3339a33dafdc7c2f00ba
-cedca561f373a9f2d102e7bd896712b504b445db
-86be9c00e6a13acad1851ddc64182a94347c9420
-92ae1414e686f8f8ba9c5c663b34552362641feb
-531cca917021e753d5215ddb194200be075944ac
-4ac58c7a6c73f0972e73ce420749f886a8aec18c
-5971627d34ab2cca303e4a4552fecf2f019f61c6
-6003e0b1ac1acb0a3973abbca62881d2b6acc0b1
-08c9d69b0c0d625d2ce38e3d8402f36e1226f0fc
-ae4a290306d308cd6c7187df85c1825edf3354db
-acd68a2e07af43fa67def3830555f294eff2ac8e
-b743cc6790dd88fd5b53e4a21f089a38b40a53f8
-b587f9a457ee20bfc4e3055f3b79ad7b522c8682
-d82cd995ba83303302900ebe7704a9fab405ef93
-7bacc0eaa9eb6edb22c9e2734e0e57e64e8b4125
-fabb28482dce40e1ac570beb5b9eef5832f9a9b1
-1007a4af51fee305fd95933d9bdcd83c89f9df29
-6cb57924b37070a844c7626bc2ab8850c7cf17dd
-f427502355334e64faa24798a34f7db9f3bf7871
-f624e47486f525e6d266b99f90bcb81ad8f57295
-8b51c0ab6c7b58cfa186691dcc973527371b2309
-25c52c3f3c407fd9f5678c0079c877ccef34c090
-fecbe3fea62c512555c2f9c63b936331c9915619
-79ce717c93677da7d3db074bad0349995980ce93
-5197113e6864b0530dd8b489615c089facd06e70
-532924d626b6538b547fd00793f0373bb5271df2
-ba06265360528b619b4e6df792b0fb06350a2602
-5ea05e40ab4ad7a6f6dbd4fabd2ffe061d9e15f2
-b8eac3a8edbd7864438f5e326893fa52da75c16f
-f5d315cecedf2bc83f7499d9c4311215db51ecc6
-f402ab9f3f02d00d87c840fe79863f4ac0609ba1
-bf70795c3d53b4c087b4276069bc8798048497da
-4e7c042ce7fda2baafe59dd88481b2de67644170
-4d0d72efb14b4746ff054fd1867058dc6997cafd
-71f677162f1b860b005e20fc9c2f2417bdfb7030
-1edb03a4943e4e3de4116adcc031e2dfabbb7805
-b11f7ae342eeba3a126b8270171ab3c6981e0bf7
-0569a0ed6347980265b437c61b5849ee2ca2c529
-08cfe9ba9528151087b93894baaf4390a4ad75d0
-878bd271da9444eba2a823fe30f0c316656b0d0d
-8522a25bece204fd7281ec764af1e0c8e36329d6
-aee3e1ec72a9985aa20be4ccf514774373737705
-655b66c64362dbea1b7e27207545234f7b908106
-9c5cab5a712d0762319d115a30f5baed1d07416c
-ad1777e9c39dc1c7c4d4fb6293a01ca470595134
-d04b92dd6de3bbe80c94955ac3347523e891f93d
-42edb859e1917c96b988fa2f4e204de63aeb18ae
-22f90e716ad8674d122781cda62ab739ecb7271c
-49964c23cbba511c110cfb642f5685694a895d49
-8a98ca292bd722516ad23b2d85fdb5663a33dab3
-3a4770da8b56e8f4c0ef1a85f5786afe35f5401e
-1fd259a0929d9c8ee68923e29ec1bd60d88f5690
-7f767e658961d89959af3bd143e7719fcaca8445
-a9850e17ec8a7e5e754d2b804ea1a93ff2352310
-4af48586364b625a8bfce51b10aa4a76109a9108
-c0e39d57d0c16684ff7c99632fba9a49d4d2431e
-6682b1c4aac00aee61b09ba8f6084f1790429315
-f6f806674c4f6ebbb8b20197ae5b6c7a40bba08f
-a3451b74e1aac0c538d7d6824bd714553eb0141e
-39fafebd8ff93ca8aac361926e6b3ef840302328
-ccfc5401e32e24f29847cd91f643d03ed651b19a
-2f01269f405de0dfd12cb1dc56459c4492d65b8b
-c314381373dc794d3875428994ec7a74edda77e4
-31759da04512d5815aff6c30134e33856638889d
-f5d2410841791e8c32739a4418159489e1dde324
-b21a1b10f9a753d3b66e448ca8fa74ac83d5c2cb
-18e946f9ab6250614430fd09cccb849005ca7aeb
-a77e28eb3b14d816f2c880d3185af8522c04f6bc
-d99c42a1a3c4566d5cdbac0bbbed5c266d09cfeb
-8a9783e4c8d986f835f8cc2760267d6c1c7b0b57
-acd3f5279c9bc0c73f25976e1cdfa72f43309dba
-d967d950d071094d70cb480dc3158a48949a7167
-7036d1e571ea31ea7ae35c9cc71890cef2fa90d7
-fe3745e624cc39bca68defa70d92390baf897c8a
-00dfa74c4fe33466816c58d175b60c3a5d4683b4
-259570ccaf98009037d611aac72e9d809d4d438f
-40c732a8f3bb63cc6a16a200819f9d01da3e6039
-254c536ce14380dc8009240cfff27117a1d52897
-c51ac9e88916cb09ed5f0c4ea7d00d835f4223c7
-b8259a16dea373e71505b1f8d9a02b96612161df
-04a35cd4ca655ce8092705d501678ba9edfd005a
-c0d9887721c7d00ad99a7df09ebae75720503a6a
-d0fc6aa9a949b8093d5e836e3d6443e869495c6a
-b94ac84f0dc33dcba4d27424777a14fadbb659ef
-24f43a5e9841b7177688291a625a373c3b8ba365
-5f043bc0ea7c069e3ef5e6ef903b98f4e84ec4cb
-b707c5c8bed8656c800f613b46967b916e1a7f44
-3076abbf53ffb74830a097f1c4f7dd232f246fad
-154b22210617a1f3f58d0a19d8b30ea9409b98e4
-7c2ca35e78f7ba433da3eef399753148fe30f127
-e399ff07e13116e446b1ee904c1f6c970eb5bc3b
-477cae30f89224646d3135ae03cdf93d4901dd78
-d4593e75ceb64dbf966fc77530f4bd38cdcb687c
-fc1ac3074134f30e46543f5d9ca97d5d2a6d0282
-6430b2ca82390ebcecedc6c0dbf54008af8322ca
-4d55af59cf486412be6e5e458417f6a423abd7da
-501f801f0aa603ae08f213091de67f23476eb40e
-396f876cf9e02a21687bb78364c2e3c930287e9e
-ef0ef5d8d5ac805e400ed5826a8b9ca57aececbe
-5b9c7ed6b732c9b65c851413d0fa5612edc95b85
-91cdd51340b8f6a0cc13ec9f5199defbea6cd49c
-4a7e93b6b2a43ecf9476695bb9046d59a39629dc
-bb7e2b70c8aace67356a53230d104738ebc92693
-45f93419065eb07f861fe59e3f969e2b3255b2ed
-b753c6fb8b539a9c5febe08f6b159f01b98ecfa8
-7089de047f9845b19afd5b671ace13aa1aa3ad42
-03de39b2f64eb2e9fbe69947be3d10042f30469e
-3f767dc3724b2e3f36c17ee760007475de7e63cc
-82beb4ff418b0dcb40bd6b860d2e9793a0193118
-6aaed6a40bc23a872e14f19a39ff2d7998c803d0
-a0ee5fb8a4dbf546b8da197a055dd3997f3dc475
-4d43bc26cc5d105edb1e976582803ea931e572e1
-84c358e7a3b1658bf396d39716fb0fffbb0aa018
-
-# Move code in ui/gl/* from gfx:: to gl::
-7a4638457b6cb7ba351c57b98f1871209604cb81
-
-# Remove OwnPtr from Blink.
-f5f08765522594f41a1c032754e4fbc30e90c134
-
-# clang-format all of //ash
-b8dcef526018a47e7cd985cef724c464d0d958a6
-
-# Re-write many calls to WrapUnique() with MakeUnique()
-f7a5d36f502f953bdceaeb9a4c31ab621f89be08
-2b385fe1ca886bbfbc38648f1498a154ac85925a
-c4bfd81cdab01a081b08d362b864df0dcac4740a
-d689a77f1fcbd63909fc6eebf3df553715fef9bf
-ed4d66a321cf2f053ce0c3c81e8ad51a453d75ec
-7344d1ab4a98fedab5e75070a8b03aa894ff3b74
-c5ddf366ba98d052497b5dc56187704f914ec8f6
-6c0773df4a2c301b1d109c9a1ce50b2181fceb50
-a40b2de1242abca45b546dc13114d1a5aaa41134
-c9462d4d25114bbdfa25f6e1ca28eca3303e8286
-799a1fd2f3dcb409f751b950f767db427664cbd1
-eb5cdbe2b1cb6dedbb51c544b0cc94b20984eadf
-68860bd0684a7cfdc2bf07ff768bd540a60a6e9e
-5e27337b381e1ee8c487f4b4cab71a9a0e6d1b0f
-04dff7f22bbbbfe8b696e7f0dba2c11fdb6f38ed
-85bddde312d17e38e859de39f861711d504732b6
-6affa5574c8085dfc255f13ff49cb19edbc96ad9
-fccaf874e0338cd3a27c0ef71c635399d2197de2
-df0a9da0c9e6b7ceed46e057ea5ad87a97932b9c
-08e66e6f17755de8d0082593183f7d67ce13cb57
-da4bffb6ef5cb7c8894c64d4666ac6a5da4d80fb
-8133ff702313ecbb52f3903838418cf5de676ab5
-ebb92b4123f784b2fc950a2e762b0ef2c8342764
-46ad5f4fc0f8d35f71c890431e8e4518d228f2e3
-1f0ae4df06a2a8c764c3659679525a201d7a20e7
-b6983d553d1cd861d8f7c42a07ee209da696e1d5
-0c937aa64f5309be50d077dd0d29014cf2d0e9b3
-bb40326f4ba96cb2691e33855d07a75cbb9c57b7
-edb3f078970c02c48cb0eccc07170e9463f63eda
-3cdd7ebe8bd324d3174e8ec3253190908e717a36
-175211e0e340c1e0a01286b96aca51e700294b5b
-bc3c05e020ebed67cf32ff9648e7ed2b0e9f82c3
-91d6fc12ddbd78adc66ca00d54a9c318b4e3b6b7
-8fcde24af7919904a7f2f9b9d452da8c575095db
-29649b991045c05394dc42641068934b9d494e80
-85ec579564402fad9b6f0d593decf686846fb61f
-34f9699d9be6dd32931c9e694f61b3022346f4e5
-55d8215215c10a413f227b8bcf0e3a826e7b5b2a
-641bb021db42cdfd711a97bdc16077c64bb87aea
-9b4b8464d50e235b25ceb2872d44d09a258837f2
-d4fe03704abb4c3628cddff5c7aa8f82b86b2b21
-2deef68d60652155b338b88b1acc1f4be1c51ee3
-ec7c3997e21fc154ab89a26779d00220c48324f4
-86fa1dd92331ce969c55ade017aab9950e0c5156
-a63ce1fb29a4c1aa568d916aaba717986d515b86
-
-# Mechanically update auto to auto* where a raw pointer would be deduced.
-e8f87e7cc93e47aeea704006fe1ebdf273ddaba9
-ea7a7551eb59fb06ae5a488ee20faf91b2695d7d
-5170bf98eb5ad7c6ebbdad175ecd478c3e48ead0
-6f21f24e143e691e3635c06e906b1f8917d33dbd
-eb900a1e034e1abddcaf7fdd7bb05c0d75cf0b62
-63daf7ca9ccff9c04a584cb97237ee0eb6c13fa7
-1ee03c4c04b838817fd89a9c384facf40a289dae
-2f37e9e61a72d10f5c9be9d5021445eacec42ad0
-238f0a029f813ddc3c5a3438d8896a01cf1c5aaf
-f4cde239e090fbb84afc4cd8315d22f92e6fb3e3
-981aa5a100145aee038661b81db780edbb257a09
-2de366b533c783f31c6233f4034a8fa070b29db9
-038b95619952006436c8feeb058e4ff45f510697
-4058ac6be8672005d3113d49b945d9874e01f37c
-10e0d5f672745230042c700577feb7fc66f00f15
-0b93e11fe659a7d3e68bdc318f4d0ec1eef69ad4
-ae72b08137e2ca7af8b3fef367af33be0866ef64
-668a5386d4e352fccf29893b848797d2993fa8b2
-c5999f9e1035f7a7f32c416c080afaa8cb0837f7
-6bcf17c7e6c8a5968a63a9d761d2dda7ecfbbe39
-7c035fee8e8c3c0667923a161253a13594ed021c
-e825f6a8e8ab12b450409be005d41a7849f0d6ab
-8dd57e1b56672be11e9539d9223ffa583cd8625f
-6b86f80e5578519fcf5b3a19767bd53e86112f15
-922b0234f015fe1cb46d40a4cca119efadd5bee5
-f1172137682cec61334b4822f862c782ccbd9167
-4ee88f9978720b2d7f7d683f933c4d6bccb23413
-cb7343e6af785c9b194f7d9aaa713df94facdcab
-bd00db280f3c20df00d5f178c518370a920c2648
-3af234130c64de89299201845b46dcbd11eae4b1
-b62fb540edd2d4fceaf6693a51d691cb195e9047
-3986a102dcd2e16aacb98b19b743a94e86f3aa20
-3d26e74634a9470e3ac06911ee899ce0ffc06339
-b0e145b14f1ae5821f187e2297e538ac56c763dc
-daead0ee14bf28ce22e7603a685fe1c12ae31607
-952ffe1735f2c5b41a8eab6851f6d6a2fb673152
-19df8256c07f1c044cb3638849ea8bc928493b2e
-d11ed91e72f49c6ec0d9cd2a3d5ae7bfe451b618
-fabf492cd95ecc8450cef4f46da08652d694c206
-4e388dd146895127c51b881fdbbdcf524e2a90f9
-ae7d4b87b676f061748707109b20ab4814953a41
-e1fee825d91a55d177dcad13ea8e59f0a6b7bb4c
-89f7240e789d4e077b87c14a6094adf7be61daae
-f1af449e6d087f4542485401ea5fab3a63b1d68b
-b20a6b27f2c4a845973b4d8cc828ef3c2f51f050
-418dc6a24457bcb6c2c8ffdd95f5993c7e3e05de
-0168cdbec15153330d9a7f6528316176b02282c3
-bb89de9c690710b8e43e60f421b9e2c3462638ea
-e122d0f1cd07bb86382804d973b097185e75dc6e
-5d70c084a742a5e4ef37c8a40e4b31e11306f8c7
-87fe42802477a954f8a60ebda917f6cfc8244f7f
-04706fdd21f2dbcb9444d55048412878fffe0888
-142de3b623ab5cafdc8fbedbea7474790878c2e6
-a5be776a37c46f6a8792756cec52973d4390a845
-587cf8faa9a3914d98abb0330cffcc80f284c998
-291fde65aa2a5ee3a1036fe90cc063243e1dc51f
-6f27af2b5c060be8ccfeb7b11be15414144c2879
-437438d084b2ce1227a2860f8ee5698797b8835c
-fe45a535ea84cba23a9b1355d36525db0d408280
-49740b50472837cc4b4a3ed8402ac56802338464
-747f5543ff5e4c201bcba0182bfd24e5e6896d28
-
-# clang-format blink.
-1c8e1a7719e9d223cc84e838c9a31a0210f5878b
-
-# Reflow blink comments.
-4e1cadabbfa289b8e565114fe51a32980c996d93
-22a064d580892d6032977eff027a25abe132cfa8
-4013d22a7d6569f5761b437d88b9cf716909f223
-3b2d0607127d98646c789531defd953801fd3ddb
-52a0d0922dcdbab46f18c241fff034ac8d139d60
-5d6fc8b5a83846ca93f906584e0350855b194bdb
-da71ffa5eba20d97df583821ef5bc20778847a86
-35c6377052771b615c563e1306141d1082c25e71
-f053eba0ad183c9d098f18e55d14216f5deb1c0a
-570d5892c1f86881947b5f237e1b705dd569d241
-a6508ca00c122034df41b20985aee9b6b892ddd2
-a2041d07dcc0d3f799675c8971f6b5dc588c37d9
-3c13b6e7f8eccc79baf7cdd1e05234119bab2b44
-ab33ca94648d4717acf5f2628d3e2613bc21610b
-fa6ea29dbd5323d2138abf686074f75b14919be7
-515bb3084e26e5ffba3a7ffa6cae6d06063b911e
-9a8271ba3b27f738c01986f3033fc61725b39f72
-b236186c2c23bec4ca49a5ec3f20050c9271e22a
-7e74e9d1d86dd7d4e109e6757b6e623536359083
-d9019bdca3200c4bab868422c6d374175555bcc4
-c95a15bde2f28ffc43f9e704897cd350d307ea3f
-bc70ee84f5dc0a2d791c4f650314cb3fd8d7bd26
-3ef2412e118b0018ccb7291358391131894c4e23
-566600aa3bb9d95b58e8824c50abd5a3c1657dd2
-ebaaed67656c010067bd52ace76c1391302eaa05
-16c0fd8db8d05c48e4f4972a494d49c84917276d
-9968503c3e2d1b3003af061d1c47f017bfdd5cc9
-56d5d7aa7ad96ad3c853cc128a769404f6e0294c
-0632d8e8fd2d3b985563b3f9fd0291236d8f96b7
-7362281c877e7f5be41e542de3913c900941090b
-4215d1e8125bc3d8084c3a72da49e9b985ed04b8
-b873e02f086898e946c374f628fdc7b1cb47ce37
-11b4bbce08c2497a1c476db867496d4e194f8f89
-9b328b83181b5cf25115b39efe1325f121f9adb3
-576dc3cfcba01528ddf5739342a7f6f6109816d2
-6e2439b1e0164bfc9cde2afe00e46e078d0159c6
-66c9f33db7aa115b6385ca256979f5cd6bd90ad7
-634b8c3ca1ca0d719e3771a384b2e4ccc06dfffa
-55e6683f5fad4e9ee67af77ffc2300cf4198c195
-29c29f18164bd942cc66b6ffbe78b2901b9a3753
-2ca4e6adc710c7ca833a91abf1eac7cc10c20034
-ffd9957533d6ee9facb544a2968f3a7b6a2186ae
-119f976164031b951476a52270160b926d804490
-d9dd690e6b182eb3201891b2cfe3a08a9c7945d8
-7e11f64c25bf4667b30360e6a0e359588c6a1878
-7d42a66f228745c4b437b77ab92cfef81a399465
-b261e056bd1d62f8fc25767966ea5e2668462cc9
-743d7ca4ac81e162cdbc92e982e611fda92b10e3
-81e196d0bcbcdf404c52a2173cd78cac8848cee3
-032a07551461da50acc287ab6cd6a8957ba2418e
-bb8dc4d8ad52c3ee404fa1a0bb1f770e6a0dbd03
-78993c760eb6ea63a6e04fe164c488367bbea24c
-bdb1f4d6e4c48f96807ca2e20ae1edf1edffa071
-4f0cd5c718bd720be986c43d923778a13e9ee89c
-0ce7ace48ceee1ce97b6a2ef3e1fdcc8f295309b
-dbd833d6588194e9117ac7494839d7b6651a1a57
-4a8a7ad6155544b087fdedff4bcb4e4a5a35bbd1
-a66ca9569860c72763c89146704a4a8c68efaffc
-9a90cae3a6ce67acc981fa87f48d99374a00d78b
-100fff395562319824e96af9328b847bb14043f2
-d2a38acd7c8f91971cd83a4dae1343ddb7a21496
-b68f48701966427c18cbb63e3a15e7dda4fa19a4
-26e2733660998f34f0998a56516c317fcaaa9359
-7f9ede63f194fa5e4cf1c62e2b72dbc9f1ee0471
-d0909e12aaaf66534aee43edff36ed08e746e0cb
-dc08ba6bb0d6141914698b87f83fbefda6481d15
-69b89efbfc2bbb21182ed1407b1cf467f5add3df
-0d94cbad339ccf1050c30718d99665306352d99b
-16f372650f9fcc6fd309216f3e077560fee89c36
-18252f6e125994521e04495b2111ac36ad6a9703
-19588751197923c2c7604dd71c361713f9c1a07f
-1c6f256b3c2193bab840b5658bb1d115e383428c
-32f8e4f892d2f2a887b33dc3eb3fe78a2a70dc4e
-3704c018a0c4f287daa5aa0ce6fdbdf6444fcd49
-5502b5a19ee85fb3d150dd20ce386f1699d45c01
-6664f8e0a2e420d96444ba04b3c723341c1c17be
-742cd0347b9999467d82e6f8a28a7d3b5673c19d
-83ae2a267ea1f53212780c2d4eb9129b308388ec
-94615e6fbd1d730ed5446979b57c417b0d241179
-980f63ea8f6c7b647e6cdd7e773903fc536ec1a5
-a5d709a0105ad9fc825ec40edf0d28abaded87d6
-a729edf941b224161ce6d9510dfdf272c0132518
-a72b163a4b9ba97742a7cb442e4c566ec9c6c909
-a97502df26f798c413dda0ca9107fec5f3ecd86c
-ab02cff195528182f60268891250537a6cf2f163
-b31a822146111d8965d7c4c4884e9b9f71bccb80
-b664f182f72117ad97d2e83206d35edac90bb55e
-bd1a920e6b9db5852c3248798723a70edfbf52e6
-c71eacb21bfaa2f7fe6580b3e17f57819142ef3e
-d3e0e6655a412956248d217baa397c5f6af2bbd3
-dddb09f2c1400de9a69966a1a697604cbae0bfdb
-e32a7e3865d11aa1e3742f9438ddb9fd0ca79cf5
-e462f7cce1b45cc62a96abc33fe9961504c756d8
-e9cd023a911baa558b1fe8291a001af54e24e6cc
-ee42b66bf9a0c37018e03a5eb53fba6f37dfc0c0
-f06ae6a557327aa7d10755d65ea7f02673431054
-fe06ac8eac8940be169f918a7e5845e0a0e51c6a
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 74328c4..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Stop Windows python license check presubmit errors by forcing LF checkout.
-*.py  text eol=lf
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index f09cf88..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,305 +0,0 @@
-*.gypcmd
-*.mk
-*.ncb
-*.opensdf
-*.orig
-*.pdb
-*.props
-*.pyc
-*.pyproj
-*.rules
-*.sdf
-*.sln
-*.sublime-project
-*.sublime-workspace
-*.suo
-*.targets
-*.user
-*.vc.opendb
-*.vcproj
-*.vcxproj
-*.vcxproj.filters
-*.vpj
-*.vpw
-*.vpwhistu
-*.vtg
-*.xcodeproj
-*.xcworkspace
-*.VC.db
-*_proto.xml
-*_proto_cpp.xml
-*~
-!Android.mk
-.*.sw?
-.DS_Store
-.classpath
-.cproject
-.gdb_history
-.gdbinit
-.landmines
-.metadata
-.project
-.pydevproject
-.checkstyle
-cscope.*
-GPATH
-GRTAGS
-GSYMS
-GTAGS
-Session.vim
-tags
-Thumbs.db
-v8.log
-vs-chromium-project.txt
-# Settings directories for eclipse
-/.externalToolBuilders/
-/.settings/
-/.vs/
-# Visual Studio Code
-/.vscode/
-/_out
-/android_emulator_sdk
-/ash/ash_unittests_run.xml
-/base/base_unittests_run.xml
-/breakpad/src/
-# See build/.gitignore for entries covering src/build.
-/buildtools
-# The Chrome OS build creates a /c symlink due to http://crbug.com/54866.
-/c
-/cdm
-/ceee/internal/
-/chrome/angle_unittests_run.xml
-/chrome/content_gl_tests_run.xml
-/chrome/gl_tests_run.xml
-/chrome/gles2_conform_test_run.xml
-/chrome/tab_capture_performance_tests_run.xml
-/chrome/telemetry_gpu_test_run.xml
-/chrome/app/theme/default_100_percent/google_chrome
-/chrome/app/theme/default_200_percent/google_chrome
-/chrome/app/theme/google_chrome
-/chrome/browser/autofill/internal
-/chrome/browser/chromeos/login/screenshot_testing/golden_screenshots/*.png
-/chrome/browser/chromeos/login/screenshot_testing/artifacts
-/chrome/browser/extensions/api/ledger/
-/chrome/browser/extensions/default_extensions/chromeos
-/chrome/browser/google/linkdoctor_internal
-/chrome/browser/internal
-/chrome/browser/performance_monitor/performance_monitor.xml
-/chrome/browser/protector/internal
-/chrome/browser/resources/chromeos/quickoffice
-/chrome/browser/resources/pdf/html_office
-/chrome/browser/resources/media_router_internal/
-/chrome/browser/resources/settings_internal/
-/chrome/browser/resources/software_rendering_list
-/chrome/browser/spellchecker/internal
-/chrome/browser_tests_run.xml
-/chrome/chrome_run.xml
-/chrome/chrome_user32_delay_imports.xml
-/chrome/chrome_version_resources.xml
-/chrome/common/extensions/api/api.xml
-/chrome/common/extensions/api/ledger/
-/chrome/Hammer
-/chrome/installer/linux/internal
-/chrome/installer/mac/internal
-/chrome/installer/mac/third_party/xz/xz
-/chrome/installer/mini_installer.xml
-/chrome/installer/mini_installer/mini_installer.aps
-/chrome/installer/mini_installer/support
-/chrome/installer/mini_installer_syzygy.xml
-/chrome/installer/mini_installer_tests_run.xml
-/chrome/installer_util_strings.xml
-/chrome/interactive_ui_tests_run.xml
-/chrome/setup.xml
-/chrome/setup_unittests.xml
-/chrome/supplement.gypi
-/chrome/sync_integration_tests_run.xml
-/chrome/test/android/telemetry_tests/browser_tests/*.wpr
-/chrome/test/chromeos/autotest/files/client/deps/chrome_test/test_src/
-/chrome/test/chromeos/autotest/files/client/deps/page_cycler_dep/test_src/
-/chrome/test/chromeos/autotest/files/client/deps/perf_data_dep/test_src/
-/chrome/test/chromeos/autotest/files/client/deps/pyauto_dep/test_src/
-/chrome/test/chromeos/autotest/files/client/deps/telemetry_dep/test_src/
-/chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin
-/chrome/test/data/firefox2_profile/searchplugins
-/chrome/test/data/firefox2_searchplugins
-/chrome/test/data/firefox3_profile/searchplugins
-/chrome/test/data/firefox3_searchplugins
-/chrome/test/data/gpu/vectortown_endurance/
-/chrome/test/data/gpu/vt/
-/chrome/test/data/layout_tests
-/chrome/test/data/osdd
-/chrome/test/data/pdf_private
-/chrome/test/data/perf/canvas_bench
-/chrome/test/data/perf/frame_rate/content
-/chrome/test/data/perf/frame_rate/private
-/chrome/test/data/perf/private/
-/chrome/test/data/perf/third_party/
-/chrome/test/data/plugin/
-/chrome/test/data/webrtc/resources
-/chrome/test/media_router/internal
-/chrome/tools/memory
-/chrome/tools/test/reference_build
-/chrome/unit_tests_run.xml
-/chrome/web_ui_mojo_bindings.xml
-/chrome_elf/chrome_elf_resources.xml
-/chromecast/internal
-/clank
-/cloud_print/cloud_print_version_resources.xml
-/components/chrome_settings_proto_generated_compile.xml
-/components/cloud_policy_proto_generated_compile.xml
-/components/gcm_driver.xml
-/components/leveldb_proto_test_support.xml
-/components/ntp_tiles/resources/internal
-/components/rappor.xml
-/components/resources/default_100_percent/google_chrome
-/components/resources/default_200_percent/google_chrome
-/components/search_engines/prepopulated_engines.xml
-/components/suggestions.xml
-/components/variations.xml
-/content/browser/service_worker/proto.xml
-/content/content_browsertests_run.xml
-/content/content_common_mojo_bindings.xml
-/content/content_unittests_run.xml
-/content/test/data/gpu/generated/
-/content/test/data/gpu/gpu_reference/
-/content/test/data/layout_tests/
-/content/test/data/plugin/
-/content/web_ui_test_mojo_bindings.xml
-/data
-/delegate_execute
-/device/serial/device_serial_mojo.xml
-/google_apis/gcm/gcm.xml
-/google_apis/internal
-/googleurl
-/gpu/gles2_conform_test
-/infra/.recipe_deps
-/internal_gyp
-/ios/third_party/earl_grey/src
-/ios/third_party/fishhook/src
-/ios/third_party/gcdwebserver/src
-/ios/third_party/material_components_ios/src
-/ios/third_party/material_font_disk_loader_ios/src
-/ios/third_party/material_roboto_font_loader_ios/src
-/ios/third_party/material_sprited_animation_view_ios/src
-/ios/third_party/material_text_accessibility_ios/src
-/ios/third_party/ochamcrest/src
-/ios_internal
-/llvm
-/media/cast/logging/cast_logging_proto_lib.xml
-/media/cdm/api
-/media/media_mojo_bindings.xml
-/media/test/data/internal
-/metro_driver
-/mojo/hello_world_service.xml
-/mojo/mojo_application_bindings.xml
-/mojo/mojo_application_manager_unittests.xml
-/mojo/mojo_apps_js_bindings.xml
-/mojo/mojo_apps_js_unittests_run.xml
-/mojo/mojo_clipboard_bindings.xml
-/mojo/mojo_content_handler_bindings.xml
-/mojo/mojo_core_window_manager_bindings.xml
-/mojo/mojo_echo_service_bindings.xml
-/mojo/mojo_example_service_bindings.xml
-/mojo/mojo_external_service_bindings.xml
-/mojo/mojo_geometry_bindings.xml
-/mojo/mojo_gles2_bindings.xml
-/mojo/mojo_gpu_bindings.xml
-/mojo/mojo_input_events_bindings.xml
-/mojo/mojo_js_unittests_run.xml
-/mojo/mojo_keyboard_bindings.xml
-/mojo/mojo_launcher_bindings.xml
-/mojo/mojo_media_viewer_bindings.xml
-/mojo/mojo_native_viewport_bindings.xml
-/mojo/mojo_navigation_bindings.xml
-/mojo/mojo_network_bindings.xml
-/mojo/mojo_public_bindings_unittests.xml
-/mojo/mojo_public_test_interfaces.xml
-/mojo/mojo_public_unittests.xml
-/mojo/mojo_sample_service.xml
-/mojo/mojo_shell_bindings.xml
-/mojo/mojo_shell_lib.xml
-/mojo/mojo_spy.xml
-/mojo/mojo_surface_id_bindings.xml
-/mojo/mojo_surfaces_app_bindings.xml
-/mojo/mojo_surfaces_bindings.xml
-/mojo/mojo_test_service_bindings.xml
-/mojo/mojo_view_manager_bindings.xml
-/mojo/mojo_window_manager_bindings.xml
-/mojo/mojo_wm_flow_embeddee_bindings.xml
-/mojo/mojo_wm_flow_embedder_bindings.xml
-/mojo/mojom_test.xml
-/mojo/sample_service.xml
-/native_client
-/net/Debug
-/net/net_derived_sources.xml
-/net/net_unittests_run.xml
-/net/Release
-/net/testserver.log
-/out*
-/ppapi/native_client/nacl_irt.xml
-/ppapi/native_client/ppapi_lib.xml
-/remoting/android/internal/
-/remoting/appengine/
-/remoting/host/installer/linux/internal/
-/remoting/ios/
-/remoting/internal/
-/remoting/proto/chromotocol_proto_lib.xml
-/remoting/remoting_core_resources.xml
-/remoting/remoting_elevated_controller.xml
-/remoting/remoting_host.xml
-/remoting/remoting_host_event_logger.xml
-/remoting/remoting_host_installation.xml
-/remoting/remoting_host_messages.xml
-/remoting/remoting_infoplist_strings.xml
-/remoting/remoting_lib_idl.xml
-/remoting/remoting_lib_rc.xml
-/remoting/remoting_me2me_host.xml
-/remoting/remoting_native_messaging_manifests.xml
-/remoting/remoting_version_resources.xml
-/remoting/remoting_windows_resources.xml
-/remoting/test/internal/
-/remoting/tools/internal/
-/remoting/webapp/app_remoting/internal/
-/sandbox/linux/seccomp-legacy/
-/sdch/open-vcdiff
-/seccompsandbox
-/signing_keys
-/skia/tools/clusterfuzz-data/
-/sql/sql_unittests_run.xml
-/sync/sync.xml
-/sync_testserver.log
-/testing/gmock
-/testing/gtest
-/testserver.log
-/tools/luci-go/linux64/isolate
-/tools/luci-go/mac64/isolate
-/tools/luci-go/win64/isolate.exe
-# See third_party/.gitignore for entries covering src/third_party.
-/tools/.bisect-builds-cache.json
-/tools/distcc
-/tools/gn/bin/linux
-/tools/gn/bin/mac
-/tools/gn/bin/win
-/tools/gyp
-/tools/histograms
-/tools/json_schema_compiler/test/json_schema_compiler_tests.xml
-/tools/metrics/actions/actions.old.xml
-/tools/metrics/histograms/histograms.before.pretty-print.xml
-/tools/page_cycler/acid3
-/tools/perf/data
-/tools/perf/internal
-/tools/perf/results.html
-/tools/swarming_client
-/tools/tryserver
-/tools/win/link_limiter/build
-/ui/file_manager/internal
-/ui/keyboard/keyboard_mojom_bindings.xml
-/ui/surface/surface.xml
-/ui/surface/surface_gpu_tests.xml
-/v8
-/webkit/data
-/webpagereplay_logs/
-/win8/delegate_execute/delegate_execute_version_resources.xml
-/win8/metro_driver/metro_driver_version_resources.xml
-/x86-generic_out/
-/xcodebuild
diff --git a/.gn b/.gn
deleted file mode 100644
index b0565e51..0000000
--- a/.gn
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is used by the GN meta build system to find the root of the source
-# tree and to set startup options. For documentation on the values set in this
-# file, run "gn help dotfile" at the command line.
-
-import("//build/dotfile_settings.gni")
-
-# The location of the build configuration file.
-buildconfig = "//build/config/BUILDCONFIG.gn"
-
-# The secondary source root is a parallel directory tree where
-# GN build files are placed when they can not be placed directly
-# in the source tree, e.g. for third party source trees.
-secondary_source = "//build/secondary/"
-
-# These arguments override the default values for items in a declare_args
-# block. "gn args" in turn can override these.
-#
-# In general the value for a build arg in the declare_args block should be the
-# default. In some cases, a DEPS-ed in project will want different defaults for
-# being built as part of Chrome vs. being built standalone. In this case, the
-# Chrome defaults should go here. There should be no overrides here for
-# values declared in the main Chrome repository.
-#
-# Important note for defining defaults: This file is executed before the
-# BUILDCONFIG.gn file. That file sets up the global variables like "is_ios".
-# This means that the default_args can not depend on the platform,
-# architecture, or other build parameters. If you really need that, the other
-# repo should define a flag that toggles on a behavior that implements the
-# additional logic required by Chrome to set the variables.
-default_args = {
-  v8_extra_library_files = [
-    # Dependencies used by the extra libraries. Putting them here causes them
-    # to be executed first during snapshot creation.
-    "//third_party/WebKit/Source/core/streams/CommonStrings.js",
-
-    # Extra libraries.
-    "//third_party/WebKit/Source/core/streams/ByteLengthQueuingStrategy.js",
-    "//third_party/WebKit/Source/core/streams/CountQueuingStrategy.js",
-    "//third_party/WebKit/Source/core/streams/ReadableStream.js",
-  ]
-  v8_experimental_extra_library_files = [
-    "//third_party/WebKit/Source/core/streams/ReadableStreamExperimentalPipeTo.js",
-    "//third_party/WebKit/Source/core/streams/WritableStream.js",
-  ]
-  v8_enable_inspector = true
-  v8_enable_gdbjit = false
-  v8_imminent_deprecation_warnings = false
-}
-
-# These are the targets to check headers for by default. The files in targets
-# matching these patterns (see "gn help label_pattern" for format) will have
-# their includes checked for proper dependencies when you run either
-# "gn check" or "gn gen --check".
-check_targets = [
-  #"//apps/*",  # Medium-hard.
-  "//ash/*",
-  "//base/*",
-  "//blink/*",
-  "//breakpad/*",
-  "//build/*",
-  "//cc/*",
-
-  #"//chrome/*",  # Epic number of errors.
-  "//chrome/app/*",
-  "//chrome/browser/extensions/*",
-  "//chrome/browser/ui/*",
-  "//chrome/common/*",
-  "//chrome/installer/*",
-  "//chrome/third_party/mozilla_security_manager/*",
-  "//chrome/tools/*",
-  "//chrome/utility/*",
-  "//chromecast/*",
-  "//chromeos/*",
-  "//chrome_elf/*",
-  "//cloud_print/*",
-  "//components/*",
-  "//content/*",
-  "//courgette/*",
-  "//crypto/*",
-  "//data/*",
-  "//dbus/*",
-  "//device/*",
-
-  #"//extensions/*",  # Lots of errors.
-  "//extensions:extensions_unittests",
-  "//extensions/browser:browser_tests",
-  "//extensions/browser:unit_tests",
-  "//extensions/common:unit_tests",
-  "//extensions/renderer:unit_tests",
-  "//extensions/shell:browser_tests",
-  "//extensions/shell:unit_tests",
-  "//extensions/utility:unit_tests",
-  "//gin/*",
-  "//google_apis/*",
-  "//google_update/*",
-  "//gpu/*",
-
-  "//ios/*",
-  "//ios_internal/*",
-  "//ipc/*",
-
-  #"//jingle/*",
-  "//mash/*",
-
-  #"//media/*",  # Lots of errors.
-  #"//media/base/*",
-  #"//media/capture/*",
-  "//media/cast/*",
-  "//media:media",
-  "//media:shared_memory_support",
-  "//media:media_unittests",
-  "//media:audio_unittests",
-  "//media:media_perftests",
-  "//media/audio/*",
-  "//media/blink/*",
-  "//media/cdm/*",
-  "//media/ffmpeg/*",
-  "//media/gpu/*",
-  "//media/midi/*",
-  "//media/mojo/*",
-  "//media/remoting/*",
-  "//media/test/*",
-
-  "mojo/*",
-
-  #"//native_client/*",
-  "//net/*",
-
-  #"//pdf/*",  # Medium-hard.
-  #"//ppapi/*",  # Lots of errors.
-  "//ppapi/examples/*",
-  "//printing/*",
-
-  #"//remoting/*",  # Medium-hard.
-  "//rlz/*",
-
-  #"//sandbox/*",  # Medium-hard.
-  "//sdch/*",
-  "//services/*",
-  "//skia/*",
-  "//sql/*",
-  "//storage/*",
-  "//testing/*",
-
-  #"//third_party/*",  # May not ever want this.
-  "//third_party/hunspell/*",
-  "//third_party/libaddressinput/*",
-  "//third_party/libphonenumber/*",
-  "//third_party/WebKit/Source/*",
-  "//tools/*",
-
-  #"//ui/*",  # Work left on Chromeos w/ use_ozone. Some parts of UI that work:
-  "//ui/accessibility/*",
-  "//ui/android/*",
-  "//ui/app_list/*",
-  "//ui/arc/*",
-  "//ui/aura/*",
-  "//ui/aura_extra/*",
-  "//ui/base/*",
-  "//ui/chromeos/*",
-  "//ui/compositor/*",
-  "//ui/content_accelerators/*",
-  "//ui/display/*",
-  "//ui/events/*",
-  "//ui/file_manager/*",
-  "//ui/gfx/*",
-  "//ui/gl/*",
-  "//ui/keyboard/*",
-  "//ui/latency_info/*",
-  "//ui/login/*",
-  "//ui/message_center/*",
-  "//ui/mojo/*",
-  "//ui/native_theme/*",
-  "//ui/ozone/*",
-  "//ui/platform_window/*",
-  "//ui/resources/*",
-  "//ui/shell_dialogs/*",
-  "//ui/snapshot/*",
-  "//ui/strings/*",
-  "//ui/surface/*",
-  "//ui/touch_selection/*",
-  "//ui/views/*",
-  "//ui/views_content_client/*",
-  "//ui/web_dialogs/*",
-  "//ui/webui/*",
-  "//ui/wm/*",
-  "//url/*",
-  "//v8/*",
-  "//win8/*",
-]
-
-# These are the list of GN files that run exec_script. This whitelist exists
-# to force additional review for new uses of exec_script, which is strongly
-# discouraged.
-#
-# GYPI_TO_GN
-#
-# Some of these entries are for legacy gypi_to_gn calls. We should not be
-# adding new calls to this script in the build (see //build/gypi_to_gn.py for
-# detailed advice). The only time you should be editing this list for
-# gypi_to_gn purposes is when moving an existing call to a different place.
-#
-# PLEASE READ
-#
-# You should almost never need to add new exec_script calls. exec_script is
-# slow, especially on Windows, and can cause confusing effects. Although
-# individually each call isn't slow or necessarily very confusing, at the scale
-# of our repo things get out of hand quickly. By strongly pushing back on all
-# additions, we keep the build fast and clean. If you think you need to add a
-# new call, please consider:
-#
-# - Do not use a script to check for the existance of a file or directory to
-#   enable a different mode. Instead, use GN build args to enable or disable
-#   functionality and set options. An example is checking for a file in the
-#   src-internal repo to see if the corresponding src-internal feature should
-#   be enabled. There are several things that can go wrong with this:
-#
-#    - It's mysterious what causes some things to happen. Although in many cases
-#      such behavior can be conveniently automatic, GN optimizes for explicit
-#      and obvious behavior so people can more easily diagnose problems.
-#
-#    - The user can't enable a mode for one build and not another. With GN build
-#      args, the user can choose the exact configuration of multiple builds
-#      using one checkout. But implicitly basing flags on the state of the
-#      checkout, this functionality is broken.
-#
-#    - It's easy to get stale files. If for example the user edits the gclient
-#      to stop checking out src-internal (or any other optional thing), it's
-#      easy to end up with stale files still mysteriously triggering build
-#      conditions that are no longer appropriate (yes, this happens in real
-#      life).
-#
-# - Do not use a script to iterate files in a directory (glob):
-#
-#    - This has the same "stale file" problem as the above discussion. Various
-#      operations can leave untracked files in the source tree which can cause
-#      surprising effects.
-#
-#    - It becomes impossible to use "git grep" to find where a certain file is
-#      referenced. This operation is very common and people really do get
-#      confused when things aren't listed.
-#
-#    - It's easy to screw up. One common case is a build-time script that packs
-#      up a directory. The author notices that the script isn't re-run when the
-#      directory is updated, so adds a glob so all the files are listed as
-#      inputs. This seems to work great... until a file is deleted. When a
-#      file is deleted, all the inputs the glob lists will still be up to date
-#      and no command-lines will have been changed. The action will not be
-#      re-run and the build will be broken. It is possible to get this correct
-#      using glob, and it's possible to mess it up without glob, but globs make
-#      this situation much easier to create. if the build always lists the
-#      files and passes them to a script, it will always be correct.
-
-exec_script_whitelist =
-    build_dotfile_settings.exec_script_whitelist + [
-      # Whitelist entries for //build should go into
-      # //build/dotfile_settings.gni instead, so that they can be shared
-      # with other repos. The entries in this list should be only for files
-      # in the Chromium repo outside of //build.
-      "//android_webview/BUILD.gn",
-      "//build_overrides/build.gni",
-      "//chromeos/BUILD.gn",
-
-      # TODO(dgn): Layer violation but breaks the build otherwise, see
-      # https://crbug.com/474506.
-      "//clank/java/BUILD.gn",
-      "//clank/native/BUILD.gn",
-
-      "//jingle/BUILD.gn",
-      "//remoting/host/installer/linux/BUILD.gn",
-      "//remoting/remoting_version.gni",
-      "//remoting/host/installer/win/generate_clsids.gni",
-
-      # TODO(dpranke): Get these from the appropriate repos instead.
-      "//third_party/angle/BUILD.gn",
-      "//third_party/angle/src/tests/BUILD.gn",
-      "//third_party/angle/src/vulkan_support/BUILD.gn",
-      "//third_party/catapult/tracing/BUILD.gn",
-      "//third_party/google_input_tools/inputview.gni",
-
-      # CLD2 should be removed soon, delete this when we do.
-      "//third_party/cld_2/BUILD.gn",
-      "//tools/grit/grit_rule.gni",
-
-      # Not gypi-to-gn.
-      "//google_apis/BUILD.gn",
-      "//printing/BUILD.gn",
-    ]
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index dc45a9a..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,834 +0,0 @@
-# Names should be added to this file with this pattern:
-#
-# For individuals:
-#   Name <email address>
-#
-# For organizations:
-#   Organization <fnmatch pattern>
-#
-# See python fnmatch module documentation for more information.
-
-Aaron Jacobs <samusaaron3@gmail.com>
-Aaron Leventhal <aaronlevbugs@gmail.com>
-Aaron Randolph <aaron.randolph@gmail.com>
-Aaryaman Vasishta <jem456.vasishta@gmail.com>
-Abhijeet Kandalkar <abhijeet.k@samsung.com>
-Abhishek Agarwal <abhishek.a21@samsung.com>
-Abhishek Singh <abhi.rathore@samsung.com>
-Adam Bonner <abonner-chromium@solscope.com>
-Adam Roben <adam@github.com>
-Adam Treat <adam.treat@samsung.com>
-Addanki Gandhi Kishor <kishor.ag@samsung.com>
-Adenilson Cavalcanti <a.cavalcanti@samsung.com>
-Aditya Bhargava <heuristicist@gmail.com>
-Adrian Belgun <adrian.belgun@intel.com>
-Abhishek Kanike <abhishek.ka@samsung.com>
-Ahmet Emir Ercin <ahmetemiremir@gmail.com>
-Ajay Berwal <ajay.berwal@samsung.com>
-Ajay Berwal <a.berwal@samsung.com>
-Ajith Kumar V <ajith.v@samsung.com>
-Aku Kotkavuo <a.kotkavuo@partner.samsung.com>
-Alex Gabriel <minilogo@gmail.com>
-Alex Gartrell <agartrell@cmu.edu>
-Alex Henrie <alexhenrie24@gmail.com>
-Alex Scheele <alexscheele@gmail.com>
-Alexander Shalamov <alexander.shalamov@intel.com>
-Alexander Sulfrian <alexander@sulfrian.net>
-Alexandre Abreu <wiss1976@gmail.com>
-Alexandru Chiculita <achicu@adobe.com>
-Alexey Korepanov <alexkorep@gmail.com>
-Alexey Kuts <kruntuid@gmail.com>
-Alexis Brenon <brenon.alexis@gmail.com>
-Alexis La Goutte <alexis.lagoutte@gmail.com>
-Alexis Menard <alexis.menard@intel.com>
-Alfredo Hernandez <ahernandez.miralles@gmail.com>
-Ali Vathi <ali.akbar@gmail.com>
-Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
-Ambarish Rapte <ambarish.r@samsung.com>
-Amey Jahagirdar <jahagird@amazon.com>
-Amit Sarkar <amit.srkr@samsung.com>
-Amogh Bihani <amogh.bihani@samsung.com>
-Amos Lim <amoseui@gmail.com>
-Amruth Raj <amruthraj@motorola.com>
-Amruth Raj <ckqr36@motorola.com>
-Anand Ratn <anand.ratn@samsung.com>
-Anastasios Cassiotis <tom.cassiotis@gmail.com>
-Ancil George <ancilgeorge@samsung.com>
-Andra Paraschiv <andra.paraschiv@intel.com>
-Andrei Parvu <andrei.prv@gmail.com>
-Andrei Parvu <parvu@adobe.com>
-Andrew Brampton <me@bramp.net>
-Andrew Hung <andrhung@amazon.com>
-Andrew MacPherson <andrew.macpherson@soundtrap.com>
-Andrew Tulloch <andrew@tullo.ch>
-Anish Patankar <anish.p@samsung.com>
-Ankit Kumar <ankit2.kumar@samsung.com>
-Ankur Verma <ankur1.verma@samsung.com>
-Anne Kao <annekao94@gmail.com>
-Anssi Hannula <anssi.hannula@iki.fi>
-Anthony Halliday <anth.halliday12@gmail.com>
-Anton Obzhirov <a.obzhirov@samsung.com>
-Antonin Hildebrand <antonin.hildebrand@gmail.com>
-Antonio Gomes <a1.gomes@sisa.samsung.com>
-Anuj Kumar Sharma <anujk.sharma@samsung.com>
-Arjun Karthik <arjunkar@amazon.com>
-Armin Burgmeier <aburgmeier@bloomberg.net>
-Arnaud Renevier <a.renevier@samsung.com>
-Arpita Bahuguna <a.bah@samsung.com>
-Arthur Lussos <developer0420@gmail.com>
-Arun Kulkarni <kulkarni.a@samsung.com>
-Arun Kumar <arun87.kumar@samsung.com>
-Arun Mankuzhi <arun.m@samsung.com>
-Arunoday Sarkar <a.sarkar.arun@gmail.com>
-Arunprasad Rajkumar <ararunprasad@gmail.com>
-Arunprasad Rajkumar <arurajku@cisco.com>
-Ashlin Joseph <ashlin.j@samsung.com>
-Attila Dusnoki <dati91@gmail.com>
-Avinaash Doreswamy <avi.nitk@samsung.com>
-Balazs Kelemen <b.kelemen@samsung.com>
-Baul Eun <baul.eun@samsung.com>
-Behara Mani Shyam Patro <behara.ms@samsung.com>
-Bem Jones-Bey <bemajaniman@gmail.com>
-Bem Jones-Bey <bjonesbe@adobe.com>
-Ben Fiola <benfiola@gmail.com>
-Ben Karel <eschew@gmail.com>
-Ben Noordhuis <ben@strongloop.com>
-Benjamin Dupont <bedupont@cisco.com>
-Benjamin Jemlich <pcgod99@gmail.com>
-Bernard Cafarelli <voyageur@gentoo.org>
-Bhanukrushana Rout <b.rout@samsung.com>
-Biljith Jayan <billy.jayan@samsung.com>
-Bobby Powers <bobbypowers@gmail.com>
-Branden Archer <bma4@zips.uakron.edu>
-Brendan Kirby <brendan.kirby@imgtec.com>
-Brendan Long <self@brendanlong.com>
-Brian G. Merrell <bgmerrell@gmail.com>
-Brian Konzman, SJ <b.g.konzman@gmail.com>
-Brian Luft <brian@electroly.com>
-Brian Merrell, Novell Inc. <bgmerrell@gmail.com>
-Brian Yip <itsbriany@gmail.com>
-Bruno Calvignac <bruno@flock.com>
-Bruno de Oliveira Abinader <brunoabinader@gmail.com>
-Bruno Roy <brusi_roy@hotmail.com>
-Bryan Donlan <bdonlan@gmail.com>
-Byoungkwon Ko <gogag2@gmail.com>
-Byungwoo Lee <bw80.lee@samsung.com>
-Caio Marcelo de Oliveira Filho <caio.de.oliveira.filho@intel.com>
-Caitlin Potter <caitpotter88@gmail.com>
-Calvin Mei <calvimei@amazon.com>
-Cameron Gutman <aicommander@gmail.com>
-Catalin Badea <badea@adobe.com>
-Cem Kocagil <cem.kocagil@gmail.com>
-Chakshu Ahuja <chakshu.a@samsung.com>
-Chamal De Silva <chamalsl@yahoo.com>
-Chandra Shekar Vallala <brk376@motorola.com>
-Chang Shu <c.shu@samsung.com>
-ChangSeok Oh <shivamidow@gmail.com>
-Changbin Shao <changbin.shao@intel.com>
-Changjun Yang <changjun.yang@intel.com>
-Changwan Hong <cwhong893@gmail.com>
-Changyeon Kim <cyzero.kim@samsung.com>
-Chansik Yun <chansik.yun@gmail.com>
-Chaobin Zhang <zhchbin@gmail.com>
-Chris Greene <cwgreene@amazon.com>
-Chris Harrelson <chrishtr@gmail.com>
-Chris Nardi <hichris123@gmail.com>
-Chris Tserng <tserng@amazon.com>
-Chris Vasselli <clindsay@gmail.com>
-Chris Szurgot <szurgotc@amazon.com>
-Christophe Dumez <ch.dumez@samsung.com>
-Christopher Dale <chrelad@gmail.com>
-Clemens Fruhwirth <clemens@endorphin.org>
-Clement Scheelfeldt Skau <clementskau@gmail.com>
-Clinton Staley <clintstaley@chromium.org>
-Clinton Staley <clintstaley@gmail.com>
-Craig Schlenter <craig.schlenter@gmail.com>
-Csaba Osztrogonác <ossy.szeged@gmail.com>
-Daegyu Lee <na7jun8gi@gmail.com>
-Dai Chunyang <chunyang.dai@intel.com>
-Daiwei Li <daiweili@suitabletech.com>
-Damien Marié <damien@dam.io>
-Dan McCombs <overridex@gmail.com>
-Daniel Bomar <dbdaniel42@gmail.com>
-Daniel Carvalho Liedke <dliedke@gmail.com>
-Daniel Imms <daniimms@amazon.com>
-Daniel Johnson <danielj41@gmail.com>
-Daniel Lockyer <thisisdaniellockyer@gmail.com>
-Daniel Nishi <dhnishi@gmail.com>
-Daniel Platz <daplatz@googlemail.com>
-Daniel Shaulov <dshaulov@ptc.com>
-Daniel Trebbien <dtrebbien@gmail.com>
-Daniel Waxweiler <daniel.waxweiler@gmail.com>
-Darshini KN <kn.darshini@samsung.com>
-David Benjamin <davidben@mit.edu>
-David Erceg <erceg.david@gmail.com>
-David Fox <david@davidjfox.com>
-David Futcher <david.mike.futcher@gmail.com>
-David Leen <davileen@amazon.com>
-David McAllister <mcdavid@amazon.com>
-David Spellman <dspell@amazon.com>
-Dax Kelson <dkelson@gurulabs.com>
-Debashish Samantaray <d.samantaray@samsung.com>
-Deepak Dilip Borade <deepak.db@samsung.com>
-Deepak Mittal <deepak.m1@samsung.com>
-Deepak Singla <deepak.s@samsung.com>
-Deokjin Kim <deokjin81.kim@samsung.com>
-Derek Halman <d.halman@gmail.com>
-Devlin Cronin <rdevlin.cronin@gmail.com>
-Diego Ferreiro Val <elfogris@gmail.com>
-Dillon Sellars <dill.sellars@gmail.com>
-Divya Bansal <divya.bansal@samsung.com>
-Dominic Jodoin <dominic.jodoin@gmail.com>
-Dominik Röttsches <dominik.rottsches@intel.com>
-Don Woodward <woodward@adobe.com>
-Donghee Na <corona10@gmail.com>
-Dongheun Kang <dongheun.kang@lge.com>
-Dongie Agnir <dongie.agnir@gmail.com>
-Dongjun Kim <djmix.kim@samsung.com>
-Dongseong Hwang <dongseong.hwang@intel.com>
-Dongwoo Joshua Im <dw.im@samsung.com>
-Dongyu Lin <l2d4y3@gmail.com>
-Douglas F. Turner <doug.turner@gmail.com>
-Dustin Doloff <doloffd@amazon.com>
-Ebrahim Byagowi <ebraminio@gmail.com>
-Eduardo Lima (Etrunko) <eblima@gmail.com>
-Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
-Edward Baker <edward.baker@intel.com>
-Edward Crossman <tedoc2000@gmail.com>
-Eero Häkkinen <eero.hakkinen@intel.com>
-Eero Häkkinen <e.hakkinen@samsung.com>
-Egor Starkov <egor.starkov@samsung.com>
-Ehsan Akhgari <ehsan.akhgari@gmail.com>
-Elan Ruusamäe <elan.ruusamae@gmail.com>
-Eric Ahn <byungwook.ahn@gmail.com>
-Eric Rescorla <ekr@rtfm.com>
-Erik Hill <erikghill@gmail.com>
-Erik Sjölund <erik.sjolund@gmail.com>
-Eriq Augustine <eriq.augustine@gmail.com>
-Etienne Laurin <etienne@atnnn.com>
-Evan Peterson <evan.peterson.ep@gmail.com>
-Evan Wallace <evan.exe@gmail.com>
-Evangelos Foutras <evangelos@foutrelis.com>
-Evgeniy Dushistov <dushistov@gmail.com>
-Evgeny Agafonchikov <evgeny.agafonchikov@akvelon.com>
-Fabien Tassin <fta@sofaraway.org>
-Felix H. Dahlke <fhd@ubercode.de>
-Fernando Jiménez Moreno <ferjmoreno@gmail.com>
-Finbar Crago <finbar.crago@gmail.com>
-François Beaufort <beaufort.francois@gmail.com>
-Francois Kritzinger <francoisk777@gmail.com>
-Francois Rauch <leopardb@gmail.com>
-Frankie Dintino <fdintino@theatlantic.com>
-Franklin Ta <fta2012@gmail.com>
-Frédéric Jacob <frederic.jacob.78@gmail.com>
-Frédéric Wang <fred.wang@free.fr>
-Gaetano Mendola <mendola@gmail.com>
-Gajendra N <gajendra.n@samsung.com>
-Gajendra Singh <wxjg68@motorola.com>
-Gao Chun <chun.gao@intel.com>
-Gao Chun <gaochun.dev@gmail.com>
-George Joseph <kottackal.george@gmail.com>
-George Liaskos <geo.liaskos@gmail.com>
-Georgy Buranov <gburanov@gmail.com>
-Gergely Nagy <ngg@ngg.hu>
-Gideon Pyzer <gjpyzer@gmail.com>
-Gitanshu Mehndiratta <g.mehndiratt@samsung.com>
-Giuseppe Iuculano <giuseppe@iuculano.it>
-Glenn Adams <glenn@chromium.org>
-Gnanasekar Somanathan <gnanasekar.s@samsung.com>
-Gordana Cmiljanovic <gordana.cmiljanovic@imgtec.com>
-Goutham Jagannatha <wrm364@motorola.com>
-Graham Yoakum <gyoakum@skobalt.com>
-Gregory Davis <gpdavis.chromium@gmail.com>
-Greg Visser <gregvis@gmail.com>
-Grzegorz Czajkowski <g.czajkowski@samsung.com>
-Guangzhen Li <guangzhen.li@intel.com>
-Gurpreet Kaur <k.gurpreet@samsung.com>
-Gustav Tiger <gustav.tiger@sonymobile.com>
-Gyuyoung Kim <gyuyoung.kim@navercorp.com>
-Gzob Qq <gzobqq@gmail.com>
-Habib Virji <habib.virji@samsung.com>
-Haeun Kim <haeungun@gmail.com>
-Haitao Feng <haitao.feng@intel.com>
-Halley Zhao <halley.zhao@intel.com>
-Halton Huo <halton.huo@intel.com>
-Hans Hillen <hans.hillen@gmail.com>
-Haojian Wu <hokein.wu@gmail.com>
-Hari Singh <hari.singh1@samsung.com>
-Harpreet Singh Khurana <harpreet.sk@samsung.com>
-Harshikesh Kumar <harshikeshnobug@gmail.com>
-Hautio Kari <khautio@gmail.com>
-Heejin R. Chung <heejin.r.chung@samsung.com>
-Heeyoun Lee <heeyoun.lee@samsung.com>
-Himanshu Joshi <h.joshi@samsung.com>
-Holger Kraus <kraush@amazon.com>
-Hong Zheng <hong.zheng@intel.com>
-Hongbo Min <hongbo.min@intel.com>
-Horia Olaru <horia.olaru@gmail.com>
-Horia Olaru <olaru@adobe.com>
-Hosung You <hosung.you@samsung.com>
-Huapeng Li <huapengl@amazon.com>
-Huayong Xu <huayong.xu@samsung.com>
-Hugo Holgersson <hugo.holgersson@sonymobile.com>
-Huiwon Jo <jhwon0415@gmail.com>
-Hwanseung Lee <hs1217.lee@gmail.com>
-Hwanseung Lee <hs1217.lee@samsung.com>
-Hyunjune Kim <hyunjune.kim@samsung.com>
-Hyunki Baik <hyunki.baik@samsung.com>
-Hyungchan Kim <inlinechan@gmail.com>
-Hyungwook Lee <withlhw@gmail.com>
-Hyungwook Lee <hyungwook.lee@navercorp.com>
-Ian Cullinan <cullinan@amazon.com>
-Ian Scott <ian.scott@arteris.com>
-Ibrar Ahmed <ibrar.ahmad@gmail.com>
-Ilia K <ki.stfu@gmail.com>
-Ilya Konstantinov <ilya.konstantinov@gmail.com>
-Ion Rosca <rosca@adobe.com>
-Isaac Reilly <reillyi@amazon.com>
-Ivan Sham <ivansham@amazon.com>
-J. Ryan Stinnett <jryans@chromium.org>
-Jack Bates <jack@nottheoilrig.com>
-Jacob Mandelson <jacob@mandelson.org>
-Jaehun Lim <ljaehun.lim@samsung.com>
-Jaehyun Lee <j-hyun.lee@samsung.com>
-Jaekyeom Kim <btapiz@gmail.com>
-Jaemin Seo <jaemin86.seo@samsung.com>
-Jaeseok Yoon <yjaeseok@gmail.com>
-Jaideep Bajwa <bjaideep@ca.ibm.com>
-Jaime Soriano Pastor <jsorianopastor@gmail.com>
-Jake Helfert <jake@helfert.us>
-Jake Hendy <me@jakehendy.com>
-Jakob Weigert <jakob.j.w@googlemail.com>
-Jakub Machacek <xtreit@gmail.com>
-James Choi <jchoi42@pha.jhu.edu>
-James Vega <vega.james@gmail.com>
-James Wei <james.wei@intel.com>
-James Willcox <jwillcox@litl.com>
-Jan Sauer <jan@jansauer.de>
-Janwar Dinata <j.dinata@gmail.com>
-Jared Shumway <jaredshumway94@gmail.com>
-Jared Sohn <jared.sohn@gmail.com>
-Jared Wein <weinjared@gmail.com>
-Jari Karppanen <jkarp@amazon.com>
-Jay Oster <jay@kodewerx.org>
-Jay Soffian <jaysoffian@gmail.com>
-Jeado Ko <haibane84@gmail.com>
-Jeongeun Kim <je_julie.kim@samsung.com>
-Jeongmin Kim <kimwjdalsl@gmail.com>
-Jeongwoo Park <skeksk91@gmail.com>
-Jeremy Noring <jnoring@hirevue.com>
-Jeremy Spiegel <jeremysspiegel@gmail.com>
-Jeroen Van den Berghe <vandenberghe.jeroen@gmail.com>
-Jesper Storm Bache <jsbache@gmail.com>
-Jesse Miller <jesse@jmiller.biz>
-Jesus Sanchez-Palencia <jesus.sanchez-palencia.fernandez.fil@intel.com>
-Jiadong Zhu <jiadong.zhu@linaro.org>
-Jiajia Qin <jiajia.qin@intel.com>
-Jianjun Zhu <jianjun.zhu@intel.com>
-Jiawei Shao <jiawei.shao@intel.com>
-Jie Chen <jie.a.chen@intel.com>
-Jihoon Chung <jihoon@gmail.com>
-Jihoon Chung <j.c@navercorp.com>
-Jihun Brent Kim <devgrapher@gmail.com>
-Jin Yang <jin.a.yang@intel.com>
-Jincheol Jo <jincheol.jo@navercorp.com>
-Jingwei Liu <kingweiliu@gmail.com>
-Jingyi Wei <wjywbs@gmail.com>
-Jinho Bang <jinho.bang@samsung.com>
-Jinkyu Seong <jinkyu.seong@lge.com>
-Jinwoo Song <jinwoo7.song@samsung.com>
-Jitendra Kumar Sahoo <jitendra.ks@samsung.com>
-Joachim Bauch <mail@joachim-bauch.de>
-Joachim Bauch <jbauch@webrtc.org>
-Joe Knoll <joe.knoll@workday.com>
-Joe Thomas <mhx348@motorola.com>
-Joel Stanley <joel@jms.id.au>
-Johannes Rudolph <johannes.rudolph@googlemail.com>
-John Yani <vanuan@gmail.com>
-John Yoo <nearbyh13@gmail.com>
-Johnson Lin <johnson.lin@intel.com>
-Jonathan Frazer <listedegarde@gmail.com>
-Jonathan Garbee <jonathan@garbee.me>
-Jonathan Hacker <jhacker@arcanefour.com>
-Jongsoo Lee <leejongsoo@gmail.com>
-Joone Hur <joone.hur@intel.com>
-Jorge Villatoro <jorge@tomatocannon.com>
-Joseph Gentle <josephg@gmail.com>
-Josh Triplett <josh@joshtriplett.org>
-Josh Triplett <josh.triplett@intel.com>
-Joshua Lock <joshua.lock@intel.com>
-Joshua Roesslein <jroesslein@gmail.com>
-Josué Ratelle <jorat1346@gmail.com>
-Juhui Lee <juhui24.lee@samsung.com>
-Julien Brianceau <jbriance@cisco.com>
-Julien Isorce <j.isorce@samsung.com>
-Julien Racle <jracle@logitech.com>
-Jun Fang <jun_fang@foxitsoftware.com>
-Jun Jiang <jun.a.jiang@intel.com>
-Junchao Han <junchao.han@intel.com>
-JungJik Lee <jungjik.lee@samsung.com>
-Jungkee Song <jungkee.song@samsung.com>
-Junmin Zhu <junmin.zhu@intel.com>
-Kai Jiang <jiangkai@gmail.com>
-Kai Köhne <kai.koehne@qt.io>
-Kal Conley <kcconley@gmail.com>
-Kalyan Kondapally <kalyan.kondapally@intel.com>
-Kamil Jiwa <kamil.jiwa@gmail.com>
-Kamil Rytarowski <krytarowski@gmail.com>
-Kangil Han <kangil.han@samsung.com>
-Kangyuan Shu <kangyuan.shu@intel.com>
-Kartikey Bhatt <kartikey@amazon.com>
-Kaspar Brand <googlecontrib@velox.ch>
-Kaustubh Atrawalkar <kaustubh.ra@gmail.com>
-Kaustubh Atrawalkar <kaustubh.a@samsung.com>
-Ke He <ke.he@intel.com>
-Keene Pan <keenepan@linpus.com>
-Keith Chen <keitchen@amazon.com>
-Kenneth Rohde Christiansen <kenneth.r.christiansen@intel.com>
-Kenneth Zhou <knthzh@gmail.com>
-Keonho Kim <keonho07.kim@samsung.com>
-Ketan Goyal <ketan.goyal@samsung.com>
-Kevin Lee Helpingstine <sig11@reprehensible.net>
-Kevin M. McCormick <mckev@amazon.com>
-Khasim Syed Mohammed <khasim.mohammed@linaro.org>
-Kihong Kwon <kihong.kwon@samsung.com>
-Kim Christensen <kimworking@gmail.com>
-Kingshuk Jana <kingshuk.j@samsung.com>
-Kirill Bobyrev <kirillbobyrev@gmail.com>
-Kirk Shoop <kirk.shoop@microsoft.com>
-Kihwang Kim <pwangkk@gmail.com>
-Klemen Forstnerič <klemen.forstneric@gmail.com>
-Konrad Dzwinel <kdzwinel@gmail.com>
-Krishna Chaitanya <krish.botta@samsung.com>
-Kristof Kosztyo <kkosztyo.u-szeged@partner.samsung.com>
-Krzysztof Czech <k.czech@samsung.com>
-Krzysztof Wolanski <k.wolanski@samsung.com>
-Kunal Thakar <kunalt@gmail.com>
-Kushal Pisavadia <kushi.p@gmail.com>
-Kwangho Shin <k_h.shin@samsung.com>
-Kyle Nahrgang <kpn24@drexel.edu>
-Kyounga Ra <kyounga.ra@gmail.com>
-Kyungtae Kim <ktf.kim@samsung.com>
-Kyung Yeol Kim <chitacan@gmail.com>
-Laszlo Gombos <l.gombos@samsung.com>
-Laszlo Radanyi <bekkra@gmail.com>
-Lauren Yeun Kim <lauren.yeun.kim@gmail.com>
-Lauri Oherd <lauri.oherd@gmail.com>
-Lavar Askew <open.hyperion@gmail.com>
-Legend Lee <guanxian.li@intel.com>
-Leith Bade <leith@leithalweapon.geek.nz>
-Leo Wolf <jclw@ymail.com>
-Leon Han <leon.han@intel.com>
-Leung Wing Chung <lwchkg@gmail.com>
-Li Yin <li.yin@intel.com>
-Lidwine Genevet <lgenevet@cisco.com>
-Lionel Landwerlin <lionel.g.landwerlin@intel.com>
-Loo Rong Jie <loorongjie@gmail.com>
-Lorenzo Stoakes <lstoakes@gmail.com>
-Lu Guanqun <guanqun.lu@gmail.com>
-Lucie Brozkova <lucinka.brozkova@gmail.com>
-Luiz Von Dentz <luiz.von.dentz@intel.com>
-Luke Inman-Semerau <luke.semerau@gmail.com>
-Luke Zarko <lukezarko@gmail.com>
-Luoxi Pan <l.panpax@gmail.com>
-Maarten Lankhorst <m.b.lankhorst@gmail.com>
-Magnus Danielsson <fuzzac@gmail.com>
-Mahesh Kulkarni <mahesh.kk@samsung.com>
-Mahesh Machavolu <mahesh.ma@samsung.com>
-Maksim Sisov <maksim.sisov@intel.com>
-Malcolm Wang <malcolm.2.wang@gmail.com>
-Manish Chhajer <chhajer.m@samsung.com>
-Manojkumar Bhosale <manojkumar.bhosale@imgtec.com>
-Manuel Braun <thembrown@gmail.com>
-Mao Yujie <maojie0924@gmail.com>
-Mao Yujie <yujie.mao@intel.com>
-Marco Rodrigues <gothicx@gmail.com>
-Mario Pistrich <m.pistrich@gmail.com>
-Mario Sanchez Prada <mario.prada@samsung.com>
-Marcin Wiacek <marcin@mwiacek.com>
-Mariusz Mlynski <marius.mlynski@gmail.com>
-Mark Hahnenberg <mhahnenb@andrew.cmu.edu>
-Mark Seaborn <mrs@mythic-beasts.com>
-Martijn Croonen <martijn@martijnc.be>
-Martin Bednorz <m.s.bednorz@gmail.com>
-Martina Kollarova <martina.kollarova@intel.com>
-Masahiro Yado <yado.masa@gmail.com>
-Masaru Nishida <msr.i386@gmail.com>
-Matej Knopp <matej.knopp@gmail.com>
-Matheus Bratfisch <matheusbrat@gmail.com>
-Mathias Bynens <mathias@qiwi.be>
-Mathieu Meisser <mmeisser@logitech.com>
-Matt Arpidone <mma.public@gmail.com>
-Matt Strum <mstrum@amazon.com>
-Matt Zeunert <matt@mostlystatic.com>
-Matthew Bauer <mjbauer95@gmail.com>
-Matthew Demarest <demarem@amazon.com>
-Matthew Robertson <matthewrobertson03@gmail.com>
-Matthew Turk <matthewturk@gmail.com>
-Matthew Willis <appamatto@gmail.com>
-Matthias Reitinger <reimarvin@gmail.com>
-Matthieu Rigolot <matthieu.rigolot@gmail.com>
-Max Perepelitsyn <pph34r@gmail.com>
-Max Vujovic <mvujovic@adobe.com>
-Mayank Gupta <mayank.g1@samsung.com>
-Mayur Kankanwadi <mayurk.vk@samsung.com>
-Md Sami Uddin <md.sami@samsung.com>
-Michael Cirone <mikecirone@gmail.com>
-Michael Gilbert <floppymaster@gmail.com>
-Michael Lopez <lopes92290@gmail.com>
-Michael Morrison <codebythepound@gmail.com>
-Michael Schechter <mike.schechter@gmail.com>
-Michaël Zasso <mic.besace@gmail.com>
-Michael Zugelder <michael@zugelder.org>
-Mihai Maerean <mmaerean@adobe.com>
-Mihai Tica <mihai.o.tica@gmail.com>
-Mihai Tica <mitica@adobe.com>
-Mike Tilburg <mtilburg@adobe.com>
-Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-Milko Leporis <milko.leporis@imgtec.com>
-Milton Chiang <milton.chiang@mediatek.com>
-Minggang Wang <minggang.wang@intel.com>
-Mingmin Xie <melvinxie@gmail.com>
-Minsoo Max Koo <msu.koo@samsung.com>
-Miran Karic <miran.karic@imgtec.com>
-Mirela Budaes <mbudaes@gmail.com>
-Mirela Budaes <mbudaes@adobe.com>
-Mitchell Rosen <mitchellwrosen@chromium.org>
-Miyoung Shin <myid.shin@samsung.com>
-Mohamed I. Hammad <ibraaaa@gmail.com>
-Mohamed Mansour <m0.interactive@gmail.com>
-Mohammed Wajahat Ali Siddiqui <wajahat.s@samsung.com>
-Mohan Reddy <mohan.reddy@samsung.com>
-Mohit Bhalla <bhallam@amazon.com>
-Mrunal Kapade <mrunal.kapade@intel.com>
-Myles C. Maxfield <mymax@amazon.com>
-Nagarjuna Atluri <nagarjuna.a@samsung.com>
-Naiem Shaik <naiem.shaik@gmail.com>
-Naoki Takano <takano.naoki@gmail.com>
-Naveen Bobbili <naveenbobbili@motorola.com>
-Naveen Bobbili <qghc36@motorola.com>
-Naveen Kumar Devaraj <devarajn@amazon.com>
-Naveen Kumar S G <naveensg@samsung.com>
-Nayan Kumar K <qtc746@motorola.com>
-Nedeljko Babic <nedeljko.babic@imgtec.com>
-Nikhil Bansal <n.bansal@samsung.com>
-Nikita Ofitserov <himikof@gmail.com>
-Niklas Schulze <me@jns.io>
-Nils Schneider <nils@nilsschneider.net>
-Nils Schneider <nils.schneider@gmail.com>
-Ningxin Hu <ningxin.hu@intel.com>
-Nitish Mehrotra <nitish.m@samsung.com>
-Noj Vek <nojvek@gmail.com>
-Nolan Cao <nolan.robin.cao@gmail.com>
-Oleksii Kadurin <ovkadurin@gmail.com>
-Omar Sandoval <osandov@osandov.com>
-Pan Deng <pan.deng@intel.com>
-Parag Radke <nrqv63@motorola.com>
-Paritosh Kumar <paritosh.in@samsung.com>
-Patrasciuc Sorin Cristian <cristian.patrasciuc@gmail.com>
-Patrick Chan <chanpatorikku@gmail.com>
-Patrick Kettner <patrickkettner@gmail.com>
-Patrick Riordan <patrickriordan177@gmail.com>
-Patrik Ackland <patrikackland@gmail.com>
-Paul Adolph <padolph@netflix.com>
-Paul Kehrer <paul.l.kehrer@gmail.com>
-Paul Lind <paul.lind@imgtec.com>
-Paul Nettleship <pnettleship@gmail.com>
-Paul Robinson <paulrobinson85@googlemail.com>
-Paul Roskell <blurrech@gmail.com>
-Paul Sapunaru <paul.sapunaru@intel.com>
-Paul Wicks <pwicks86@gmail.com>
-Pavan Kumar Emani <pavan.e@samsung.com>
-Pavel Ivanov <paivanof@gmail.com>
-Paweł Hajdan jr <phajdan.jr@gmail.com>
-Pawel Forysiuk <p.forysiuk@samsung.com>
-Peng Jiang <leiyi.jp@gmail.com>
-Peng Xinchao <pxinchao@gmail.com>
-Petar Jovanovic <petarj@mips.com>
-Peter Beverloo <peter@chromium.org>
-Peter Bright <drpizza@quiscalusmexicanus.org>
-Peter Brophy <pbrophy@adobe.com>
-Peter Collingbourne <peter@pcc.me.uk>
-Peter Gal <pgal.u-szeged@partner.samsung.com>
-Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
-Philipp Hancke <fippo@andyet.net>
-Philipp Hancke <philipp.hancke@googlemail.com>
-Philippe Beauchamp <philippe.beauchamp@gmail.com>
-Philippe Beaudoin <philippe.beaudoin@gmail.com>
-Pierre-Antoine LaFayette <pierre.lafayette@gmail.com>
-Po-Chun Chang <pochang0403@gmail.com>
-Pramod Begur Srinath <pramod.bs@samsung.com>
-Pranay Kumar <pranay.kumar@samsung.com>
-Prashant Hiremath <prashhir@cisco.com>
-Prashant Nevase <prashant.n@samsung.com>
-Prashant Patil <prashant.patil@imgtec.com>
-Praveen Akkiraju <praveen.anp@samsung.com>
-Preeti Nayak <preeti.nayak@samsung.com>
-Pritam Nikam <pritam.nikam@samsung.com>
-Puttaraju R <puttaraju.r@samsung.com>
-Qiankun Miao <qiankun.miao@intel.com>
-Qing Zhang <qing.zhang@intel.com>
-Qi Yang <qi1988.yang@samsung.com>
-Radu Stavila <stavila@adobe.com>
-Radu Velea <radu.velea@intel.com>
-Rafael Antognolli <rafael.antognolli@intel.com>
-Raghavendra Ghatage <r.ghatage@samsung.com>
-Rahul Gupta <rahul.g@samsung.com>
-Raman Tenneti <raman.tenneti@gmail.com>
-Ramkumar Gokarnesan <ramkumar.gokarnesan@gmail.com>
-Ramkumar Ramachandra <artagnon@gmail.com>
-Ramya Vadlamudi <ramya.v@samsung.com>
-Randy Posynick <randy.posynick@gmail.com>
-Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-Raveendra Karu <r.karu@samsung.com>
-Ravi Phaneendra Kasibhatla <r.kasibhatla@samsung.com>
-Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com>
-Renata Hodovan <rhodovan.u-szeged@partner.samsung.com>
-Rene Bolldorf <rb@radix.io>
-Rene Ladan <r.c.ladan@gmail.com>
-Rijubrata Bhaumik <rijubrata.bhaumik@intel.com>
-Riku Voipio <riku.voipio@linaro.org>
-Rob Buis <rob.buis@samsung.com>
-Rob Wu <rob@robwu.nl>
-Robert Bear Travis <bear.travis@gmail.com>
-Robert Bear Travis <betravis@adobe.com>
-Robert Bradford <robert.bradford@intel.com>
-Robert Goldberg <goldberg@adobe.com>
-Robert Hogan <robhogan@gmail.com>
-Robert Nagy <robert.nagy@gmail.com>
-Robert Sesek <rsesek@bluestatic.org>
-Roland Takacs <rtakacs.u-szeged@partner.samsung.com>
-Rosen Dash <nqk836@motorola.com>
-Rosen Dash <rosen.dash@gmail.com>
-ruben <chromium@hybridsource.org>
-Ruben Terrazas <rubentopo@gmail.com>
-Rufus Hamade <rufus.hamade@imgtec.com>
-Ruiyi Luo <luoruiyi2008@gmail.com>
-Ryan Ackley <ryanackley@gmail.com>
-Ryan Norton <rnorton10@gmail.com>
-Ryan Sleevi <ryan-chromium-dev@sleevi.com>
-Ryan Yoakum <ryoakum@skobalt.com>
-Ryuan Choi <ryuan.choi@samsung.com>
-Saikrishna Arcot <saiarcot895@gmail.com>
-Salvatore Iovene <salvatore.iovene@intel.com>
-Sam Larison <qufighter@gmail.com>
-Sam McDonald <sam@sammcd.com>
-Sanggi Hong <sanggi.hong11@gmail.com>
-Sanghee Lee <sanghee.lee1992@gmail.com>
-Sanghyun Park <sh919.park@samsung.com>
-Sanghyup Lee <sh53.lee@samsung.com>
-Sangjoon Je <htamop@gmail.com>
-Sangwoo Ko <sangwoo108@gmail.com>
-Sanjoy Pal <ncj674@motorola.com>
-Sanjoy Pal <sanjoy.pal@samsung.com>
-Sanne Wouda <sanne.wouda@gmail.com>
-Santosh Mahto <samahto@cisco.com>
-Sarath Singapati <s.singapati@gmail.com>
-Sarath Singapati <s.singapati@samsung.com>
-Saravanan KR <sramajay@cisco.com>
-Sathish Kuppuswamy <sathish.kuppuswamy@intel.com>
-Satoshi Matsuzaki <satoshi.matsuzaki@gmail.com>
-Sayan Nayak <sayan.nayak@samsung.com>
-Scott Blomquist <sblom@microsoft.com>
-Scott D Phillips <scott.d.phillips@intel.com>
-Sean Bryant <sean@cyberwang.net>
-Seo Sanghyeon <sanxiyn@gmail.com>
-Seokju Kwon <seokju.kwon@gmail.com>
-SeongTae Jeong <ferendevelop.gl@gmail.com>
-Sergey Kipet <sergey.kipet@gmail.com>
-Sergey Putilin <p.sergey@samsung.com>
-Sergey Shekyan <shekyan@gmail.com>
-Sergio Carlos Morales Angeles <carloschilazo@gmail.com>
-Sergiy Byelozyorov <rryk.ua@gmail.com>
-Seshadri Mahalingam <seshadri.mahalingam@gmail.com>
-Sevan Janiyan <venture37@geeklan.co.uk>
-Shahriar Rostami <shahriar.rostami@gmail.com>
-ShankarGanesh K <blr.bmlab@gmail.com>
-Shanmuga Pandi M <shanmuga.m@samsung.com>
-Shail Singhal <shail.s@samsung.com>
-Shaobo Yan <shaobo.yan@intel.com>
-Shashi Kumar <sk.kumar@samsung.com>
-Sherry Mou <wenjinm@amazon.com>
-Shez Baig <sbaig1@bloomberg.net>
-Shigeki Ohtsu <shigeki.ohtsu@gmail.com>
-Shiliu Wang <aofdwsl@gmail.com>
-Shiliu Wang <shiliu.wang@intel.com>
-Shilpa Shri <shilpa.shri@samsung.com>
-Shivakumar JM <shiva.jm@samsung.com>
-Shouqun Liu <liushouqun@xiaomi.com>
-Shouqun Liu <shouqun.liu@intel.com>
-Shreeram Kushwaha <shreeram.k@samsung.com>
-Shreyas Gopal <shreyas.g@samsung.com>
-Shreyas VA <v.a.shreyas@gmail.com>
-Siba Samal <siba.samal@samsung.com>
-Simon Arlott <simon.arlott@gmail.com>
-Siva Kumar Gunturi <siva.gunturi@samsung.com>
-Sohan Jyoti Ghosh <sohan.jyoti@samsung.com>
-Song YeWen <ffmpeg@gmail.com>
-Sooho Park <sooho1000@gmail.com>
-Soorya R <soorya.r@samsung.com>
-Soren Dreijer <dreijerbit@gmail.com>
-Srirama Chandra Sekhar Mogali <srirama.m@samsung.com>
-Stephen Searles <stephen.searles@gmail.com>
-Steven Pennington <spenn@engr.uvic.ca>
-Steven Roussey <sroussey@gmail.com>
-Subrahmanya Praveen Munukutla <sataya.m@samsung.com>
-Suchit Agrawal <a.suchit@samsung.com>
-Sudarsana Babu Nagineni <sudarsana.nagineni@intel.com>
-Sudarshan Parthasarathy <sudarshan.p@samsung.com>
-Sujae Jo <sujae33.jo@gmail.com>
-Sujith S S <sujiths.s@samsung.com>
-Sungguk Lim <limasdf@gmail.com>
-Sunghoon Kim <shoon.kim@lge.com>
-Sungmann Cho <sungmann.cho@gmail.com>
-Sungmann Cho <sungmann.cho@navercorp.com>
-Sunitha Srivatsa <srivats@amazon.com>
-Suyash Sengar <suyash.s@samsung.com>
-Sunil Ratnu <sunil.ratnu@samsung.com>
-Suvanjan Mukherjee <suvanjanmukherjee@gmail.com>
-Swati Jaiswal <swa.jaiswal@samsung.com>
-Sylvain Zimmer <sylvinus@gmail.com>
-Sylvestre Ledru <sylvestre.ledru@gmail.com>
-Szymon Piechowicz <szymonpiechowicz@o2.pl>
-Taehoon Lee <taylor.hoon@gmail.com>
-Takeshi Kurosawa <taken.spc@gmail.com>
-Tanay Chowdhury <tanay.c@samsung.com>
-Tapu Kumar Ghose <ghose.tapu@gmail.com>
-Taylor Price <trprice@gmail.com>
-Ted Kim <neot0000@gmail.com>
-Ted Vessenes <tedvessenes@gmail.com>
-Teodora Novkovic <teodora.petrovic@gmail.com>
-Thiago Farina <thiago.farina@gmail.com>
-Thiago Marcos P. Santos <thiago.santos@intel.com>
-Thomas Butter <tbutter@gmail.com>
-Thomas Conti <tomc@amazon.com>
-Tiago Vignatti <tiago.vignatti@intel.com>
-Tim Ansell <mithro@mithis.com>
-Tim Niederhausen <tim@rnc-ag.de>
-Timo Reimann <ttr314@googlemail.com>
-Tom Callaway <tcallawa@redhat.com>
-Tom Harwood <tfh@skip.org>
-Torsten Kurbad <google@tk-webart.de>
-Tomas Popela <tomas.popela@gmail.com>
-Trevor Perrin <unsafe@trevp.net>
-U. Artie Eoff <ullysses.a.eoff@intel.com>
-Umar Hansa <umar.hansa@gmail.com>
-Upendra Gowda <upendrag.gowda@gmail.com>
-Vaibhav Agrawal <vaibhav1.a@samsung.com>
-Valentin Ilie <valentin.ilie@intel.com>
-Vamshikrishna Yellenki <vamshi@motorola.com>
-Vani Hegde <vani.hegde@samsung.com>
-Vartul Katiyar <vartul.k@samsung.com>
-Vedran Šajatović <vedran.sajatovic@gmail.com>
-Vernon Tang <vt@foilhead.net>
-Viatcheslav Ostapenko <sl.ostapenko@samsung.com>
-Victor Costan <costan@gmail.com>
-Viet-Trung Luu <viettrungluu@gmail.com>
-Vinay Anantharaman <vinaya@adobe.com>
-Vipul Bhasin <vipul.bhasin@gmail.com>
-Visa Putkinen <v.putkinen@partner.samsung.com>
-Vivek Galatage <vivek.vg@samsung.com>
-Volker Sorge <volker.sorge@gmail.com>
-Waihung Fu <fufranci@amazon.com>
-Wesley Lancel <wesleylancel@gmail.com>
-Wesley Wigham <t-weswig@microsoft.com>
-Wesley Wigham <wwigham@gmail.com>
-Will Hirsch <chromium@willhirsch.co.uk>
-Will Shackleton <w.shackleton@gmail.com>
-William Xie <william.xie@chromium.com>
-William Xie <william.xie@intel.com>
-Xiang Long <xiang.long@intel.com>
-Xiangze Zhang <xiangze.zhang@intel.com>
-Xiaofeng Zhang <xiaofeng.zhang@intel.com>
-Xiaolei Yu <dreifachstein@gmail.com>
-Xiaoyin Liu <xiaoyin.l@outlook.com>
-Xinchao He <hexinchao@gmail.com>
-Xing Zhang <xzhang@adobe.com>
-Xinghua Cao <xinghua.cao@intel.com>
-Xu Samuel <samuel.xu@intel.com>
-Xu Xing <xing.xu@intel.com>
-Xuefei Ren <xrenishere@gmail.com>
-Xun Sun <xun.sun@intel.com>
-Yael Aharon <yael.aharon@intel.com>
-Yair Yogev <progame@chromium.org>
-Yan Wang <yan0422.wang@samsung.com>
-Yang Gu <yang.gu@intel.com>
-Yarin Kaul <yarin.kaul@gmail.com>
-Ye Liu <cbakgly@gmail.com>
-Yi Shen <yi.shen@samsung.com>
-Yi Sun <ratsunny@gmail.com>
-Yizhou Jiang <yizhou.jiang@intel.com>
-Yoav Weiss <yoav@yoav.ws>
-Yoav Zilberberg <yoav.zilberberg@gmail.com>
-Yong Shin <sy3620@gmail.com>
-Yongsheng Zhu <yongsheng.zhu@intel.com>
-Yoonjae Cho <yoonjae.cho92@gmail.com>
-Yoshinori Sano <yoshinori.sano@gmail.com>
-Youngho Seo <hazivoo@gmail.com>
-Youngho Yoo <youngho33.yoo@lge.com>
-YoungKi Hong <simon.hong81@gmail.com>
-Youngmin Yoo <youngmin.yoo@samsung.com>
-Youngsoo Choi <kenshin.choi@samsung.com>
-Youngsun Suh <zard17@gmail.com>
-Yumikiyo Osanai <yumios.art@gmail.com>
-Yunchao He <yunchao.he@intel.com>
-Yuri Gorobets <yuri.gorobets@gmail.com>
-Zeno Albisser <zeno.albisser@digia.com>
-Zhaoze Zhou <zhaoze.zhou@partner.samsung.com>
-Zheng Chuang <zhengchuangscu@gmail.com>
-Zhenyu Liang <zhenyu.liang@intel.com>
-Zhenyu Shan <zhenyu.shan@intel.com>
-Zheda Chen <zheda.chen@intel.com>
-Zhuoyu Qian <zhuoyu.qian@samsung.com>
-Ziran Sun <ziran.sun@samsung.com>
-Zoltan Herczeg <zherczeg.u-szeged@partner.samsung.com>
-Zoltan Kuscsik <zoltan.kuscsik@linaro.org>
-Zsolt Borbely <zsborbely.u-szeged@partner.samsung.com>
-Yongha Lee <yongha78.lee@samsung.com>
-方觉 (Fang Jue) <fangjue23303@gmail.com>
-Yupei Wang <perryuwang@tencent.com>
-Peng Hu <penghu@tencent.com>
-WenSheng He <wensheng.he@samsung.com>
-Raghu Ram Nagaraj <r.nagaraj@samsung.com>
-Chanho Park <parkch98@gmail.com>
-Payal Pandey <payal.pandey@samsung.com>
-Kenneth Strickland <ken.strickland@gmail.com>
-Olli Raula (Old name Olli Syrjälä) <olli.raula@intel.com>
-Vishal Bhatnagar <vishal.b@samsung.com>
-Yunsik Jang <yunsik.jang@lge.com>
-Siddharth Bagai <b.siddharth@samsung.com>
-Andrei Borza <andrei.borza@gmail.com>
-anatoly techtonik <techtonik@gmail.com>
-Aleksandar Stojiljkovic <aleksandar.stojiljkovic@intel.com>
-Marc des Garets <marc.desgarets@googlemail.com>
-Siddharth Shankar <funkysidd@gmail.com>
-Eden Wang <nedenwang@tencent.com>
-Cathie Chen <cathiechen@tencent.com>
-Kyle Plumadore <kyle.plumadore@amd.com>
-Sunchang Li <johnstonli@tencent.com>
-Yeol Park <peary2@gmail.com>
-Debug Wang <debugwang@tencent.com>
-Zeqin Chen <talonchen@tencent.com>
-Yong Wang <ccyongwang@tencent.com>
-
-BlackBerry Limited <*@blackberry.com>
-Code Aurora Forum <*@codeaurora.org>
-Comodo CA Limited
-Endless Mobile, Inc. <*@endlessm.com>
-Google Inc. <*@google.com>
-Hewlett-Packard Development Company, L.P. <*@hp.com>
-Igalia S.L. <*@igalia.com>
-NVIDIA Corporation <*@nvidia.com>
-Neverware Inc. <*@neverware.com>
-Opera Software ASA <*@opera.com>
-Spotify AB <*@spotify.com>
-TeamSpeak Systems GmbH <*@teamspeak.com>
-The Chromium Authors <*@chromium.org>
-The MathWorks, Inc. <binod.pant@mathworks.com>
-Torchmobile Inc.
-Venture 3 Systems LLC <*@venture3systems.com>
-Yandex LLC <*@yandex-team.ru>
-ARM Holdings <*@arm.com>
-Macadamian <*@macadamian.com>
-IBM Inc. <*@*.ibm.com>
-Akamai Inc. <*@akamai.com>
diff --git a/BUILD.gn b/BUILD.gn
deleted file mode 100644
index d783ebe..0000000
--- a/BUILD.gn
+++ /dev/null
@@ -1,1102 +0,0 @@
-# Copyright (c) 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This is the root build file for GN. GN will start processing by loading this
-# file, and recursively load all dependencies until all dependencies are either
-# resolved or known not to exist (which will cause the build to fail). So if
-# you add a new build file, there must be some path of dependencies from this
-# file to your new one or GN won't know about it.
-
-import("//build/config/compiler/compiler.gni")
-import("//build/config/features.gni")
-import("//build/config/sanitizers/sanitizers.gni")
-import("//build/config/ui.gni")
-import("//extensions/features/features.gni")
-import("//media/media_options.gni")
-import("//remoting/remoting_enable.gni")
-import("//third_party/openh264/openh264_args.gni")
-import("//tools/ipc_fuzzer/ipc_fuzzer.gni")
-import("//ui/ozone/ozone.gni")
-import("//v8/gni/v8.gni")
-import("//v8/snapshot_toolchain.gni")
-
-if (is_android) {
-  import("//build/config/android/config.gni")
-}
-
-declare_args() {
-  # A list of extra dependencies to add to the root target. This allows a
-  # checkout to add additional targets without explicitly changing any checked-
-  # in files.
-  root_extra_deps = []
-}
-
-if (is_official_build) {
-  # An official (maximally optimized!) component (optimized for build times)
-  # build doesn't make sense and usually doesn't work.
-  assert(!is_component_build)
-}
-
-# This file defines the following five main targets:
-#
-# "both_gn_and_gyp" should list every root target (target that nothing else
-# depends on) built by GN that is also built in the GYP build.
-#
-# "gn_all" should (transitively) cause everything to be built; if you run
-# 'ninja gn_all' and then 'ninja all', the second build should do no work.
-#
-# "gn_only" should list every root target that is *not* intended to be built in
-# a GYP build. Because GN has different rules for deciding what an 'all' build
-# is, this may end up including targets that are actually defined in a GYP
-# build but not dependencies of GYP's "all" (and so not actually built).
-#
-# "gn_visibility": targets that are normally not visible to top-level targets,
-# but are built anyway by "all". Since we don't want any such targets, we have
-# this placeholder to make sure hidden targets that aren't otherwise depended
-# on yet are accounted for.
-#
-# "All" is an alias for "gn_all". It exists for bot compatibility w/ GYP for
-# the iOS bots and the official builders, but should not be generally used
-# during the GYP->GN migration.  We cannot guarantee that GN's "All" builds the
-# same set of targets as GYP's "All" does, because GYP's "All" supports
-# wildcards.
-#
-# Lastly, none of these targets are guaranteed to be the same as what ninja
-# will build with "all". For more on how "all" works and the differences in how
-# GYP and GN determine "all", see crbug.com/503241.
-#
-# TODO(GYP_GONE): crbug.com/481694. Make sure that the above is true and there
-# are scripts run on the bots that enforce this. Once the GYP migration is
-# over, we can collapse all of these targets as desired.
-
-group("gn_all") {
-  testonly = true
-
-  deps = [
-    ":both_gn_and_gyp",
-    ":gn_only",
-    ":gn_visibility",
-  ]
-
-  if (!is_ios) {
-    deps += [ "//v8:gn_all" ]
-  }
-}
-
-# TODO(GYP_GONE): This target exists for compatibility with GYP, specifically
-# for the iOS bots and the official builders.
-group("All") {
-  testonly = true
-
-  deps = [
-    ":gn_all",
-  ]
-}
-
-# TODO(GYP_GONE): This target exists for compatibility with GYP for the
-# builders that specify targets in the recipes directly.
-# Ideally it should not exist, and the builders should be specifying
-# more specific targets (or 'All') via the source-side
-# //testing/buildbot/*.json files. We should simply delete this target
-# and update any recipes that are using it.
-group("chromium_builder_tests") {
-  testonly = true
-  deps = []
-}
-
-# TODO(GYP_GONE): Figure out if we really need this target or if there's
-# some better way to specify things.
-if (is_win) {
-  group("chrome_official_builder_no_unittests") {
-    deps = [
-      "//base/win:eventlog_provider",
-      "//chrome/installer/gcapi",
-      "//chrome/installer/mini_installer",
-      "//cloud_print",
-      "//cloud_print/virtual_driver/win/port_monitor:copy_gcp_portmon_binaries",
-      "//components/policy:pack_policy_templates",
-      "//courgette",
-      "//courgette:copy_courgette_binaries",
-      "//remoting/webapp",
-    ]
-
-    if (target_cpu == "x86") {
-      if (is_clang) {
-        deps += [ "//courgette(//build/toolchain/win:clang_x64)" ]
-      } else {
-        deps += [ "//courgette(//build/toolchain/win:x64)" ]
-      }
-    }
-    if (is_chrome_branded) {
-      deps += [ "//remoting/host:remoting_host_installation" ]
-    }
-  }
-
-  group("chrome_official_builder") {
-    testonly = true
-
-    deps = [
-      ":chrome_official_builder_no_unittests",
-      "//base:base_unittests",
-      "//chrome/test:browser_tests",
-      "//chrome/test:sync_integration_tests",
-      "//ipc:ipc_tests",
-      "//media:media_unittests",
-      "//media/midi:midi_unittests",
-      "//net:net_unittests",
-      "//printing:printing_unittests",
-      "//sql:sql_unittests",
-      "//ui/base:ui_base_unittests",
-      "//ui/gfx:gfx_unittests",
-      "//ui/touch_selection:ui_touch_selection_unittests",
-      "//ui/views:views_unittests",
-      "//url:url_unittests",
-    ]
-  }
-
-  group("All_syzygy") {
-    if (is_syzyasan) {
-      deps = [
-        "//chrome/installer/mini_installer:mini_installer",
-        "//chrome/installer/mini_installer:mini_installer_syzygy",
-      ]
-    }
-  }
-
-  if (is_syzyasan) {
-    group("chrome_official_syzyasan_builder") {
-      deps = [
-        ":All_syzygy",
-        ":chrome_official_builder_no_unittests",
-      ]
-    }
-  }
-}
-
-if (is_chromeos) {
-  group("chromiumos_preflight") {
-    testonly = true
-    deps = [
-      "//breakpad:minidump_stackwalk($host_toolchain)",
-      "//chrome",
-      "//chrome/test/chromedriver",
-      "//media:media_unittests",
-      "//media/gpu:video_decode_accelerator_unittest",
-      "//media/gpu:video_encode_accelerator_unittest",
-      "//ppapi/examples/video_decode",
-      "//sandbox/linux:chrome_sandbox",
-      "//sandbox/linux:sandbox_linux_unittests",
-
-      # Blocked on https://github.com/catapult-project/catapult/issues/2297
-      #"//third_party/catapult/telemetry:bitmaptools",
-      "//tools/perf/clear_system_cache",
-    ]
-  }
-}
-
-# The "both_gn_and_gyp" target should reflect every target that is built
-# in both the GN and GYP builds, and ideally it should match the
-# "both_gn_and_gyp" target in build/gn_migration.gypi line-for-line.
-group("both_gn_and_gyp") {
-  testonly = true
-  deps = [
-    "//base:base_unittests",
-    "//chrome/installer",
-    "//components:components_unittests",
-    "//net:net_unittests",
-    "//skia:skia_unittests",
-    "//sql:sql_unittests",
-    "//tools/ipc_fuzzer:ipc_fuzzer_all",
-    "//ui/base:ui_base_unittests",
-    "//ui/gfx:gfx_unittests",
-    "//url:url_unittests",
-  ]
-
-  if (!is_android && !is_chromecast) {
-    deps += [
-      "//crypto:crypto_unittests",
-      "//google_apis/gcm:gcm_unit_tests",
-    ]
-  }
-
-  if (!is_ios && !is_android && !is_chromecast) {
-    deps += [
-      "//chrome",
-      "//chrome/test:browser_tests",
-      "//chrome/test:interactive_ui_tests",
-      "//chrome/test:sync_integration_tests",
-      "//chrome/test/chromedriver:chromedriver_unittests",
-      "//components/sync/tools:sync_client",
-      "//components/sync/tools:sync_listen_notifications",
-      "//extensions:extensions_browsertests",
-      "//extensions:extensions_unittests",
-      "//gpu/gles2_conform_support:gles2_conform_test",
-      "//gpu/khronos_glcts_support:khronos_glcts_test",
-      "//jingle:jingle_unittests",
-      "//net:hpack_example_generator",
-      "//ppapi:ppapi_unittests",
-      "//ppapi/examples/2d",
-      "//ppapi/examples/audio",
-      "//ppapi/examples/audio_input",
-      "//ppapi/examples/compositor",
-      "//ppapi/examples/crxfs",
-      "//ppapi/examples/enumerate_devices",
-      "//ppapi/examples/file_chooser",
-      "//ppapi/examples/flash_topmost",
-      "//ppapi/examples/font",
-      "//ppapi/examples/gamepad",
-      "//ppapi/examples/gles2",
-      "//ppapi/examples/gles2_spinning_cube",
-      "//ppapi/examples/ime",
-      "//ppapi/examples/input",
-      "//ppapi/examples/media_stream_audio",
-      "//ppapi/examples/media_stream_video",
-      "//ppapi/examples/mouse_cursor",
-      "//ppapi/examples/mouse_lock",
-      "//ppapi/examples/printing",
-      "//ppapi/examples/scaling",
-      "//ppapi/examples/scripting",
-      "//ppapi/examples/stub",
-      "//ppapi/examples/threading",
-      "//ppapi/examples/url_loader",
-      "//ppapi/examples/video_capture",
-      "//ppapi/examples/video_decode",
-      "//ppapi/examples/video_effects",
-      "//ppapi/examples/video_encode",
-      "//printing:printing_unittests",
-      "//third_party/cacheinvalidation:cacheinvalidation_unittests",
-      "//third_party/pdfium/samples:pdfium_test",
-      "//third_party/webrtc/tools:frame_analyzer",
-      "//tools/battor_agent",
-      "//tools/battor_agent:battor_agent_unittests",
-      "//tools/gn",
-      "//tools/gn:gn_unittests",
-      "//tools/perf/clear_system_cache",
-      "//ui/accessibility:accessibility_unittests",
-    ]
-  }
-
-  if (!is_ios) {
-    # TODO(GYP): Figure out which of these should actually build on iOS,
-    # and whether there should be other targets that are iOS-only and missing.
-    deps += [
-      "//cc:cc_unittests",
-      "//chrome/test:telemetry_perf_unittests",
-      "//chrome/test:unit_tests",
-      "//components:components_browsertests",
-      "//components/policy:policy_templates",
-      "//content/shell:content_shell",
-      "//content/test:content_browsertests",
-      "//content/test:content_perftests",
-      "//content/test:content_unittests",
-      "//device:device_unittests",
-      "//gpu:gpu_unittests",
-      "//gpu/ipc/service:gpu_ipc_service_unittests",
-      "//ipc:ipc_tests",
-      "//media:media_unittests",
-      "//media/capture:capture_unittests",
-      "//media/cast:cast_unittests",
-      "//media/midi:midi_unittests",
-      "//mojo",
-      "//mojo/common:mojo_common_unittests",
-      "//mojo/edk/system:mojo_system_unittests",
-      "//mojo/edk/test:mojo_public_bindings_unittests",
-      "//mojo/edk/test:mojo_public_system_unittests",
-      "//net:net_perftests",
-      "//services/service_manager/public/cpp",
-      "//storage//browser:storage_unittests",
-      "//third_party/WebKit/Source/platform:blink_platform_unittests",
-      "//third_party/WebKit/Source/platform/heap:blink_heap_unittests",
-      "//third_party/WebKit/Source/web:webkit_unit_tests",
-      "//third_party/WebKit/Source/wtf:wtf_unittests",
-      "//third_party/angle/src/tests:angle_end2end_tests",
-      "//third_party/angle/src/tests:angle_unittests",
-      "//third_party/angle/src/tests:angle_white_box_tests",
-      "//third_party/catapult/telemetry:bitmaptools($host_toolchain)",
-      "//third_party/smhasher:pmurhash",
-      "//tools/imagediff($host_toolchain)",
-      "//ui/display:display_unittests",
-      "//ui/events:events_unittests",
-      "//ui/gl:gl_unittests",
-      "//ui/touch_selection:ui_touch_selection_unittests",
-      "//url/ipc:url_ipc_unittests",
-    ]
-  } else {
-    deps += [ "//ios:all" ]
-  }
-
-  deps += root_extra_deps
-
-  if (enable_extensions) {
-    deps += [ "//extensions/shell:app_shell_unittests" ]
-  }
-
-  if (enable_media_router) {
-    deps += [ "//chrome/browser/media/router" ]
-  }
-
-  if (enable_remoting) {
-    deps += [ "//remoting:remoting_all" ]
-  }
-
-  if (toolkit_views) {
-    deps += [
-      "//ui/views:views_unittests",
-      "//ui/views/examples:views_examples_exe",
-      "//ui/views/examples:views_examples_with_content_exe",
-    ]
-  }
-
-  if (use_ash) {
-    deps += [
-      "//ash:ash_content_unittests",
-      "//ash:ash_shell_with_content",
-      "//ash:ash_unittests",
-    ]
-  }
-
-  if (use_aura) {
-    deps += [
-      "//ui/aura:aura_unittests",
-      "//ui/aura:demo",
-      "//ui/wm:wm_unittests",
-    ]
-  }
-
-  if (use_ozone) {
-    deps += [
-      "//ui/ozone",
-      "//ui/ozone:ozone_unittests",
-      "//ui/ozone/gl:ozone_gl_unittests",
-    ]
-  }
-
-  if (use_x11 || ozone_platform_x11) {
-    deps += [ "//tools/xdisplaycheck" ]
-  }
-
-  if (is_win) {
-    deps += [
-      "//chrome/installer/gcapi",
-      "//chrome/tools/build/win/syzygy:chrome_dll_syzygy",
-    ]
-  }
-
-  if (is_android) {
-    deps += [
-      "//base:base_junit_tests",
-      "//base/android/linker:chromium_android_linker",
-      "//build/android/gyp/test:hello_world",
-      "//chrome/android/webapk/shell_apk:webapk",
-      "//components/invalidation/impl:components_invalidation_impl_junit_tests",
-      "//components/policy/android:components_policy_junit_tests",
-      "//content/public/android:content_junit_tests",
-      "//content/shell/android:content_shell_apk",
-      "//media/gpu:video_decode_accelerator_unittest",
-      "//net/android:net_junit_tests",
-      "//testing/android/junit:junit_unit_tests",
-      "//third_party/android_async_task:android_async_task_java",
-      "//third_party/errorprone:chromium_errorprone",
-      "//third_party/smhasher:murmurhash3",
-      "//tools/android:android_tools",
-      "//tools/android:memconsumer",
-      "//tools/android:push_apps_to_background",
-      "//tools/android/audio_focus_grabber:audio_focus_grabber_apk",
-      "//tools/android/customtabs_benchmark:customtabs_benchmark_apk",
-      "//tools/android/kerberos/SpnegoAuthenticator:spnego_authenticator_apk",
-      "//tools/cygprofile:cygprofile_unittests",
-      "//ui/android:ui_junit_tests",
-    ]
-    deps -= [
-      "//net:net_perftests",
-      "//url:url_unittests",
-    ]
-
-    if (!is_component_build) {
-      deps += [
-        "//components/cronet/android:cronet_package",
-        "//components/cronet/android:cronet_perf_test_apk",
-        "//components/cronet/android:cronet_sample_apk",
-        "//components/cronet/android:cronet_sample_test_apk",
-        "//components/cronet/android:cronet_test_apk",
-        "//components/cronet/android:cronet_test_instrumentation_apk",
-        "//components/cronet/android:cronet_unittests",
-      ]
-    }
-
-    if (!is_chromecast) {
-      deps += [
-        "//android_webview",
-        "//android_webview/test",
-        "//android_webview/tools/automated_ui_tests:webview_ui_test_app",
-        "//android_webview/tools/system_webview_shell",
-        "//chrome/android:chrome_junit_tests",
-        "//chrome/android:chrome_public_apk",
-        "//chrome/android:chrome_public_test_apk",
-        "//chrome/android:chrome_sync_shell_test_apk",
-        "//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_shell_apk",
-        "//content/shell/android:content_shell_test_apk",
-        "//third_party/custom_tabs_client:custom_tabs_client_example_apk",
-      ]
-    }
-
-    if (target_cpu != "x64") {
-      deps += [
-        "//content/shell/android:chromium_linker_test_apk",
-        "//third_party/android_platform:android_relocation_packer_unittests($host_toolchain)",
-      ]
-    }
-
-    if (has_chrome_android_internal) {
-      deps += [ "//clank" ]
-    }
-  }
-
-  if (is_linux || is_android) {
-    deps += [
-      "//breakpad:breakpad_unittests",
-      "//breakpad:core-2-minidump",
-      "//breakpad:generate_test_dump",
-      "//breakpad:minidump-2-core",
-    ]
-  }
-
-  if (is_chromeos) {
-    deps += [
-      "//chromeos:chromeos_unittests",
-      "//chromeos/components:chromeos_components_unittests",
-      "//components/session_manager/core",
-      "//ui/app_list:app_list_unittests",
-      "//ui/app_list/presenter:app_list_presenter_unittests",
-      "//ui/arc:ui_arc_unittests",
-      "//ui/chromeos:ui_chromeos_unittests",
-    ]
-  }
-
-  if (is_chromeos || is_mac || is_win) {
-    deps += [
-      "//rlz:rlz_id",
-      "//rlz:rlz_lib",
-      "//rlz:rlz_unittests",
-    ]
-  }
-
-  if (is_linux) {
-    # The following are definitely linux-only.
-    deps += [
-      "//chrome:manpage",
-      "//chrome:xdg_mime",
-      "//net:disk_cache_memory_test",
-      "//net:quic_client",
-      "//net:quic_server",
-      "//sandbox/linux:chrome_sandbox",
-      "//sandbox/linux:sandbox_linux_unittests",
-    ]
-
-    if (use_dbus) {
-      deps += [
-        "//dbus:dbus_test_server",
-        "//dbus:dbus_unittests",
-      ]
-    }
-
-    if (is_chrome_branded && is_official_build) {
-      # TODO(dpranke): add the linux_dump_symbols flag?
-      deps += [ "//chrome:linux_symbols" ]
-    }
-  }
-
-  if (is_ios || is_win || (is_linux && !is_chromeos)) {
-    deps += [
-      "//base:base_i18n_perftests",
-      "//base:base_perftests",
-      "//google_apis:google_apis_unittests",
-    ]
-  }
-
-  if ((is_win || is_mac || is_linux) &&
-      (target_cpu == "x86" || target_cpu == "x64")) {
-    deps += [ "//third_party/swiftshader" ]
-  }
-
-  # TODO(GYP): Figure out which of these should (and can) build
-  # for chromeos/ios.
-  if (!is_chromeos && !is_ios) {
-    deps += [
-      "//base:build_utf8_validator_tables",
-      "//base:check_example",
-      "//cc:cc_perftests",
-      "//cc/blink:cc_blink_unittests",
-      "//components:components_perftests",
-      "//components/sync:run_sync_testserver",
-      "//device:device_unittests",
-      "//gin:gin_shell",
-      "//gin:gin_unittests",
-      "//google_apis/gcm:mcs_probe",
-      "//gpu:gl_tests",
-      "//gpu:gpu_perftests",
-      "//ipc:ipc_perftests",
-      "//media:media_perftests",
-      "//net:dump_cache",
-      "//third_party/libphonenumber:libphonenumber_unittests",
-      "//ui/compositor:compositor_unittests",
-    ]
-
-    if (!is_android) {
-      deps += [
-        "//chrome/test:load_library_perf_tests",
-        "//chrome/test:sync_performance_tests",
-        "//chrome/test/chromedriver:chromedriver",
-        "//chrome/test/chromedriver:chromedriver_tests",
-        "//courgette:courgette",
-        "//courgette:courgette_fuzz",
-        "//courgette:courgette_minimal_tool",
-        "//courgette:courgette_unittests",
-        "//media/cast:generate_barcode_video",
-        "//media/cast:generate_timecode_audio",
-        "//net:crash_cache",
-        "//net:crl_set_dump",
-        "//net:dns_fuzz_stub",
-        "//net:gdig",
-        "//net:get_server_time",
-        "//net:net_watcher",  # TODO(GYP): This should be conditional on use_v8_in_net
-        "//net:run_testserver",
-        "//net:stress_cache",
-        "//net:tld_cleanup",
-        "//ppapi:pepper_hash_for_uma",
-        "//ppapi:ppapi_perftests",
-        "//third_party/leveldatabase:env_chromium_unittests",
-        "//third_party/libaddressinput:libaddressinput_unittests",
-      ]
-    }
-
-    if (enable_extensions) {
-      deps += [ "//extensions/shell:app_shell" ]
-    }
-
-    if (enable_nacl) {
-      deps += [ "//components/nacl/loader:nacl_loader_unittests" ]
-
-      if (is_linux) {
-        # TODO(dpranke): Figure out what platforms should actually have this.
-        deps += [ "//components/nacl/loader:nacl_helper" ]
-
-        if (enable_nacl_nonsfi) {
-          deps += [
-            "//components/nacl/loader:helper_nonsfi",
-            "//components/nacl/loader:nacl_helper_nonsfi_unittests",
-          ]
-        }
-      }
-    }
-
-    if (media_use_ffmpeg && !is_android) {
-      deps += [ "//media:ffmpeg_regression_tests" ]
-    }
-  }
-
-  if (is_android || (is_linux && !is_chromeos)) {
-    deps += [
-      "//breakpad:dump_syms($host_toolchain)",
-      "//breakpad:microdump_stackwalk($host_toolchain)",
-      "//breakpad:minidump_dump($host_toolchain)",
-      "//breakpad:minidump_stackwalk($host_toolchain)",
-      "//components/network_hints/browser",
-      "//content/public/app:browser",
-      "//content/public/app:child",
-      "//mojo/edk/test:mojo_public_system_perftests",
-      "//services/service_manager/public/cpp",
-      "//testing/gmock:gmock_main",
-    ]
-
-    if (!is_android) {
-      deps += [
-        "//chrome/test:chrome_app_unittests",
-        "//gpu/khronos_glcts_support:khronos_glcts_test",
-        "//media/cast:cast_benchmarks",
-        "//media/cast:tap_proxy",
-        "//skia:filter_fuzz_stub",
-        "//skia:image_operations_bench",
-        "//third_party/sqlite:sqlite_shell",
-        "//ui/keyboard:keyboard_unittests",
-        "//ui/message_center:message_center_unittests",
-        "//ui/snapshot:snapshot_unittests",
-      ]
-
-      if (!is_debug && !is_component_build) {
-        deps += [ "//chrome/tools/service_discovery_sniffer" ]
-      }
-    }
-
-    if (use_x11) {
-      if (target_cpu != "arm") {
-        deps += [ "//gpu/tools/compositor_model_bench" ]
-      }
-    }
-  }
-
-  if (is_mac) {
-    deps += [
-      "//breakpad:crash_inspector",
-      "//breakpad:dump_syms",
-
-      # XPC service is in developement and guarded against the
-      # enable_xpc_notifications, in the meantime however we still
-      # need compile coverage in the bots.
-      "//chrome/browser/ui/cocoa/notifications:alert_notification_xpc_service",
-      "//third_party/apple_sample_code",
-      "//third_party/molokocacao",
-    ]
-    deps -= [
-      # Mojo in GN contains some things which are never compiled in GYP on Mac,
-      # so compilation fails on Mac. They need porting.
-      "//mojo",
-    ]
-  }
-
-  if (is_win) {
-    deps += [
-      "//base:pe_image_test",
-      "//chrome/install_static:install_static_unittests",
-      "//chrome/installer/setup:setup_unittests",
-      "//chrome_elf:chrome_elf_unittests",
-      "//chrome_elf:dll_hash_main",
-      "//cloud_print:cloud_print_unittests",
-      "//components/wifi:wifi_test",
-      "//net:quic_client",
-      "//net:quic_server",
-      "//sandbox/win:pocdll",
-      "//sandbox/win:sandbox_poc",
-      "//sandbox/win:sbox_integration_tests",
-      "//sandbox/win:sbox_unittests",
-      "//sandbox/win:sbox_validation_tests",
-      "//testing/gtest:gtest_main",
-      "//third_party/pdfium/samples:pdfium_diff",
-      "//tools/win/chromeexts:chromeexts",
-    ]
-    deps -= [
-      "//crypto:crypto_unittests",  # TODO(GYP)
-      "//net:net_unittests",  # TODO(GYP)
-    ]
-
-    if (!(is_component_build && is_debug && target_cpu == "x86")) {
-      deps +=
-          [ "//chrome/installer/mini_installer:next_version_mini_installer" ]
-    }
-  } else if (!is_android && !is_ios) {
-    deps += [ "//breakpad:symupload($host_toolchain)" ]
-  }
-
-  if (is_chromecast) {
-    deps += [ "//chromecast:cast_shell" ]
-  }
-
-  if (is_mac || is_win) {
-    deps += [
-      "//third_party/crashpad/crashpad/handler:crashpad_handler",
-      "//third_party/crashpad/crashpad/tools:crashpad_database_util",
-    ]
-  }
-
-  if (use_openh264) {
-    deps += [
-      "//third_party/openh264:common",
-      "//third_party/openh264:encoder",
-      "//third_party/openh264:processing",
-    ]
-  }
-}
-
-group("gn_only") {
-  testonly = true
-
-  deps = []
-
-  if (!is_ios) {
-    deps += [
-      "//media/mojo:media_mojo_unittests",
-      "//services:service_unittests",
-    ]
-  }
-
-  if (!is_android && !is_ios) {
-    deps += [ "//content/browser/bluetooth/tools:bluetooth_metrics_hash" ]
-  }
-
-  if (!is_android && !is_ios && !is_chromeos) {
-    deps += [ "//components/proximity_auth:proximity_auth_unittests" ]
-  }
-
-  if (is_win || is_linux) {
-    deps += [
-      "//mash:all",
-      "//media/mojo/services:media_service_unittests",
-      "//mojo",
-      "//services/navigation",
-      "//services/preferences:tests",
-      "//services/ui/demo",
-      "//services/ui/demo:mus_demo_unittests",
-      "//services/ui/public/interfaces:ui_struct_traits_unittests",
-      "//services/ui/ws:tests",
-      "//ui/views/mus:views_mus_interactive_ui_tests",
-      "//ui/views/mus:views_mus_unittests",
-    ]
-
-    # crbug.com/676055: media_service_unittests fails to link under Windows
-    # component builds, due to duplicate symbol definitions.
-    if (is_win && is_component_build) {
-      deps -= [ "//media/mojo/services:media_service_unittests" ]
-    }
-
-    if (use_ozone && is_chromeos) {
-      deps += [ "//services/ui/display:display_service_unittests" ]
-    }
-  }
-
-  if (is_linux && !is_chromeos && !is_chromecast) {
-    # TODO(GYP): Figure out if any of these should be in gn_all
-    # and figure out how cross-platform they are
-    deps += [
-      ":gn_mojo_targets",
-      "//chrome/installer/util:strings",
-      "//chrome/tools/convert_dict",
-      "//components/constrained_window:unit_tests",
-      "//components/filesystem:filesystem_service_unittests",
-      "//components/leveldb:leveldb_service_unittests",
-      "//components/metrics:serialization",
-      "//components/password_manager/content/renderer:browser_tests",
-      "//components/rappor:unit_tests",
-      "//components/sessions:unit_tests",
-      "//media/blink:media_blink_unittests",
-      "//media/cast:udp_proxy",
-      "//storage/browser:dump_file_system",
-      "//third_party/angle:libANGLE",
-      "//third_party/angle:libEGL",
-      "//third_party/angle:libGLESv2",
-      "//third_party/leveldatabase:leveldb_test_targets",
-      "//third_party/libjpeg_turbo:simd",
-      "//third_party/opus:opus_compare",
-      "//third_party/opus:opus_demo",
-      "//third_party/opus:test_opus_api",
-      "//third_party/opus:test_opus_decode",
-      "//third_party/opus:test_opus_encode",
-      "//third_party/opus:test_opus_padding",
-      "//third_party/pdfium/third_party:fx_freetype",
-      "//third_party/webrtc/system_wrappers:field_trial_default",
-      "//third_party/webrtc/system_wrappers:metrics_default",
-      "//ui/display/types",
-      "//ui/shell_dialogs:shell_dialogs_unittests",
-    ]
-
-    if (enable_nacl) {
-      deps += [ "//native_client/src/trusted/debug_stub:gdb_rsp_unittest" ]
-    }
-
-    if (target_cpu == "x86" || target_cpu == "x64") {
-      if (!is_android) {
-        deps += [ "//chrome/test:load_library_perf_tests" ]
-      }
-      deps += [
-        "//native_client/src/trusted/platform_qualify:vcpuid",
-        "//third_party/libjpeg_turbo:simd_asm",
-      ]
-    }
-    if (is_linux && current_toolchain == host_toolchain) {
-      deps += [ "//v8:v8_shell" ]
-    }
-  }
-
-  if (use_ozone) {
-    deps += [ "//ui/ozone/demo" ]
-  }
-
-  if ((is_linux && !is_chromeos && !is_chromecast) || (is_win && use_drfuzz) ||
-      (use_libfuzzer && is_mac)) {
-    deps += [
-      "//testing/libfuzzer/fuzzers",
-      "//testing/libfuzzer/tests:libfuzzer_tests",
-      "//third_party/icu/fuzzers",
-    ]
-
-    # TODO(miu): Remove this dependency once the build configuration in
-    # chrome/browser/BUILD.gn is migrated to chrome/browser/media/BUILD.gn.
-    # This dependency here only exists to allow GN to discover the
-    # fuzzer_test target there.
-    deps += [ "//chrome/browser/media:cast_remoting_connector_fuzzer" ]
-  }
-
-  if (enable_nacl) {
-    deps += [ "//native_client_sdk/src:nacl_core_sdk" ]
-  }
-
-  if (is_android) {
-    deps += [ "//build/android/gyp/test:hello_world" ]
-  }
-
-  if (is_linux && use_ozone) {
-    deps += [
-      "//headless",
-      "//headless:headless_tests",
-    ]
-  }
-}
-
-group("gn_mojo_targets") {
-  testonly = true
-  if (is_linux && !is_chromeos) {
-    # TODO(GYP): Figure out if any of these should be in gn_all
-    # and figure out how cross-platform they are
-    deps = [
-      "//ipc:ipc_tests",
-      "//mojo:tests",
-      "//services:service_unittests",
-    ]
-  }
-}
-
-group("gn_visibility") {
-  deps = [
-    "//build/config/sanitizers:options_sources",
-    # "//third_party/pdfium:pdfium_embeddertests",  # TODO(GYP): visibility?
-    # "//third_party/pdfium:pdfium_unittests",  # TODO(GYP): visibility?
-  ]
-
-  if (!is_ios) {
-    deps += [
-      "//v8:postmortem-metadata",
-      "//v8:v8_snapshot",
-    ]
-  }
-}
-
-if (!is_ios) {
-  # This group includes all of the targets needed to build and test Blink,
-  # including running the layout tests (see below).
-  group("blink_tests") {
-    testonly = true
-
-    deps = [
-      ":webkit_layout_tests",
-      "//third_party/WebKit/public:all_blink",
-    ]
-  }
-
-  # Layout tests runner
-  # third_party/WebKit/Tools/Scripts/run-webkit-tests
-  group("run_webkit_tests") {
-    testonly = true
-    deps = [
-      ":webkit_layout_tests",
-    ]
-  }
-
-  # https://www.chromium.org/developers/testing/webkit-layout-tests
-
-  # The _exparchive at the end of the name indicates to the isolate recipe
-  # that the isolate should be archived separately using the `exparchive`
-  # command, rather than as part of the normal `batcharchive` command.
-  group("webkit_layout_tests_exparchive") {
-    testonly = true
-    deps = [
-      ":webkit_layout_tests",
-    ]
-    data_deps = [
-      ":webkit_layout_tests",
-    ]
-  }
-
-  # This target contains only a small subset of the layout tests,
-  # and is useful for testing with the regular isolate mechanism.
-  # To run the full layout test suite you need to use
-  # :webkit_layout_tests_exparchive, above, instead.
-  group("webkit_layout_tests") {
-    testonly = true
-    data_deps = [
-      "//content/shell:content_shell",
-      "//third_party/WebKit/public:blink_devtools_frontend_resources_files",
-      "//third_party/mesa:osmesa",
-      "//tools/imagediff",
-    ]
-
-    if (is_android) {
-      data_deps += [
-        "//breakpad:breakpad_unittests",
-        "//breakpad:dump_syms",
-        "//breakpad:microdump_stackwalk",
-        "//breakpad:minidump_dump",
-        "//breakpad:minidump_stackwalk",
-        "//breakpad:symupload",
-        "//tools/android/forwarder2",
-      ]
-    }
-
-    if (is_win) {
-      data_deps += [ "//content/shell:content_shell_crash_service" ]
-    }
-
-    if (!is_win && !is_android) {
-      data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
-    }
-
-    if (is_mac) {
-      data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
-    }
-
-    if (is_linux) {
-      data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
-    }
-
-    data = [
-      "$root_build_dir/resources/inspector/",
-      "//testing/scripts/common.py",
-      "//testing/scripts/run_isolated_script_test.py",
-      "//testing/xvfb.py",
-      "//third_party/WebKit/LayoutTests/",
-      "//third_party/WebKit/PerformanceTests/",
-      "//third_party/WebKit/Source/platform/audio/resources/Composite.flac",
-      "//third_party/WebKit/Source/platform/audio/resources/Composite.wav",
-      "//third_party/WebKit/Tools/Scripts/",
-    ]
-
-    if (is_win) {
-      data += [ "//third_party/apache-win32/" ]
-    }
-
-    if (is_android) {
-      data += [
-        "//third_party/catapult/",
-        "//build/android/",
-      ]
-    }
-  }
-}
-
-# Add a dummy target for compatibility w/ GYP
-group("chromium_swarm_tests") {
-}
-
-group("chromium_builder_perf") {
-  testonly = true
-
-  if (!is_ios && !is_android && !is_chromecast) {
-    data_deps = [
-      "//cc:cc_perftests",
-      "//chrome/test:load_library_perf_tests",
-      "//chrome/test:telemetry_perf_tests",
-      "//components/tracing:tracing_perftests",
-      "//gpu:gpu_perftests",
-      "//media:media_perftests",
-      "//tools/perf/chrome_telemetry_build:telemetry_chrome_test",
-    ]
-
-    if (!is_chromeos) {
-      data_deps += [ "//chrome/test:performance_browser_tests" ]
-    }
-    if (is_linux && !is_chromeos) {
-      if (is_official_build) {
-        # In GN builds, this is controlled by the 'linux_dump_symbols'
-        # flag, which defaults to 1 for official builds. For now,
-        # we skip the separate flag and just key off of is_official_build.
-        data_deps += [ "//chrome:linux_symbols" ]
-      }
-
-      data_deps += [ "//tools/perf/clear_system_cache" ]
-    }
-
-    if (is_win) {
-      data_deps += [
-        "//chrome/installer/mini_installer:mini_installer",
-        "//chrome/test:angle_perftests",
-      ]
-    } else {
-      data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
-    }
-  }
-}
-
-if (!is_ios && !is_android && !is_chromecast) {
-  group("chromium_builder_asan") {
-    testonly = true
-
-    deps = [
-      "//chrome:chrome",
-      "//content/shell:content_shell",
-      "//v8:d8",
-    ]
-    if (!is_win) {
-      deps += [
-        "//net:dns_fuzz_stub",
-        "//skia:filter_fuzz_stub",
-      ]
-    }
-    if (enable_ipc_fuzzer && !is_component_build) {
-      deps += [ "//tools/ipc_fuzzer:ipc_fuzzer_all" ]
-    }
-    if (!is_chromeos) {
-      deps += [
-        "//third_party/pdfium/samples:pdfium_test",
-        "//v8:v8_shell($v8_snapshot_toolchain)",
-      ]
-    }
-    if (is_win && symbol_level == 2 && target_cpu == "x86" && is_syzyasan) {
-      deps += [
-        "//chrome/tools/build/win/syzygy:chrome_dll_syzygy",
-        "//content/shell:content_shell_syzyasan",
-      ]
-    }
-  }
-}
-
-# For compatibility with GYP. The linux_chromium_chromeos_rel_ng and
-# linux_chromium_chromeos_compile_rel_ng bots reference this target as
-# something to build, but all targets for those bots to compile are set
-# up differently.
-# TODO bug 601920: Remove reference to aura_builder on bot config and delete
-# this group.
-group("aura_builder") {
-}
-
-if (is_android) {
-  group("optimize_gn_gen") {
-    deps = [
-      # These run expensive scripts in non-default toolchains. Generally, host
-      # toolchain targets are loaded in the later part of the run, and the
-      # result is they push out the end of generation. By preloading these, the
-      # scripts can be parallelized with the rest of the load.
-      "//build/config/linux(//build/toolchain/linux:clang_x64)",
-      "//build/config/posix(//build/toolchain/linux:clang_x64)",
-
-      # Include x86 toolchains as well since V8 uses them for 32-bit snapshot
-      # generation.
-      "//build/config/linux(//build/toolchain/linux:clang_x86)",
-      "//build/config/posix(//build/toolchain/linux:clang_x86)",
-    ]
-  }
-}
-
-# Because of the source assignment filter, many targets end up over-filtering
-# their sources if the output directory contains a platform name. Assert that
-# this doesn't happen. http://crbug.com/548283
-template("assert_valid_out_dir") {
-  # List copied from //build/config/BUILDCONFIG.gn.
-  set_sources_assignment_filter([
-                                  "*\bandroid/*",
-                                  "*\bchromeos/*",
-                                  "*\bcocoa/*",
-                                  "*\bios/*",
-                                  "*\blinux/*",
-                                  "*\bmac/*",
-                                  "*\bposix/*",
-                                  "*\bwin/*",
-                                ])
-  assert(target_name != "")  # Mark as used.
-  sources = invoker.actual_sources
-  assert(
-      sources == invoker.actual_sources,
-      "Do not use a platform name in your output directory (found \"$root_build_dir\"). http://crbug.com/548283")
-}
-
-assert_valid_out_dir("_unused") {
-  actual_sources = [ "$root_build_dir/foo" ]
-}
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 4ec2818..0000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Chromium Code of Conduct
-
-Google and the Chromium team are committed to preserving and fostering a
-diverse, welcoming community. Below is our community code of conduct, which
-applies to our repos and organizations, mailing lists, blog content, and any
-other Chromium-supported communication group, as well as any private
-communication initiated in the context of these spaces.
-
-Simply put, community discussions should be
-
- * respectful and kind;
- * about Chromium;
- * about features and code, not the individuals involved.
-
-## Be respectful and constructive.
-
-Treat everyone with respect. Build on each other's ideas. Each of us has the
-right to enjoy our experience and participate without fear of harassment,
-discrimination, or condescension, whether blatant or subtle. Remember that
-Chromium is a geographically distributed team and that you may not be
-communicating with someone in their primary language. We all get frustrated
-when working on hard problems, but we cannot allow that frustration to turn
-into personal attacks.
-
-## Speak up if you see or hear something.
-
-You are empowered to politely engage when you feel that you or others are
-disrespected. The person making you feel uncomfortable may not be aware of what
-they are doing - politely bringing their behavior to their attention is
-encouraged.
-
-If you are uncomfortable speaking up, or feel that your concerns are not being
-duly considered, you can email community@chromium.org, dknox@google.com, or
-groby@chromium.org to request involvement from a community manager. All
-concerns shared with community managers will be kept confidential, but you may
-also submit an anonymous report [here](https://docs.google.com/a/google.com/forms/d/e/1FAIpQLSe-LDjW9eIJ-TpI2poZxnGtU-SvUWkFZc8x0aiKGY1s7NKPdA/viewform?c=0&w=1).
-Please note that without a way to contact you, an anonymous report may be
-difficult to act on. You may also create a throwaway account to report. In
-cases where a public response is deemed necessary, the identities of victims
-and reporters will remain confidential unless those individuals instruct us
-otherwise.
-
-While all reports will be taken seriously, the Chromium community managers may
-not act on complaints that they feel are not violations of this code of
-conduct.
-
-## We will not tolerate harassment of any kind, including but not limited to:
-
- * Harassing comments
- * Intimidation
- * Encouraging a person to engage in self-harm.
- * Sustained disruption or derailing of threads, channels, lists, etc.
- * Offensive or violent comments, jokes or otherwise
- * Inappropriate sexual content
- * Unwelcome sexual or otherwise aggressive attention
- * Continued one-on-one communication after requests to cease
- * Distribution or threat of distribution of people's personally identifying
-   information, AKA “doxing”
-
-## Consequences for failing to comply with this policy
-
-Consequences for failing to comply with this policy may include, at the sole
-discretion of the Chromium community managers:
-
- * a request for an apology;
- * a private or public warning or reprimand;
- * a temporary ban from the mailing list, blog, Chromium repository or
-   organization, or other Chromium-supported communication group, including
-   loss of committer status;
- * a permanent ban from any of the above, or from all current and future
-   Chromium-supported or Google-supported communities, including loss of
-   committer status.
-
-Participants warned to stop any harassing behavior are expected to comply
-immediately; failure to do so will result in an escalation of consequences.
-
-The decisions of the Chromium community managers may be appealed via
-community-appeals@chromium.org.
-
-## Acknowledgements
-
-This Code of Conduct is based on the Geek Feminism Code of Conduct, the Django
-Code of Conduct and the Geek Feminism Wiki "Effective codes of conduct" guide.
-
-## License
-
-This Code of Conduct is available for reuse under the Creative Commons Zero
-(CC0) license.
diff --git a/DEPS b/DEPS
deleted file mode 100644
index 4055935..0000000
--- a/DEPS
+++ /dev/null
@@ -1,1187 +0,0 @@
-vars = {
-  'angle_revision':
-    '461d9a3060e315706c74d1203ed945a600a1a241',
-  'boringssl_git':
-    'https://boringssl.googlesource.com',
-  'boringssl_revision':
-    'be2ee342d3781ddb954f91f8a7e660c6f59e87e5',
-  'buildspec_platforms':
-    'win64,win,precise64,mac64,',
-  'buildtools_revision':
-    'b3771b1935ea74c388b6fb1750e83f5d83b39dec',
-  'catapult_revision':
-    '49eb11f63eb4d552d634833a01d2710208ba0523',
-  'chromium_git':
-    'https://chromium.googlesource.com',
-  'devtools_node_modules_revision':
-    '6226d6cd80aaf2e5295ed460cf73ef6a582e4d78',
-  'freetype_android_revision':
-    '66725768cdf758cfb3f9abf03cbf5e5a77f42088',
-  'google_toolbox_for_mac_revision':
-    '038a2399b20e67ab17685e23ee873a66811fa107',
-  'libfuzzer_revision':
-    '5bcbfc5bcc468328ac18b6ca42d603fc6c744a7d',
-  'lighttpd_revision':
-    '9dfa55d15937a688a92cbf2b7a8621b0927d06eb',
-  'lss_revision':
-    '3f6478ac95edf86cd3da300c2c0d34a438f5dbeb',
-  'nacl_revision':
-    'c948e9b82582e695d16ee6696a484f82239a86d7',
-  'openmax_dl_revision':
-    '7acede9c039ea5d14cf326f44aad1245b9e674a7',
-  'pdfium_git':
-    'https://pdfium.googlesource.com',
-  'pdfium_revision':
-    '2079dce2ca47f3866f1dd5d51849c53362727f7b',
-  'scanbuild_revision':
-    '15bd7ca2934162c51654ddffc52933e45f95e7ef',
-  'sfntly_revision':
-    '64f78562d2003eb7cacaaa86a398cbd41881ba6f',
-  'skia_git':
-    'https://skia.googlesource.com',
-  'skia_revision':
-    '9c10df3b60f4a7d50c1070a5d8c4aaadb79ba9b7',
-  'swarming_revision':
-    '11e31afa5d330756ff87aa12064bb5d032896cb5',
-  'swiftshader_git':
-    'https://swiftshader.googlesource.com',
-  'swiftshader_revision':
-    '91da6b00584afd7dcaed66da88e2b617429b3950',
-  'v8_revision':
-    'c9b4087f4a00632b7133c491addac7272d45cbef'
-}
-
-allowed_hosts = [
-  'android.googlesource.com',
-  'boringssl.googlesource.com',
-  'chromium.googlesource.com',
-  'pdfium.googlesource.com',
-  'skia.googlesource.com',
-  'swiftshader.googlesource.com'
-]
-
-deps = {
-  'src/breakpad/src':
-    (Var("chromium_git")) + '/breakpad/breakpad/src.git@32f4ba2a1f6c23343870ee4a852df67d900dafe4',
-  'src/buildtools':
-    (Var("chromium_git")) + '/chromium/buildtools.git@b3771b1935ea74c388b6fb1750e83f5d83b39dec',
-  'src/chrome/test/data/perf/canvas_bench':
-    (Var("chromium_git")) + '/chromium/canvas_bench.git@a7b40ea5ae0239517d78845a5fc9b12976bfc732',
-  'src/chrome/test/data/perf/frame_rate/content':
-    (Var("chromium_git")) + '/chromium/frame_rate/content.git@c10272c88463efeef6bb19c9ec07c42bc8fe22b9',
-  'src/media/cdm/api':
-    (Var("chromium_git")) + '/chromium/cdm.git@46eebfa522b06c1f0b52b4233caa56793badf112',
-  'src/native_client':
-    (Var("chromium_git")) + '/native_client/src/native_client.git@c948e9b82582e695d16ee6696a484f82239a86d7',
-  'src/sdch/open-vcdiff':
-    (Var("chromium_git")) + '/external/github.com/google/open-vcdiff.git@2b9bd1fe548520e9355e457a134bab7e2f9c56c0',
-  'src/testing/gmock':
-    (Var("chromium_git")) + '/external/googlemock.git@0421b6f358139f02e102c9c332ce19a33faf75be',
-  'src/testing/gtest':
-    (Var("chromium_git")) + '/external/github.com/google/googletest.git@6f8a66431cb592dad629028a50b3dd418a408c87',
-  'src/third_party/SPIRV-Tools/src':
-    (Var("chromium_git")) + '/external/github.com/KhronosGroup/SPIRV-Tools.git@9166854ac93ef81b026e943ccd230fed6c8b8d3c',
-  'src/third_party/angle':
-    (Var("chromium_git")) + '/angle/angle.git@461d9a3060e315706c74d1203ed945a600a1a241',
-  'src/third_party/bidichecker':
-    (Var("chromium_git")) + '/external/bidichecker/lib.git@97f2aa645b74c28c57eca56992235c79850fa9e0',
-  'src/third_party/boringssl/src':
-    (Var("boringssl_git")) + '/boringssl.git@be2ee342d3781ddb954f91f8a7e660c6f59e87e5',
-  'src/third_party/catapult':
-    (Var("chromium_git")) + '/external/github.com/catapult-project/catapult.git@49eb11f63eb4d552d634833a01d2710208ba0523',
-  'src/third_party/ced/src':
-    (Var("chromium_git")) + '/external/github.com/google/compact_enc_det.git@368a9cc09ad868a3d28f0b5ad4a733f263c46409',
-  'src/third_party/cld_2/src':
-    (Var("chromium_git")) + '/external/github.com/CLD2Owners/cld2.git@84b58a5d7690ebf05a91406f371ce00c3daf31c0',
-  'src/third_party/cld_3/src':
-    (Var("chromium_git")) + '/external/github.com/google/cld_3.git@ae02d6b8a2af41e87c956c7c7d3f651a8b7b9e79',
-  'src/third_party/colorama/src':
-    (Var("chromium_git")) + '/external/colorama.git@799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8',
-  'src/third_party/dom_distiller_js/dist':
-    (Var("chromium_git")) + '/external/github.com/chromium/dom-distiller-dist.git@cfd68cb97b3050fd35f53c5231128f723d6dae08',
-  'src/third_party/ffmpeg':
-    (Var("chromium_git")) + '/chromium/third_party/ffmpeg.git@3f3ad2ea90df08f5907bd997e1ce22e1c19ce215',
-  'src/third_party/flac':
-    (Var("chromium_git")) + '/chromium/deps/flac.git@d0c35f878ec26f969c1631350b1d36fbd88ad8bb',
-  'src/third_party/flatbuffers/src':
-    (Var("chromium_git")) + '/external/github.com/google/flatbuffers.git@e92ae5199d52fd59540a800bec7eef46cd778257',
-  'src/third_party/glslang/src':
-    (Var("chromium_git")) + '/external/github.com/google/glslang.git@210c6bf4d8119dc5f8ac21da2d4c87184f7015e0',
-  'src/third_party/hunspell_dictionaries':
-    (Var("chromium_git")) + '/chromium/deps/hunspell_dictionaries.git@dc6e7c25bf47cbfb466e0701fd2728b4a12e79d5',
-  'src/third_party/icu':
-    (Var("chromium_git")) + '/chromium/deps/icu.git@b34251f8b762f8e2112a89c587855ca4297fed96',
-  'src/third_party/jsoncpp/source':
-    (Var("chromium_git")) + '/external/github.com/open-source-parsers/jsoncpp.git@f572e8e42e22cfcf5ab0aea26574f408943edfa4',
-  'src/third_party/leveldatabase/src':
-    (Var("chromium_git")) + '/external/leveldb.git@a53934a3ae1244679f812d998a4f16f2c7f309a6',
-  'src/third_party/libFuzzer/src':
-    (Var("chromium_git")) + '/chromium/llvm-project/llvm/lib/Fuzzer.git@5bcbfc5bcc468328ac18b6ca42d603fc6c744a7d',
-  'src/third_party/libaddressinput/src':
-    (Var("chromium_git")) + '/external/libaddressinput.git@4d18a0d4be9add0dc479e7b939ed8d39f6ec0d73',
-  'src/third_party/libjpeg_turbo':
-    (Var("chromium_git")) + '/chromium/deps/libjpeg_turbo.git@7260e4d8b8e1e40b17f03fafdf1cd83296900f76',
-  'src/third_party/libphonenumber/dist':
-    (Var("chromium_git")) + '/external/libphonenumber.git@a4da30df63a097d67e3c429ead6790ad91d36cf4',
-  'src/third_party/libsrtp':
-    (Var("chromium_git")) + '/chromium/deps/libsrtp.git@0e0936f3013fe5884eac82f95e370c8d460a179f',
-  'src/third_party/libvpx/source/libvpx':
-    (Var("chromium_git")) + '/webm/libvpx.git@8121f85473b28183c93fdcef290ed6f74b0b52db',
-  'src/third_party/libwebm/source':
-    (Var("chromium_git")) + '/webm/libwebm.git@4956b2dec65352af32dc71bab553acb631c64177',
-  'src/third_party/libyuv':
-    (Var("chromium_git")) + '/libyuv/libyuv.git@0741a3d70400dc96e59726674b0acf3bca02d710',
-  'src/third_party/mesa/src':
-    (Var("chromium_git")) + '/chromium/deps/mesa.git@ef811c6bd4de74e13e7035ca882cc77f85793fef',
-  'src/third_party/openh264/src':
-    (Var("chromium_git")) + '/external/github.com/cisco/openh264@0fd88df93c5dcaf858c57eb7892bd27763f0f0ac',
-  'src/third_party/openmax_dl':
-    (Var("chromium_git")) + '/external/webrtc/deps/third_party/openmax.git@7acede9c039ea5d14cf326f44aad1245b9e674a7',
-  'src/third_party/pdfium':
-    (Var("pdfium_git")) + '/pdfium.git@84213b529908d2b9095ad4c33ecc9fdf5d881df5',
-  'src/third_party/py_trace_event/src':
-    (Var("chromium_git")) + '/external/py_trace_event.git@dd463ea9e2c430de2b9e53dea57a77b4c3ac9b30',
-  'src/third_party/pyftpdlib/src':
-    (Var("chromium_git")) + '/external/pyftpdlib.git@2be6d65e31c7ee6320d059f581f05ae8d89d7e45',
-  'src/third_party/pywebsocket/src':
-    (Var("chromium_git")) + '/external/github.com/google/pywebsocket.git@2d7b73c3acbd0f41dcab487ae5c97c6feae06ce2',
-  'src/third_party/re2/src':
-    (Var("chromium_git")) + '/external/github.com/google/re2.git@db20d46c05900a12539225fe800dd860b14e0061',
-  'src/third_party/scan-build/src':
-    (Var("chromium_git")) + '/chromium/llvm-project/cfe/tools/scan-build.git@15bd7ca2934162c51654ddffc52933e45f95e7ef',
-  'src/third_party/scons-2.0.1':
-    (Var("chromium_git")) + '/native_client/src/third_party/scons-2.0.1.git@1c1550e17fc26355d08627fbdec13d8291227067',
-  'src/third_party/sfntly/src':
-    (Var("chromium_git")) + '/external/github.com/googlei18n/sfntly.git@64f78562d2003eb7cacaaa86a398cbd41881ba6f',
-  'src/third_party/shaderc/src':
-    (Var("chromium_git")) + '/external/github.com/google/shaderc.git@cd8793c34907073025af2622c28bcee64e9879a4',
-  'src/third_party/skia':
-    (Var("skia_git")) + '/skia.git@4c81ba6ba3a3270db809bf7d4c3bc782694a56a4',
-  'src/third_party/smhasher/src':
-    (Var("chromium_git")) + '/external/smhasher.git@e87738e57558e0ec472b2fc3a643b838e5b6e88f',
-  'src/third_party/snappy/src':
-    (Var("chromium_git")) + '/external/snappy.git@f6a298d7c7ddcfdae824649a61408bcf6b334d92',
-  'src/third_party/swiftshader':
-    (Var("swiftshader_git")) + '/SwiftShader.git@91da6b00584afd7dcaed66da88e2b617429b3950',
-  'src/third_party/usrsctp/usrsctplib':
-    (Var("chromium_git")) + '/external/github.com/sctplab/usrsctp@8679f2b0bf063ac894dc473debefd61dbbebf622',
-  'src/third_party/visualmetrics/src':
-    (Var("chromium_git")) + '/external/github.com/WPO-Foundation/visualmetrics.git@1edde9d2fe203229c895b648fdec355917200ad6',
-  'src/third_party/webdriver/pylib':
-    (Var("chromium_git")) + '/external/selenium/py.git@5fd78261a75fe08d27ca4835fb6c5ce4b42275bd',
-  'src/third_party/webgl/src':
-    (Var("chromium_git")) + '/external/khronosgroup/webgl.git@d0783b85bd445f700576dba25bf452d58c112d33',
-  'src/third_party/webpagereplay':
-    (Var("chromium_git")) + '/external/github.com/chromium/web-page-replay.git@3cd3a3f6f06a1b87b14b9162c7eb16d23d141241',
-  'src/third_party/webrtc':
-    (Var("chromium_git")) + '/external/webrtc/trunk/webrtc.git@05455abfd973173de9f6d8ee9f68d84e6adfaf04',
-  'src/third_party/yasm/source/patched-yasm':
-    (Var("chromium_git")) + '/chromium/deps/yasm/patched-yasm.git@7da28c6c7c6a1387217352ce02b31754deb54d2a',
-  'src/tools/gyp':
-    (Var("chromium_git")) + '/external/gyp.git@e7079f0e0e14108ab0dba58728ff219637458563',
-  'src/tools/page_cycler/acid3':
-    (Var("chromium_git")) + '/chromium/deps/acid3.git@6be0a66a1ebd7ebc5abc1b2f405a945f6d871521',
-  'src/tools/swarming_client':
-    (Var("chromium_git")) + '/external/swarming.client.git@11e31afa5d330756ff87aa12064bb5d032896cb5',
-  'src/v8':
-    (Var("chromium_git")) + '/v8/v8.git@2f06375912a79b55603cc75306738101921ce80a'
-}
-
-deps_os = {
-  'android': {
-    'src/third_party/android_protobuf/src':
-      (Var("chromium_git")) + '/external/android_protobuf.git@999188d0dc72e97f7fe08bb756958a2cf090f4e7',
-    'src/third_party/android_tools':
-      (Var("chromium_git")) + '/android_tools.git@b43a6a289a7588b1769814f04dd6c7d7176974cc',
-    'src/third_party/apache-portable-runtime/src':
-      (Var("chromium_git")) + '/external/apache-portable-runtime.git@c76a8c4277e09a82eaa229e35246edea1ee0a6a1',
-    'src/third_party/custom_tabs_client/src':
-      (Var("chromium_git")) + '/external/github.com/GoogleChrome/custom-tabs-client.git@3c95e2dda9b292653ff13454f093e5ff136814d2',
-    'src/third_party/elfutils/src':
-      (Var("chromium_git")) + '/external/elfutils.git@249673729a7e5dbd5de4f3760bdcaa3d23d154d7',
-    'src/third_party/errorprone/lib':
-      (Var("chromium_git")) + '/chromium/third_party/errorprone.git@0eea83b66343133b9c76b7d3288c30321818ebcf',
-    'src/third_party/findbugs':
-      (Var("chromium_git")) + '/chromium/deps/findbugs.git@57f05238d3ac77ea0a194813d3065dd780c6e566',
-    'src/third_party/freetype-android/src':
-      (Var("chromium_git")) + '/chromium/src/third_party/freetype2.git@66725768cdf758cfb3f9abf03cbf5e5a77f42088',
-    'src/third_party/gvr-android-sdk/src':
-      (Var("chromium_git")) + '/external/github.com/googlevr/gvr-android-sdk.git@8d1395957283ee13ebe2bc672ba24e5ca4ec343f',
-    'src/third_party/jsr-305/src':
-      (Var("chromium_git")) + '/external/jsr-305.git@642c508235471f7220af6d5df2d3210e3bfc0919',
-    'src/third_party/junit/src':
-      (Var("chromium_git")) + '/external/junit.git@64155f8a9babcfcf4263cf4d08253a1556e75481',
-    'src/third_party/leakcanary/src':
-      (Var("chromium_git")) + '/external/github.com/square/leakcanary.git@608ded739e036a3aa69db47ac43777dcee506f8e',
-    'src/third_party/lss':
-      (Var("chromium_git")) + '/linux-syscall-support.git@3f6478ac95edf86cd3da300c2c0d34a438f5dbeb',
-    'src/third_party/mockito/src':
-      (Var("chromium_git")) + '/external/mockito/mockito.git@de83ad4598ad4cf5ea53c69a8a8053780b04b850',
-    'src/third_party/netty-tcnative/src':
-      (Var("chromium_git")) + '/external/netty-tcnative.git@2e0f9503f3d4efe6fc3f70077f22471e83ffb446',
-    'src/third_party/netty4/src':
-      (Var("chromium_git")) + '/external/netty4.git@e0f26303b4ce635365be19414d0ac81f2ef6ba3c',
-    'src/third_party/requests/src':
-      (Var("chromium_git")) + '/external/github.com/kennethreitz/requests.git@f172b30356d821d180fa4ecfa3e71c7274a32de4',
-    'src/third_party/robolectric/robolectric':
-      (Var("chromium_git")) + '/external/robolectric.git@e38b49a12fdfa17a94f0382cc8ffaf69132fd09b',
-    'src/third_party/ub-uiautomator/lib':
-      (Var("chromium_git")) + '/chromium/third_party/ub-uiautomator.git@00270549ce3161ae72ceb24712618ea28b4f9434'
-  },
-  'ios': {
-    'src/ios/third_party/earl_grey/src':
-      (Var("chromium_git")) + '/external/github.com/google/EarlGrey.git@c5c89d810a8e76547ed0506e85c1a80f3a10bc48',
-    'src/ios/third_party/fishhook/src':
-      (Var("chromium_git")) + '/external/github.com/facebook/fishhook.git@d172d5247aa590c25d0b1885448bae76036ea22c',
-    'src/ios/third_party/gcdwebserver/src':
-      (Var("chromium_git")) + '/external/github.com/swisspol/GCDWebServer.git@43555c66627f6ed44817855a0f6d465f559d30e0',
-    'src/ios/third_party/material_components_ios/src':
-      (Var("chromium_git")) + '/external/github.com/material-components/material-components-ios.git@08c090470652228cdaf05eceee44d8b2a424c4ed',
-    'src/ios/third_party/material_font_disk_loader_ios/src':
-      (Var("chromium_git")) + '/external/github.com/material-foundation/material-font-disk-loader-ios.git@8e30188777b016182658fbaa0a4a020a48183224',
-    'src/ios/third_party/material_roboto_font_loader_ios/src':
-      (Var("chromium_git")) + '/external/github.com/material-foundation/material-roboto-font-loader-ios.git@2e25f314512e71d3413315a20e62a4d0126671f5',
-    'src/ios/third_party/material_sprited_animation_view_ios/src':
-      (Var("chromium_git")) + '/external/github.com/material-foundation/material-sprited-animation-view-ios.git@c6e16d06bdafd95540c62b3402d9414692fbca81',
-    'src/ios/third_party/material_text_accessibility_ios/src':
-      (Var("chromium_git")) + '/external/github.com/material-foundation/material-text-accessibility-ios.git@318d5100f2976e59c94643e5dcab69e7a830ee43',
-    'src/ios/third_party/ochamcrest/src':
-      (Var("chromium_git")) + '/external/github.com/hamcrest/OCHamcrest.git@d7ee4ecfb6bd13c3c8d364682b6228ccd86e1e1a',
-    'src/third_party/google_toolbox_for_mac/src':
-      (Var("chromium_git")) + '/external/github.com/google/google-toolbox-for-mac.git@038a2399b20e67ab17685e23ee873a66811fa107'
-  },
-  'mac': {
-    'src/chrome/installer/mac/third_party/xz/xz':
-      (Var("chromium_git")) + '/chromium/deps/xz.git@eecaf55632ca72e90eb2641376bce7cdbc7284f7',
-    'src/third_party/google_toolbox_for_mac/src':
-      (Var("chromium_git")) + '/external/github.com/google/google-toolbox-for-mac.git@038a2399b20e67ab17685e23ee873a66811fa107',
-    'src/third_party/lighttpd':
-      (Var("chromium_git")) + '/chromium/deps/lighttpd.git@9dfa55d15937a688a92cbf2b7a8621b0927d06eb'
-  },
-  'unix': {
-    'src/third_party/WebKit/Source/devtools/devtools-node-modules':
-      (Var("chromium_git")) + '/external/github.com/ChromeDevTools/devtools-node-modules@6226d6cd80aaf2e5295ed460cf73ef6a582e4d78',
-    'src/third_party/chromite':
-      (Var("chromium_git")) + '/chromiumos/chromite.git@59fb3e8e603b6b2b781da58f9408dde5c53fbbd6',
-    'src/third_party/cros_system_api':
-      (Var("chromium_git")) + '/chromiumos/platform/system_api.git@c08ae470458b06cf23c1907817490d2fc917ac29',
-    'src/third_party/fontconfig/src':
-      (Var("chromium_git")) + '/external/fontconfig.git@f16c3118e25546c1b749f9823c51827a60aeb5c1',
-    'src/third_party/freetype-android/src':
-      (Var("chromium_git")) + '/chromium/src/third_party/freetype2.git@66725768cdf758cfb3f9abf03cbf5e5a77f42088',
-    'src/third_party/gestures/gestures':
-      (Var("chromium_git")) + '/chromiumos/platform/gestures.git@5a656849c7d2b0d0ddbe0ac6d300c1e2fada0bb4',
-    'src/third_party/libdrm/src':
-      (Var("chromium_git")) + '/chromiumos/third_party/libdrm.git@0ce18bedd3e62d4784fa755403801934ba171084',
-    'src/third_party/libevdev/src':
-      (Var("chromium_git")) + '/chromiumos/platform/libevdev.git@9f7a1961eb4726211e18abd147d5a11a4ea86744',
-    'src/third_party/liblouis/src':
-      (Var("chromium_git")) + '/external/liblouis-github.git@5f9c03f2a3478561deb6ae4798175094be8a26c2',
-    'src/third_party/lss':
-      (Var("chromium_git")) + '/linux-syscall-support.git@3f6478ac95edf86cd3da300c2c0d34a438f5dbeb',
-    'src/third_party/minigbm/src':
-      (Var("chromium_git")) + '/chromiumos/platform/minigbm.git@878fed4088662309dc57689650fa4648cc4b480b',
-    'src/third_party/pyelftools':
-      (Var("chromium_git")) + '/chromiumos/third_party/pyelftools.git@19b3e610c86fcadb837d252c794cb5e8008826ae',
-    'src/third_party/wayland-protocols/src':
-      (Var("chromium_git")) + '/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git@2e541a36deff5f2e16e25e27f7f93d26822eecc2',
-    'src/third_party/wayland/src':
-      (Var("chromium_git")) + '/external/anongit.freedesktop.org/git/wayland/wayland.git@6a18a87727c64719c68168568b9ab1e4d7c2d9c1',
-    'src/third_party/wds/src':
-      (Var("chromium_git")) + '/external/github.com/01org/wds@ac3d8210d95f3000bf5c8e16a79dbbbf22d554a5',
-    'src/third_party/xdg-utils':
-      (Var("chromium_git")) + '/chromium/deps/xdg-utils.git@d80274d5869b17b8c9067a1022e4416ee7ed5e0d'
-  },
-  'win': {
-    'src/third_party/bison':
-      (Var("chromium_git")) + '/chromium/deps/bison.git@083c9a45e4affdd5464ee2b224c2df649c6e26c3',
-    'src/third_party/cygwin':
-      (Var("chromium_git")) + '/chromium/deps/cygwin.git@c89e446b273697fadf3a10ff1007a97c0b7de6df',
-    'src/third_party/gnu_binutils':
-      (Var("chromium_git")) + '/native_client/deps/third_party/gnu_binutils.git@f4003433b61b25666565690caf3d7a7a1a4ec436',
-    'src/third_party/gperf':
-      (Var("chromium_git")) + '/chromium/deps/gperf.git@d892d79f64f9449770443fb06da49b5a1e5d33c1',
-    'src/third_party/lighttpd':
-      (Var("chromium_git")) + '/chromium/deps/lighttpd.git@9dfa55d15937a688a92cbf2b7a8621b0927d06eb',
-    'src/third_party/mingw-w64/mingw/bin':
-      (Var("chromium_git")) + '/native_client/deps/third_party/mingw-w64/mingw/bin.git@3cc8b140b883a9fe4986d12cfd46c16a093d3527',
-    'src/third_party/nacl_sdk_binaries':
-      (Var("chromium_git")) + '/chromium/deps/nacl_sdk_binaries.git@759dfca03bdc774da7ecbf974f6e2b84f43699a5',
-    'src/third_party/pefile':
-      (Var("chromium_git")) + '/external/pefile.git@72c6ae42396cb913bcab63c15585dc3b5c3f92f1',
-    'src/third_party/perl':
-      (Var("chromium_git")) + '/chromium/deps/perl.git@ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78',
-    'src/third_party/psyco_win32':
-      (Var("chromium_git")) + '/chromium/deps/psyco_win32.git@f5af9f6910ee5a8075bbaeed0591469f1661d868',
-    'src/third_party/yasm/binaries':
-      (Var("chromium_git")) + '/chromium/deps/yasm/binaries.git@52f9b3f4b0aa06da24ef8b123058bb61ee468881'
-  }
-}
-
-hooks = [
-  {
-    'action': [
-      'python',
-      'src/build/landmines.py'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'landmines'
-  },
-  {
-    'action': [
-      'python',
-      'src/tools/remove_stale_pyc_files.py',
-      'src/android_webview/tools',
-      'src/build/android',
-      'src/gpu/gles2_conform_support',
-      'src/infra',
-      'src/ppapi',
-      'src/printing',
-      'src/third_party/catapult',
-      'src/third_party/closure_compiler/build',
-      'src/third_party/WebKit/Tools/Scripts',
-      'src/tools'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'remove_stale_pyc_files'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/download_nacl_toolchains.py',
-      '--mode',
-      'nacl_core_sdk',
-      'sync',
-      '--extract'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'nacltools'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/play_services/update.py',
-      'download'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'sdkextras'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-intellij',
-      '-l',
-      'third_party/intellij'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'intellij'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-javax-inject',
-      '-l',
-      'third_party/javax_inject'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'javax_inject'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-hamcrest',
-      '-l',
-      'third_party/hamcrest'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'hamcrest'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-guava',
-      '-l',
-      'third_party/guava'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'guava'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-android-support-test-runner',
-      '-l',
-      'third_party/android_support_test_runner'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'android_support_test_runner'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-byte-buddy',
-      '-l',
-      'third_party/byte_buddy'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'byte_buddy'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-espresso',
-      '-l',
-      'third_party/espresso'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'espresso'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-robolectric',
-      '-l',
-      'third_party/robolectric'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'robolectric_libs'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-apache-velocity',
-      '-l',
-      'third_party/apache_velocity'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'apache_velocity'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-ow2-asm',
-      '-l',
-      'third_party/ow2_asm'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'ow2_asm'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-android-tools/retrolambda',
-      '-l',
-      'third_party/retrolambda'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'retrolambda'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-icu4j',
-      '-l',
-      'third_party/icu4j'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'icu4j'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-accessibility-test-framework',
-      '-l',
-      'third_party/accessibility_test_framework'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'accessibility_test_framework'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-bouncycastle',
-      '-l',
-      'third_party/bouncycastle'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'bouncycastle'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-sqlite4java',
-      '-l',
-      'third_party/sqlite4java'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'sqlite4java'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-objenesis',
-      '-l',
-      'third_party/objenesis'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'objenesis'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chromium-robolectric',
-      '-l',
-      'third_party/xstream'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'xstream'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chrome-vr-test-apks/vr_services',
-      '-l',
-      'third_party/gvr-android-sdk/test-apks/vr_services'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'vr_services_apks'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/update_deps/update_third_party_deps.py',
-      'download',
-      '-b',
-      'chrome-vr-test-apks/daydream_home',
-      '-l',
-      'third_party/gvr-android-sdk/test-apks/daydream_home'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'daydream_home_apks'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/linux/sysroot_scripts/install-sysroot.py',
-      '--running-as-hook'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'sysroot'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/vs_toolchain.py',
-      'update'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'win_toolchain'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/mac_toolchain.py'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'mac_toolchain'
-  },
-  {
-    'action': [
-      'python',
-      'src/third_party/binutils/download.py'
-    ],
-    'pattern':
-      'src/third_party/binutils',
-    'name':
-      'binutils'
-  },
-  {
-    'action': [
-      'python',
-      'src/tools/clang/scripts/update.py',
-      '--if-needed'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'clang'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/util/lastchange.py',
-      '-o',
-      'src/build/util/LASTCHANGE'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'lastchange'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/util/lastchange.py',
-      '--git-hash-only',
-      '-s',
-      'src/third_party/WebKit',
-      '-o',
-      'src/build/util/LASTCHANGE.blink'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'lastchange_blink'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/util/lastchange.py',
-      '-m',
-      'SKIA_COMMIT_HASH',
-      '-s',
-      'src/third_party/skia',
-      '--header',
-      'src/skia/ext/skia_commit_hash.h'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'lastchange_skia'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=win32',
-      '--no_auth',
-      '--bucket',
-      'chromium-gn',
-      '-s',
-      'src/buildtools/win/gn.exe.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'gn_win'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=darwin',
-      '--no_auth',
-      '--bucket',
-      'chromium-gn',
-      '-s',
-      'src/buildtools/mac/gn.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'gn_mac'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-gn',
-      '-s',
-      'src/buildtools/linux64/gn.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'gn_linux64'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=win32',
-      '--no_auth',
-      '--bucket',
-      'chromium-clang-format',
-      '-s',
-      'src/buildtools/win/clang-format.exe.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'clang_format_win'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=darwin',
-      '--no_auth',
-      '--bucket',
-      'chromium-clang-format',
-      '-s',
-      'src/buildtools/mac/clang-format.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'clang_format_mac'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-clang-format',
-      '-s',
-      'src/buildtools/linux64/clang-format.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'clang_format_linux'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-gvr-static-shim',
-      '-s',
-      'src/third_party/gvr-android-sdk/libgvr_shim_static_arm.a.sha1'
-    ],
-    'pattern':
-      '\\.sha1',
-    'name':
-      'gvr_static_shim_android_arm'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-gvr-static-shim',
-      '-s',
-      'src/third_party/gvr-android-sdk/libgvr_shim_static_arm64.a.sha1'
-    ],
-    'pattern':
-      '\\.sha1',
-    'name':
-      'gvr_static_shim_android_arm64'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-gvr-static-shim',
-      '-s',
-      'src/third_party/gvr-android-sdk/common_library.aar.sha1'
-    ],
-    'pattern':
-      '\\.sha1',
-    'name':
-      'gvr_common_aar'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=win32',
-      '--no_auth',
-      '--bucket',
-      'chromium-luci',
-      '-d',
-      'src/tools/luci-go/win64'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'luci-go_win'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=darwin',
-      '--no_auth',
-      '--bucket',
-      'chromium-luci',
-      '-d',
-      'src/tools/luci-go/mac64'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'luci-go_mac'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-luci',
-      '-d',
-      'src/tools/luci-go/linux64'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'luci-go_linux'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--no_auth',
-      '--bucket',
-      'chromium-eu-strip',
-      '-s',
-      'src/build/linux/bin/eu-strip.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'eu-strip'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=win32',
-      '--no_auth',
-      '--bucket',
-      'chromium-drmemory',
-      '-s',
-      'src/third_party/drmemory/drmemory-windows-sfx.exe.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'drmemory'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/get_syzygy_binaries.py',
-      '--output-dir=src/third_party/syzygy/binaries',
-      '--revision=37f2efe2518802e568d2b620309c0c4a939e52f1',
-      '--overwrite',
-      '--copy-dia-binaries'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'syzygy-binaries'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=win32',
-      '--directory',
-      '--recursive',
-      '--no_auth',
-      '--num_threads=16',
-      '--bucket',
-      'chromium-apache-win32',
-      'src/third_party/apache-win32'
-    ],
-    'pattern':
-      '\\.sha1',
-    'name':
-      'apache_win32'
-  },
-  {
-    'action': [
-      'python',
-      'src/third_party/instrumented_libraries/scripts/download_binaries.py'
-    ],
-    'pattern':
-      '\\.sha1',
-    'name':
-      'instrumented_libraries'
-  },
-  {
-    'action': [
-      'python',
-      'src/build/android/download_doclava.py'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'doclava'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--no_auth',
-      '-u',
-      '--bucket',
-      'v8-wasm-fuzzer',
-      '-s',
-      'src/v8/test/fuzzer/wasm.tar.gz.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'wasm_fuzzer'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--no_auth',
-      '-u',
-      '--bucket',
-      'v8-wasm-asmjs-fuzzer',
-      '-s',
-      'src/v8/test/fuzzer/wasm_asmjs.tar.gz.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'wasm_asmjs_fuzzer'
-  },
-  {
-    'action': [
-      'python',
-      'src/tools/clang_format_merge_driver/install_git_hook.py'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'clang_format_merge_driver'
-  },
-  {
-    'action': [
-      'python',
-      'src/third_party/WebKit/Source/devtools/scripts/local_node/node.py',
-      '--running-as-hook',
-      '--version'
-    ],
-    'name':
-      'devtools_install_node'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=linux*',
-      '--extract',
-      '--no_auth',
-      '--bucket',
-      'chromium-nodejs/6.9.4',
-      '-s',
-      'src/third_party/node/linux/node-linux-x64.tar.gz.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'node_linux64'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=darwin',
-      '--extract',
-      '--no_auth',
-      '--bucket',
-      'chromium-nodejs/6.9.4',
-      '-s',
-      'src/third_party/node/mac/node-darwin-x64.tar.gz.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'node_mac'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--platform=win32',
-      '--no_auth',
-      '--bucket',
-      'chromium-nodejs/6.9.4',
-      '-s',
-      'src/third_party/node/win/node.exe.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'node_win'
-  },
-  {
-    'action': [
-      'download_from_google_storage',
-      '--no_resume',
-      '--extract',
-      '--no_auth',
-      '--bucket',
-      'chromium-nodejs',
-      '-s',
-      'src/third_party/node/node_modules.tar.gz.sha1'
-    ],
-    'pattern':
-      '.',
-    'name':
-      'webui_node_modules'
-  }
-]
-
-include_rules = [
-  '+base',
-  '+build',
-  '+ipc',
-  '+library_loaders',
-  '+testing',
-  '+third_party/icu/source/common/unicode',
-  '+third_party/icu/source/i18n/unicode',
-  '+url'
-]
-
-recursedeps = [
-  'src/buildtools',
-  'src/third_party/android_tools',
-  [
-    'DEPS.chromium',
-    'src/third_party/angle'
-  ],
-  [
-    'DEPS',
-    'src/third_party/swiftshader'
-  ]
-]
-
-skip_child_includes = [
-  'breakpad',
-  'native_client_sdk',
-  'out',
-  'sdch',
-  'skia',
-  'testing',
-  'v8',
-  'win8'
-]
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index a32e00c..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//    * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//    * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//    * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSE.chromium_os b/LICENSE.chromium_os
deleted file mode 100644
index 0aa7fc9..0000000
--- a/LICENSE.chromium_os
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2006-2009 The Chromium OS Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//    * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//    * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//    * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/OWNERS b/OWNERS
deleted file mode 100644
index c602cde..0000000
--- a/OWNERS
+++ /dev/null
@@ -1,18 +0,0 @@
-ben@chromium.org
-brettw@chromium.org
-cpu@chromium.org
-darin@chromium.org
-jam@chromium.org
-
-per-file .gitattributes=*
-per-file .gitignore=*
-per-file .git-blame-ignore-revs=mgiuca@chromium.org
-per-file .git-blame-ignore-revs=thakis@chromium.org
-per-file .gn=file://build/OWNERS
-per-file AUTHORS=*
-per-file BUILD.gn=file://build/OWNERS
-per-file DEPS=*
-per-file PRESUBMIT*.py=dpranke@chromium.org
-per-file PRESUBMIT*.py=jochen@chromium.org
-per-file PRESUBMIT*.py=phajdan.jr@chromium.org
-per-file WATCHLISTS=*
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
deleted file mode 100644
index 5454bba..0000000
--- a/PRESUBMIT.py
+++ /dev/null
@@ -1,2384 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Top-level presubmit script for Chromium.
-
-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
-for more details about the presubmit API built into depot_tools.
-"""
-
-
-_EXCLUDED_PATHS = (
-    r"^breakpad[\\\/].*",
-    r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_rules.py",
-    r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_simple.py",
-    r"^native_client_sdk[\\\/]src[\\\/]tools[\\\/].*.mk",
-    r"^net[\\\/]tools[\\\/]spdyshark[\\\/].*",
-    r"^skia[\\\/].*",
-    r"^third_party[\\\/]WebKit[\\\/].*",
-    r"^v8[\\\/].*",
-    r".*MakeFile$",
-    r".+_autogen\.h$",
-    r".+[\\\/]pnacl_shim\.c$",
-    r"^gpu[\\\/]config[\\\/].*_list_json\.cc$",
-    r"^chrome[\\\/]browser[\\\/]resources[\\\/]pdf[\\\/]index.js",
-    r".*vulcanized.html$",
-    r".*crisper.js$",
-)
-
-
-# Fragment of a regular expression that matches C++ and Objective-C++
-# implementation files.
-_IMPLEMENTATION_EXTENSIONS = r'\.(cc|cpp|cxx|mm)$'
-
-
-# Regular expression that matches code only used for test binaries
-# (best effort).
-_TEST_CODE_EXCLUDED_PATHS = (
-    r'.*[\\\/](fake_|test_|mock_).+%s' % _IMPLEMENTATION_EXTENSIONS,
-    r'.+_test_(base|support|util)%s' % _IMPLEMENTATION_EXTENSIONS,
-    r'.+_(api|browser|eg|perf|pixel|unit|ui)?test(_[a-z]+)?%s' %
-        _IMPLEMENTATION_EXTENSIONS,
-    r'.+profile_sync_service_harness%s' % _IMPLEMENTATION_EXTENSIONS,
-    r'.*[\\\/](test|tool(s)?)[\\\/].*',
-    # content_shell is used for running layout tests.
-    r'content[\\\/]shell[\\\/].*',
-    # Non-production example code.
-    r'mojo[\\\/]examples[\\\/].*',
-    # Launcher for running iOS tests on the simulator.
-    r'testing[\\\/]iossim[\\\/]iossim\.mm$',
-)
-
-
-_TEST_ONLY_WARNING = (
-    'You might be calling functions intended only for testing from\n'
-    'production code.  It is OK to ignore this warning if you know what\n'
-    'you are doing, as the heuristics used to detect the situation are\n'
-    'not perfect.  The commit queue will not block on this warning.')
-
-
-_INCLUDE_ORDER_WARNING = (
-    'Your #include order seems to be broken. Remember to use the right '
-    'collation (LC_COLLATE=C) and check\nhttps://google.github.io/styleguide/'
-    'cppguide.html#Names_and_Order_of_Includes')
-
-
-_BANNED_OBJC_FUNCTIONS = (
-    (
-      'addTrackingRect:',
-      (
-       'The use of -[NSView addTrackingRect:owner:userData:assumeInside:] is'
-       'prohibited. Please use CrTrackingArea instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      False,
-    ),
-    (
-      r'/NSTrackingArea\W',
-      (
-       'The use of NSTrackingAreas is prohibited. Please use CrTrackingArea',
-       'instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      False,
-    ),
-    (
-      'convertPointFromBase:',
-      (
-       'The use of -[NSView convertPointFromBase:] is almost certainly wrong.',
-       'Please use |convertPoint:(point) fromView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertPointToBase:',
-      (
-       'The use of -[NSView convertPointToBase:] is almost certainly wrong.',
-       'Please use |convertPoint:(point) toView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertRectFromBase:',
-      (
-       'The use of -[NSView convertRectFromBase:] is almost certainly wrong.',
-       'Please use |convertRect:(point) fromView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertRectToBase:',
-      (
-       'The use of -[NSView convertRectToBase:] is almost certainly wrong.',
-       'Please use |convertRect:(point) toView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertSizeFromBase:',
-      (
-       'The use of -[NSView convertSizeFromBase:] is almost certainly wrong.',
-       'Please use |convertSize:(point) fromView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      'convertSizeToBase:',
-      (
-       'The use of -[NSView convertSizeToBase:] is almost certainly wrong.',
-       'Please use |convertSize:(point) toView:nil| instead.',
-       'http://dev.chromium.org/developers/coding-style/cocoa-dos-and-donts',
-      ),
-      True,
-    ),
-    (
-      r"/\s+UTF8String\s*]",
-      (
-       'The use of -[NSString UTF8String] is dangerous as it can return null',
-       'even if |canBeConvertedToEncoding:NSUTF8StringEncoding| returns YES.',
-       'Please use |SysNSStringToUTF8| instead.',
-      ),
-      True,
-    ),
-)
-
-
-_BANNED_CPP_FUNCTIONS = (
-    # Make sure that gtest's FRIEND_TEST() macro is not used; the
-    # FRIEND_TEST_ALL_PREFIXES() macro from base/gtest_prod_util.h should be
-    # used instead since that allows for FLAKY_ and DISABLED_ prefixes.
-    (
-      'FRIEND_TEST(',
-      (
-       'Chromium code should not use gtest\'s FRIEND_TEST() macro. Include',
-       'base/gtest_prod_util.h and use FRIEND_TEST_ALL_PREFIXES() instead.',
-      ),
-      False,
-      (),
-    ),
-    (
-      r'XSelectInput|CWEventMask|XCB_CW_EVENT_MASK',
-      (
-       'Chrome clients wishing to select events on X windows should use',
-       'ui::XScopedEventSelector.  It is safe to ignore this warning only if',
-       'you are selecting events from the GPU process, or if you are using',
-       'an XDisplay other than gfx::GetXDisplay().',
-      ),
-      True,
-      (
-        r"^ui[\\\/]gl[\\\/].*\.cc$",
-        r"^media[\\\/]gpu[\\\/].*\.cc$",
-        r"^gpu[\\\/].*\.cc$",
-      ),
-    ),
-    (
-      'ScopedAllowIO',
-      (
-       'New code should not use ScopedAllowIO. Post a task to the blocking',
-       'pool or the FILE thread instead.',
-      ),
-      True,
-      (
-        r"^base[\\\/]process[\\\/]process_linux\.cc$",
-        r"^base[\\\/]process[\\\/]process_metrics_linux\.cc$",
-        r"^chrome[\\\/]browser[\\\/]chromeos[\\\/]boot_times_recorder\.cc$",
-        r"^chrome[\\\/]browser[\\\/]lifetime[\\\/]application_lifetime\.cc$",
-        r"^chrome[\\\/]browser[\\\/]chromeos[\\\/]"
-            "customization_document_browsertest\.cc$",
-        r"^components[\\\/]crash[\\\/]app[\\\/]breakpad_mac\.mm$",
-        r"^content[\\\/]shell[\\\/]browser[\\\/]layout_test[\\\/]" +
-            r"test_info_extractor\.cc$",
-        r"^content[\\\/].*browser(|_)test[a-zA-Z_]*\.cc$",
-        r"^content[\\\/]shell[\\\/]browser[\\\/]shell_browser_main\.cc$",
-        r"^content[\\\/]shell[\\\/]browser[\\\/]shell_message_filter\.cc$",
-        r"^content[\\\/]test[\\\/]ppapi[\\\/]ppapi_test\.cc$",
-        r"^mojo[\\\/]edk[\\\/]embedder[\\\/]" +
-            r"simple_platform_shared_buffer_posix\.cc$",
-        r"^net[\\\/]disk_cache[\\\/]cache_util\.cc$",
-        r"^net[\\\/]cert[\\\/]test_root_certs\.cc$",
-        r"^net[\\\/]test[\\\/]embedded_test_server[\\\/]" +
-            r"embedded_test_server\.cc$",
-        r"^net[\\\/]test[\\\/]spawned_test_server[\\\/]local_test_server\.cc$",
-        r"^net[\\\/]test[\\\/]test_data_directory\.cc$",
-        r"^net[\\\/]url_request[\\\/]test_url_fetcher_factory\.cc$",
-        r"^remoting[\\\/]protocol[\\\/]webrtc_transport\.cc$",
-        r"^ui[\\\/]base[\\\/]material_design[\\\/]"
-            "material_design_controller\.cc$",
-        r"^ui[\\\/]gl[\\\/]init[\\\/]gl_initializer_mac\.cc$",
-        r"^ui[\\\/]gl[\\\/]init[\\\/]gl_initializer_win\.cc$",
-        r"^ui[\\\/]gl[\\\/]init[\\\/]gl_initializer_x11\.cc$",
-        r"^ui[\\\/]ozone[\\\/]platform[\\\/]drm[\\\/]host[\\\/]"
-            "drm_display_host_manager\.cc$",
-      ),
-    ),
-    (
-      'setMatrixClip',
-      (
-        'Overriding setMatrixClip() is prohibited; ',
-        'the base function is deprecated. ',
-      ),
-      True,
-      (),
-    ),
-    (
-      'SkRefPtr',
-      (
-        'The use of SkRefPtr is prohibited. ',
-        'Please use sk_sp<> instead.'
-      ),
-      True,
-      (),
-    ),
-    (
-      'SkAutoRef',
-      (
-        'The indirect use of SkRefPtr via SkAutoRef is prohibited. ',
-        'Please use sk_sp<> instead.'
-      ),
-      True,
-      (),
-    ),
-    (
-      'SkAutoTUnref',
-      (
-        'The use of SkAutoTUnref is dangerous because it implicitly ',
-        'converts to a raw pointer. Please use sk_sp<> instead.'
-      ),
-      True,
-      (),
-    ),
-    (
-      'SkAutoUnref',
-      (
-        'The indirect use of SkAutoTUnref through SkAutoUnref is dangerous ',
-        'because it implicitly converts to a raw pointer. ',
-        'Please use sk_sp<> instead.'
-      ),
-      True,
-      (),
-    ),
-    (
-      r'/HANDLE_EINTR\(.*close',
-      (
-       'HANDLE_EINTR(close) is invalid. If close fails with EINTR, the file',
-       'descriptor will be closed, and it is incorrect to retry the close.',
-       'Either call close directly and ignore its return value, or wrap close',
-       'in IGNORE_EINTR to use its return value. See http://crbug.com/269623'
-      ),
-      True,
-      (),
-    ),
-    (
-      r'/IGNORE_EINTR\((?!.*close)',
-      (
-       'IGNORE_EINTR is only valid when wrapping close. To wrap other system',
-       'calls, use HANDLE_EINTR. See http://crbug.com/269623',
-      ),
-      True,
-      (
-        # Files that #define IGNORE_EINTR.
-        r'^base[\\\/]posix[\\\/]eintr_wrapper\.h$',
-        r'^ppapi[\\\/]tests[\\\/]test_broker\.cc$',
-      ),
-    ),
-    (
-      r'/v8::Extension\(',
-      (
-        'Do not introduce new v8::Extensions into the code base, use',
-        'gin::Wrappable instead. See http://crbug.com/334679',
-      ),
-      True,
-      (
-        r'extensions[\\\/]renderer[\\\/]safe_builtins\.*',
-      ),
-    ),
-    (
-      '#pragma comment(lib,',
-      (
-        'Specify libraries to link with in build files and not in the source.',
-      ),
-      True,
-      (),
-    ),
-)
-
-
-_IPC_ENUM_TRAITS_DEPRECATED = (
-    'You are using IPC_ENUM_TRAITS() in your code. It has been deprecated.\n'
-    'See http://www.chromium.org/Home/chromium-security/education/security-tips-for-ipc')
-
-
-_VALID_OS_MACROS = (
-    # Please keep sorted.
-    'OS_ANDROID',
-    'OS_BSD',
-    'OS_CAT',       # For testing.
-    'OS_CHROMEOS',
-    'OS_FREEBSD',
-    'OS_IOS',
-    'OS_LINUX',
-    'OS_MACOSX',
-    'OS_NACL',
-    'OS_NACL_NONSFI',
-    'OS_NACL_SFI',
-    'OS_NETBSD',
-    'OS_OPENBSD',
-    'OS_POSIX',
-    'OS_QNX',
-    'OS_SOLARIS',
-    'OS_WIN',
-)
-
-
-_ANDROID_SPECIFIC_PYDEPS_FILES = [
-    'build/android/test_runner.pydeps',
-    'net/tools/testserver/testserver.pydeps',
-]
-
-
-_GENERIC_PYDEPS_FILES = [
-]
-
-
-_ALL_PYDEPS_FILES = _ANDROID_SPECIFIC_PYDEPS_FILES + _GENERIC_PYDEPS_FILES
-
-
-def _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api):
-  """Attempts to prevent use of functions intended only for testing in
-  non-testing code. For now this is just a best-effort implementation
-  that ignores header files and may have some false positives. A
-  better implementation would probably need a proper C++ parser.
-  """
-  # We only scan .cc files and the like, as the declaration of
-  # for-testing functions in header files are hard to distinguish from
-  # calls to such functions without a proper C++ parser.
-  file_inclusion_pattern = r'.+%s' % _IMPLEMENTATION_EXTENSIONS
-
-  base_function_pattern = r'[ :]test::[^\s]+|ForTest(s|ing)?|for_test(s|ing)?'
-  inclusion_pattern = input_api.re.compile(r'(%s)\s*\(' % base_function_pattern)
-  comment_pattern = input_api.re.compile(r'//.*(%s)' % base_function_pattern)
-  exclusion_pattern = input_api.re.compile(
-    r'::[A-Za-z0-9_]+(%s)|(%s)[^;]+\{' % (
-      base_function_pattern, base_function_pattern))
-
-  def FilterFile(affected_file):
-    black_list = (_EXCLUDED_PATHS +
-                  _TEST_CODE_EXCLUDED_PATHS +
-                  input_api.DEFAULT_BLACK_LIST)
-    return input_api.FilterSourceFile(
-      affected_file,
-      white_list=(file_inclusion_pattern, ),
-      black_list=black_list)
-
-  problems = []
-  for f in input_api.AffectedSourceFiles(FilterFile):
-    local_path = f.LocalPath()
-    for line_number, line in f.ChangedContents():
-      if (inclusion_pattern.search(line) and
-          not comment_pattern.search(line) and
-          not exclusion_pattern.search(line)):
-        problems.append(
-          '%s:%d\n    %s' % (local_path, line_number, line.strip()))
-
-  if problems:
-    return [output_api.PresubmitPromptOrNotify(_TEST_ONLY_WARNING, problems)]
-  else:
-    return []
-
-
-def _CheckNoIOStreamInHeaders(input_api, output_api):
-  """Checks to make sure no .h files include <iostream>."""
-  files = []
-  pattern = input_api.re.compile(r'^#include\s*<iostream>',
-                                 input_api.re.MULTILINE)
-  for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
-    if not f.LocalPath().endswith('.h'):
-      continue
-    contents = input_api.ReadFile(f)
-    if pattern.search(contents):
-      files.append(f)
-
-  if len(files):
-    return [output_api.PresubmitError(
-        'Do not #include <iostream> in header files, since it inserts static '
-        'initialization into every file including the header. Instead, '
-        '#include <ostream>. See http://crbug.com/94794',
-        files) ]
-  return []
-
-
-def _CheckNoUNIT_TESTInSourceFiles(input_api, output_api):
-  """Checks to make sure no source files use UNIT_TEST."""
-  problems = []
-  for f in input_api.AffectedFiles():
-    if (not f.LocalPath().endswith(('.cc', '.mm'))):
-      continue
-
-    for line_num, line in f.ChangedContents():
-      if 'UNIT_TEST ' in line or line.endswith('UNIT_TEST'):
-        problems.append('    %s:%d' % (f.LocalPath(), line_num))
-
-  if not problems:
-    return []
-  return [output_api.PresubmitPromptWarning('UNIT_TEST is only for headers.\n' +
-      '\n'.join(problems))]
-
-
-def _CheckDCHECK_IS_ONHasBraces(input_api, output_api):
-  """Checks to make sure DCHECK_IS_ON() does not skip the parentheses."""
-  errors = []
-  pattern = input_api.re.compile(r'DCHECK_IS_ON(?!\(\))',
-                                 input_api.re.MULTILINE)
-  for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
-    if (not f.LocalPath().endswith(('.cc', '.mm', '.h'))):
-      continue
-    for lnum, line in f.ChangedContents():
-      if input_api.re.search(pattern, line):
-        errors.append(output_api.PresubmitError(
-          ('%s:%d: Use of DCHECK_IS_ON() must be written as "#if ' +
-           'DCHECK_IS_ON()", not forgetting the parentheses.')
-          % (f.LocalPath(), lnum)))
-  return errors
-
-
-def _FindHistogramNameInLine(histogram_name, line):
-  """Tries to find a histogram name or prefix in a line."""
-  if not "affected-histogram" in line:
-    return histogram_name in line
-  # A histogram_suffixes tag type has an affected-histogram name as a prefix of
-  # the histogram_name.
-  if not '"' in line:
-    return False
-  histogram_prefix = line.split('\"')[1]
-  return histogram_prefix in histogram_name
-
-
-def _CheckUmaHistogramChanges(input_api, output_api):
-  """Check that UMA histogram names in touched lines can still be found in other
-  lines of the patch or in histograms.xml. Note that this check would not catch
-  the reverse: changes in histograms.xml not matched in the code itself."""
-  touched_histograms = []
-  histograms_xml_modifications = []
-  pattern = input_api.re.compile('UMA_HISTOGRAM.*\("(.*)"')
-  for f in input_api.AffectedFiles():
-    # If histograms.xml itself is modified, keep the modified lines for later.
-    if f.LocalPath().endswith(('histograms.xml')):
-      histograms_xml_modifications = f.ChangedContents()
-      continue
-    if not f.LocalPath().endswith(('cc', 'mm', 'cpp')):
-      continue
-    for line_num, line in f.ChangedContents():
-      found = pattern.search(line)
-      if found:
-        touched_histograms.append([found.group(1), f, line_num])
-
-  # Search for the touched histogram names in the local modifications to
-  # histograms.xml, and, if not found, on the base histograms.xml file.
-  unmatched_histograms = []
-  for histogram_info in touched_histograms:
-    histogram_name_found = False
-    for line_num, line in histograms_xml_modifications:
-      histogram_name_found = _FindHistogramNameInLine(histogram_info[0], line)
-      if histogram_name_found:
-        break
-    if not histogram_name_found:
-      unmatched_histograms.append(histogram_info)
-
-  histograms_xml_path = 'tools/metrics/histograms/histograms.xml'
-  problems = []
-  if unmatched_histograms:
-    with open(histograms_xml_path) as histograms_xml:
-      for histogram_name, f, line_num in unmatched_histograms:
-        histograms_xml.seek(0)
-        histogram_name_found = False
-        for line in histograms_xml:
-          histogram_name_found = _FindHistogramNameInLine(histogram_name, line)
-          if histogram_name_found:
-            break
-        if not histogram_name_found:
-          problems.append(' [%s:%d] %s' %
-                          (f.LocalPath(), line_num, histogram_name))
-
-  if not problems:
-    return []
-  return [output_api.PresubmitPromptWarning('Some UMA_HISTOGRAM lines have '
-    'been modified and the associated histogram name has no match in either '
-    '%s or the modifications of it:' % (histograms_xml_path),  problems)]
-
-
-def _CheckFlakyTestUsage(input_api, output_api):
-  """Check that FlakyTest annotation is our own instead of the android one"""
-  pattern = input_api.re.compile(r'import android.test.FlakyTest;')
-  files = []
-  for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
-    if f.LocalPath().endswith('Test.java'):
-      if pattern.search(input_api.ReadFile(f)):
-        files.append(f)
-  if len(files):
-    return [output_api.PresubmitError(
-      'Use org.chromium.base.test.util.FlakyTest instead of '
-      'android.test.FlakyTest',
-      files)]
-  return []
-
-
-def _CheckNoNewWStrings(input_api, output_api):
-  """Checks to make sure we don't introduce use of wstrings."""
-  problems = []
-  for f in input_api.AffectedFiles():
-    if (not f.LocalPath().endswith(('.cc', '.h')) or
-        f.LocalPath().endswith(('test.cc', '_win.cc', '_win.h')) or
-        '/win/' in f.LocalPath() or
-        'chrome_elf' in f.LocalPath() or
-        'install_static' in f.LocalPath()):
-      continue
-
-    allowWString = False
-    for line_num, line in f.ChangedContents():
-      if 'presubmit: allow wstring' in line:
-        allowWString = True
-      elif not allowWString and 'wstring' in line:
-        problems.append('    %s:%d' % (f.LocalPath(), line_num))
-        allowWString = False
-      else:
-        allowWString = False
-
-  if not problems:
-    return []
-  return [output_api.PresubmitPromptWarning('New code should not use wstrings.'
-      '  If you are calling a cross-platform API that accepts a wstring, '
-      'fix the API.\n' +
-      '\n'.join(problems))]
-
-
-def _CheckNoDEPSGIT(input_api, output_api):
-  """Make sure .DEPS.git is never modified manually."""
-  if any(f.LocalPath().endswith('.DEPS.git') for f in
-      input_api.AffectedFiles()):
-    return [output_api.PresubmitError(
-      'Never commit changes to .DEPS.git. This file is maintained by an\n'
-      'automated system based on what\'s in DEPS and your changes will be\n'
-      'overwritten.\n'
-      'See https://sites.google.com/a/chromium.org/dev/developers/how-tos/get-the-code#Rolling_DEPS\n'
-      'for more information')]
-  return []
-
-
-def _CheckValidHostsInDEPS(input_api, output_api):
-  """Checks that DEPS file deps are from allowed_hosts."""
-  # Run only if DEPS file has been modified to annoy fewer bystanders.
-  if all(f.LocalPath() != 'DEPS' for f in input_api.AffectedFiles()):
-    return []
-  # Outsource work to gclient verify
-  try:
-    input_api.subprocess.check_output(['gclient', 'verify'])
-    return []
-  except input_api.subprocess.CalledProcessError, error:
-    return [output_api.PresubmitError(
-        'DEPS file must have only git dependencies.',
-        long_text=error.output)]
-
-
-def _CheckNoBannedFunctions(input_api, output_api):
-  """Make sure that banned functions are not used."""
-  warnings = []
-  errors = []
-
-  def IsBlacklisted(affected_file, blacklist):
-    local_path = affected_file.LocalPath()
-    for item in blacklist:
-      if input_api.re.match(item, local_path):
-        return True
-    return False
-
-  def CheckForMatch(affected_file, line_num, line, func_name, message, error):
-    matched = False
-    if func_name[0:1] == '/':
-      regex = func_name[1:]
-      if input_api.re.search(regex, line):
-        matched = True
-    elif func_name in line:
-      matched = True
-    if matched:
-      problems = warnings
-      if error:
-        problems = errors
-      problems.append('    %s:%d:' % (affected_file.LocalPath(), line_num))
-      for message_line in message:
-        problems.append('      %s' % message_line)
-
-  file_filter = lambda f: f.LocalPath().endswith(('.mm', '.m', '.h'))
-  for f in input_api.AffectedFiles(file_filter=file_filter):
-    for line_num, line in f.ChangedContents():
-      for func_name, message, error in _BANNED_OBJC_FUNCTIONS:
-        CheckForMatch(f, line_num, line, func_name, message, error)
-
-  file_filter = lambda f: f.LocalPath().endswith(('.cc', '.mm', '.h'))
-  for f in input_api.AffectedFiles(file_filter=file_filter):
-    for line_num, line in f.ChangedContents():
-      for func_name, message, error, excluded_paths in _BANNED_CPP_FUNCTIONS:
-        if IsBlacklisted(f, excluded_paths):
-          continue
-        CheckForMatch(f, line_num, line, func_name, message, error)
-
-  result = []
-  if (warnings):
-    result.append(output_api.PresubmitPromptWarning(
-        'Banned functions were used.\n' + '\n'.join(warnings)))
-  if (errors):
-    result.append(output_api.PresubmitError(
-        'Banned functions were used.\n' + '\n'.join(errors)))
-  return result
-
-
-def _CheckNoPragmaOnce(input_api, output_api):
-  """Make sure that banned functions are not used."""
-  files = []
-  pattern = input_api.re.compile(r'^#pragma\s+once',
-                                 input_api.re.MULTILINE)
-  for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
-    if not f.LocalPath().endswith('.h'):
-      continue
-    contents = input_api.ReadFile(f)
-    if pattern.search(contents):
-      files.append(f)
-
-  if files:
-    return [output_api.PresubmitError(
-        'Do not use #pragma once in header files.\n'
-        'See http://www.chromium.org/developers/coding-style#TOC-File-headers',
-        files)]
-  return []
-
-
-def _CheckNoTrinaryTrueFalse(input_api, output_api):
-  """Checks to make sure we don't introduce use of foo ? true : false."""
-  problems = []
-  pattern = input_api.re.compile(r'\?\s*(true|false)\s*:\s*(true|false)')
-  for f in input_api.AffectedFiles():
-    if not f.LocalPath().endswith(('.cc', '.h', '.inl', '.m', '.mm')):
-      continue
-
-    for line_num, line in f.ChangedContents():
-      if pattern.match(line):
-        problems.append('    %s:%d' % (f.LocalPath(), line_num))
-
-  if not problems:
-    return []
-  return [output_api.PresubmitPromptWarning(
-      'Please consider avoiding the "? true : false" pattern if possible.\n' +
-      '\n'.join(problems))]
-
-
-def _CheckUnwantedDependencies(input_api, output_api):
-  """Runs checkdeps on #include statements added in this
-  change. Breaking - rules is an error, breaking ! rules is a
-  warning.
-  """
-  import sys
-  # We need to wait until we have an input_api object and use this
-  # roundabout construct to import checkdeps because this file is
-  # eval-ed and thus doesn't have __file__.
-  original_sys_path = sys.path
-  try:
-    sys.path = sys.path + [input_api.os_path.join(
-        input_api.PresubmitLocalPath(), 'buildtools', 'checkdeps')]
-    import checkdeps
-    from cpp_checker import CppChecker
-    from rules import Rule
-  finally:
-    # Restore sys.path to what it was before.
-    sys.path = original_sys_path
-
-  added_includes = []
-  for f in input_api.AffectedFiles():
-    if not CppChecker.IsCppFile(f.LocalPath()):
-      continue
-
-    changed_lines = [line for line_num, line in f.ChangedContents()]
-    added_includes.append([f.LocalPath(), changed_lines])
-
-  deps_checker = checkdeps.DepsChecker(input_api.PresubmitLocalPath())
-
-  error_descriptions = []
-  warning_descriptions = []
-  for path, rule_type, rule_description in deps_checker.CheckAddedCppIncludes(
-      added_includes):
-    description_with_path = '%s\n    %s' % (path, rule_description)
-    if rule_type == Rule.DISALLOW:
-      error_descriptions.append(description_with_path)
-    else:
-      warning_descriptions.append(description_with_path)
-
-  results = []
-  if error_descriptions:
-    results.append(output_api.PresubmitError(
-        'You added one or more #includes that violate checkdeps rules.',
-        error_descriptions))
-  if warning_descriptions:
-    results.append(output_api.PresubmitPromptOrNotify(
-        'You added one or more #includes of files that are temporarily\n'
-        'allowed but being removed. Can you avoid introducing the\n'
-        '#include? See relevant DEPS file(s) for details and contacts.',
-        warning_descriptions))
-  return results
-
-
-def _CheckFilePermissions(input_api, output_api):
-  """Check that all files have their permissions properly set."""
-  if input_api.platform == 'win32':
-    return []
-  checkperms_tool = input_api.os_path.join(
-      input_api.PresubmitLocalPath(),
-      'tools', 'checkperms', 'checkperms.py')
-  args = [input_api.python_executable, checkperms_tool,
-          '--root', input_api.change.RepositoryRoot()]
-  for f in input_api.AffectedFiles():
-    args += ['--file', f.LocalPath()]
-  try:
-    input_api.subprocess.check_output(args)
-    return []
-  except input_api.subprocess.CalledProcessError as error:
-    return [output_api.PresubmitError(
-        'checkperms.py failed:',
-        long_text=error.output)]
-
-
-def _CheckTeamTags(input_api, output_api):
-  """Checks that OWNERS files have consistent TEAM and COMPONENT tags."""
-  checkteamtags_tool = input_api.os_path.join(
-      input_api.PresubmitLocalPath(),
-      'tools', 'checkteamtags', 'checkteamtags.py')
-  args = [input_api.python_executable, checkteamtags_tool,
-          '--root', input_api.change.RepositoryRoot()]
-  files = [f.LocalPath() for f in input_api.AffectedFiles(include_deletes=False)
-           if input_api.os_path.basename(f.AbsoluteLocalPath()).upper() ==
-           'OWNERS']
-  try:
-    if files:
-      input_api.subprocess.check_output(args + files)
-    return []
-  except input_api.subprocess.CalledProcessError as error:
-    return [output_api.PresubmitError(
-        'checkteamtags.py failed:',
-        long_text=error.output)]
-
-
-def _CheckNoAuraWindowPropertyHInHeaders(input_api, output_api):
-  """Makes sure we don't include ui/aura/window_property.h
-  in header files.
-  """
-  pattern = input_api.re.compile(r'^#include\s*"ui/aura/window_property.h"')
-  errors = []
-  for f in input_api.AffectedFiles():
-    if not f.LocalPath().endswith('.h'):
-      continue
-    for line_num, line in f.ChangedContents():
-      if pattern.match(line):
-        errors.append('    %s:%d' % (f.LocalPath(), line_num))
-
-  results = []
-  if errors:
-    results.append(output_api.PresubmitError(
-      'Header files should not include ui/aura/window_property.h', errors))
-  return results
-
-
-def _CheckIncludeOrderForScope(scope, input_api, file_path, changed_linenums):
-  """Checks that the lines in scope occur in the right order.
-
-  1. C system files in alphabetical order
-  2. C++ system files in alphabetical order
-  3. Project's .h files
-  """
-
-  c_system_include_pattern = input_api.re.compile(r'\s*#include <.*\.h>')
-  cpp_system_include_pattern = input_api.re.compile(r'\s*#include <.*>')
-  custom_include_pattern = input_api.re.compile(r'\s*#include ".*')
-
-  C_SYSTEM_INCLUDES, CPP_SYSTEM_INCLUDES, CUSTOM_INCLUDES = range(3)
-
-  state = C_SYSTEM_INCLUDES
-
-  previous_line = ''
-  previous_line_num = 0
-  problem_linenums = []
-  out_of_order = " - line belongs before previous line"
-  for line_num, line in scope:
-    if c_system_include_pattern.match(line):
-      if state != C_SYSTEM_INCLUDES:
-        problem_linenums.append((line_num, previous_line_num,
-            " - C system include file in wrong block"))
-      elif previous_line and previous_line > line:
-        problem_linenums.append((line_num, previous_line_num,
-            out_of_order))
-    elif cpp_system_include_pattern.match(line):
-      if state == C_SYSTEM_INCLUDES:
-        state = CPP_SYSTEM_INCLUDES
-      elif state == CUSTOM_INCLUDES:
-        problem_linenums.append((line_num, previous_line_num,
-            " - c++ system include file in wrong block"))
-      elif previous_line and previous_line > line:
-        problem_linenums.append((line_num, previous_line_num, out_of_order))
-    elif custom_include_pattern.match(line):
-      if state != CUSTOM_INCLUDES:
-        state = CUSTOM_INCLUDES
-      elif previous_line and previous_line > line:
-        problem_linenums.append((line_num, previous_line_num, out_of_order))
-    else:
-      problem_linenums.append((line_num, previous_line_num,
-          "Unknown include type"))
-    previous_line = line
-    previous_line_num = line_num
-
-  warnings = []
-  for (line_num, previous_line_num, failure_type) in problem_linenums:
-    if line_num in changed_linenums or previous_line_num in changed_linenums:
-      warnings.append('    %s:%d:%s' % (file_path, line_num, failure_type))
-  return warnings
-
-
-def _CheckIncludeOrderInFile(input_api, f, changed_linenums):
-  """Checks the #include order for the given file f."""
-
-  system_include_pattern = input_api.re.compile(r'\s*#include \<.*')
-  # Exclude the following includes from the check:
-  # 1) #include <.../...>, e.g., <sys/...> includes often need to appear in a
-  # specific order.
-  # 2) <atlbase.h>, "build/build_config.h"
-  excluded_include_pattern = input_api.re.compile(
-      r'\s*#include (\<.*/.*|\<atlbase\.h\>|"build/build_config.h")')
-  custom_include_pattern = input_api.re.compile(r'\s*#include "(?P<FILE>.*)"')
-  # Match the final or penultimate token if it is xxxtest so we can ignore it
-  # when considering the special first include.
-  test_file_tag_pattern = input_api.re.compile(
-    r'_[a-z]+test(?=(_[a-zA-Z0-9]+)?\.)')
-  if_pattern = input_api.re.compile(
-      r'\s*#\s*(if|elif|else|endif|define|undef).*')
-  # Some files need specialized order of includes; exclude such files from this
-  # check.
-  uncheckable_includes_pattern = input_api.re.compile(
-      r'\s*#include '
-      '("ipc/.*macros\.h"|<windows\.h>|".*gl.*autogen.h")\s*')
-
-  contents = f.NewContents()
-  warnings = []
-  line_num = 0
-
-  # Handle the special first include. If the first include file is
-  # some/path/file.h, the corresponding including file can be some/path/file.cc,
-  # some/other/path/file.cc, some/path/file_platform.cc, some/path/file-suffix.h
-  # etc. It's also possible that no special first include exists.
-  # If the included file is some/path/file_platform.h the including file could
-  # also be some/path/file_xxxtest_platform.h.
-  including_file_base_name = test_file_tag_pattern.sub(
-    '', input_api.os_path.basename(f.LocalPath()))
-
-  for line in contents:
-    line_num += 1
-    if system_include_pattern.match(line):
-      # No special first include -> process the line again along with normal
-      # includes.
-      line_num -= 1
-      break
-    match = custom_include_pattern.match(line)
-    if match:
-      match_dict = match.groupdict()
-      header_basename = test_file_tag_pattern.sub(
-        '', input_api.os_path.basename(match_dict['FILE'])).replace('.h', '')
-
-      if header_basename not in including_file_base_name:
-        # No special first include -> process the line again along with normal
-        # includes.
-        line_num -= 1
-      break
-
-  # Split into scopes: Each region between #if and #endif is its own scope.
-  scopes = []
-  current_scope = []
-  for line in contents[line_num:]:
-    line_num += 1
-    if uncheckable_includes_pattern.match(line):
-      continue
-    if if_pattern.match(line):
-      scopes.append(current_scope)
-      current_scope = []
-    elif ((system_include_pattern.match(line) or
-           custom_include_pattern.match(line)) and
-          not excluded_include_pattern.match(line)):
-      current_scope.append((line_num, line))
-  scopes.append(current_scope)
-
-  for scope in scopes:
-    warnings.extend(_CheckIncludeOrderForScope(scope, input_api, f.LocalPath(),
-                                               changed_linenums))
-  return warnings
-
-
-def _CheckIncludeOrder(input_api, output_api):
-  """Checks that the #include order is correct.
-
-  1. The corresponding header for source files.
-  2. C system files in alphabetical order
-  3. C++ system files in alphabetical order
-  4. Project's .h files in alphabetical order
-
-  Each region separated by #if, #elif, #else, #endif, #define and #undef follows
-  these rules separately.
-  """
-  def FileFilterIncludeOrder(affected_file):
-    black_list = (_EXCLUDED_PATHS + input_api.DEFAULT_BLACK_LIST)
-    return input_api.FilterSourceFile(affected_file, black_list=black_list)
-
-  warnings = []
-  for f in input_api.AffectedFiles(file_filter=FileFilterIncludeOrder):
-    if f.LocalPath().endswith(('.cc', '.h', '.mm')):
-      changed_linenums = set(line_num for line_num, _ in f.ChangedContents())
-      warnings.extend(_CheckIncludeOrderInFile(input_api, f, changed_linenums))
-
-  results = []
-  if warnings:
-    results.append(output_api.PresubmitPromptOrNotify(_INCLUDE_ORDER_WARNING,
-                                                      warnings))
-  return results
-
-
-def _CheckForVersionControlConflictsInFile(input_api, f):
-  pattern = input_api.re.compile('^(?:<<<<<<<|>>>>>>>) |^=======$')
-  errors = []
-  for line_num, line in f.ChangedContents():
-    if f.LocalPath().endswith('.md'):
-      # First-level headers in markdown look a lot like version control
-      # conflict markers. http://daringfireball.net/projects/markdown/basics
-      continue
-    if pattern.match(line):
-      errors.append('    %s:%d %s' % (f.LocalPath(), line_num, line))
-  return errors
-
-
-def _CheckForVersionControlConflicts(input_api, output_api):
-  """Usually this is not intentional and will cause a compile failure."""
-  errors = []
-  for f in input_api.AffectedFiles():
-    errors.extend(_CheckForVersionControlConflictsInFile(input_api, f))
-
-  results = []
-  if errors:
-    results.append(output_api.PresubmitError(
-      'Version control conflict markers found, please resolve.', errors))
-  return results
-
-def _CheckGoogleSupportAnswerUrl(input_api, output_api):
-  pattern = input_api.re.compile('support\.google\.com\/chrome.*/answer')
-  errors = []
-  for f in input_api.AffectedFiles():
-    for line_num, line in f.ChangedContents():
-      if pattern.search(line):
-        errors.append('    %s:%d %s' % (f.LocalPath(), line_num, line))
-
-  results = []
-  if errors:
-    results.append(output_api.PresubmitPromptWarning(
-      'Found Google support URL addressed by answer number. Please replace with '
-      'a p= identifier instead. See crbug.com/679462\n', errors))
-  return results
-
-
-def _CheckHardcodedGoogleHostsInLowerLayers(input_api, output_api):
-  def FilterFile(affected_file):
-    """Filter function for use with input_api.AffectedSourceFiles,
-    below.  This filters out everything except non-test files from
-    top-level directories that generally speaking should not hard-code
-    service URLs (e.g. src/android_webview/, src/content/ and others).
-    """
-    return input_api.FilterSourceFile(
-      affected_file,
-      white_list=(r'^(android_webview|base|content|net)[\\\/].*', ),
-      black_list=(_EXCLUDED_PATHS +
-                  _TEST_CODE_EXCLUDED_PATHS +
-                  input_api.DEFAULT_BLACK_LIST))
-
-  base_pattern = ('"[^"]*(google|googleapis|googlezip|googledrive|appspot)'
-                  '\.(com|net)[^"]*"')
-  comment_pattern = input_api.re.compile('//.*%s' % base_pattern)
-  pattern = input_api.re.compile(base_pattern)
-  problems = []  # items are (filename, line_number, line)
-  for f in input_api.AffectedSourceFiles(FilterFile):
-    for line_num, line in f.ChangedContents():
-      if not comment_pattern.search(line) and pattern.search(line):
-        problems.append((f.LocalPath(), line_num, line))
-
-  if problems:
-    return [output_api.PresubmitPromptOrNotify(
-        'Most layers below src/chrome/ should not hardcode service URLs.\n'
-        'Are you sure this is correct?',
-        ['  %s:%d:  %s' % (
-            problem[0], problem[1], problem[2]) for problem in problems])]
-  else:
-    return []
-
-
-def _CheckNoAbbreviationInPngFileName(input_api, output_api):
-  """Makes sure there are no abbreviations in the name of PNG files.
-  The native_client_sdk directory is excluded because it has auto-generated PNG
-  files for documentation.
-  """
-  errors = []
-  white_list = (r'.*_[a-z]_.*\.png$|.*_[a-z]\.png$',)
-  black_list = (r'^native_client_sdk[\\\/]',)
-  file_filter = lambda f: input_api.FilterSourceFile(
-      f, white_list=white_list, black_list=black_list)
-  for f in input_api.AffectedFiles(include_deletes=False,
-                                   file_filter=file_filter):
-    errors.append('    %s' % f.LocalPath())
-
-  results = []
-  if errors:
-    results.append(output_api.PresubmitError(
-        'The name of PNG files should not have abbreviations. \n'
-        'Use _hover.png, _center.png, instead of _h.png, _c.png.\n'
-        'Contact oshima@chromium.org if you have questions.', errors))
-  return results
-
-
-def _FilesToCheckForIncomingDeps(re, changed_lines):
-  """Helper method for _CheckAddedDepsHaveTargetApprovals. Returns
-  a set of DEPS entries that we should look up.
-
-  For a directory (rather than a specific filename) we fake a path to
-  a specific filename by adding /DEPS. This is chosen as a file that
-  will seldom or never be subject to per-file include_rules.
-  """
-  # We ignore deps entries on auto-generated directories.
-  AUTO_GENERATED_DIRS = ['grit', 'jni']
-
-  # This pattern grabs the path without basename in the first
-  # parentheses, and the basename (if present) in the second. It
-  # relies on the simple heuristic that if there is a basename it will
-  # be a header file ending in ".h".
-  pattern = re.compile(
-      r"""['"]\+([^'"]+?)(/[a-zA-Z0-9_]+\.h)?['"].*""")
-  results = set()
-  for changed_line in changed_lines:
-    m = pattern.match(changed_line)
-    if m:
-      path = m.group(1)
-      if path.split('/')[0] not in AUTO_GENERATED_DIRS:
-        if m.group(2):
-          results.add('%s%s' % (path, m.group(2)))
-        else:
-          results.add('%s/DEPS' % path)
-  return results
-
-
-def _CheckAddedDepsHaveTargetApprovals(input_api, output_api):
-  """When a dependency prefixed with + is added to a DEPS file, we
-  want to make sure that the change is reviewed by an OWNER of the
-  target file or directory, to avoid layering violations from being
-  introduced. This check verifies that this happens.
-  """
-  changed_lines = set()
-
-  file_filter = lambda f: not input_api.re.match(
-      r"^third_party[\\\/]WebKit[\\\/].*", f.LocalPath())
-  for f in input_api.AffectedFiles(include_deletes=False,
-                                   file_filter=file_filter):
-    filename = input_api.os_path.basename(f.LocalPath())
-    if filename == 'DEPS':
-      changed_lines |= set(line.strip()
-                           for line_num, line
-                           in f.ChangedContents())
-  if not changed_lines:
-    return []
-
-  virtual_depended_on_files = _FilesToCheckForIncomingDeps(input_api.re,
-                                                           changed_lines)
-  if not virtual_depended_on_files:
-    return []
-
-  if input_api.is_committing:
-    if input_api.tbr:
-      return [output_api.PresubmitNotifyResult(
-          '--tbr was specified, skipping OWNERS check for DEPS additions')]
-    if input_api.dry_run:
-      return [output_api.PresubmitNotifyResult(
-          'This is a dry run, skipping OWNERS check for DEPS additions')]
-    if not input_api.change.issue:
-      return [output_api.PresubmitError(
-          "DEPS approval by OWNERS check failed: this change has "
-          "no Rietveld issue number, so we can't check it for approvals.")]
-    output = output_api.PresubmitError
-  else:
-    output = output_api.PresubmitNotifyResult
-
-  owners_db = input_api.owners_db
-  owner_email, reviewers = (
-      input_api.canned_checks.GetCodereviewOwnerAndReviewers(
-        input_api,
-        owners_db.email_regexp,
-        approval_needed=input_api.is_committing))
-
-  owner_email = owner_email or input_api.change.author_email
-
-  reviewers_plus_owner = set(reviewers)
-  if owner_email:
-    reviewers_plus_owner.add(owner_email)
-  missing_files = owners_db.files_not_covered_by(virtual_depended_on_files,
-                                                 reviewers_plus_owner)
-
-  # We strip the /DEPS part that was added by
-  # _FilesToCheckForIncomingDeps to fake a path to a file in a
-  # directory.
-  def StripDeps(path):
-    start_deps = path.rfind('/DEPS')
-    if start_deps != -1:
-      return path[:start_deps]
-    else:
-      return path
-  unapproved_dependencies = ["'+%s'," % StripDeps(path)
-                             for path in missing_files]
-
-  if unapproved_dependencies:
-    output_list = [
-      output('You need LGTM from owners of depends-on paths in DEPS that were '
-             'modified in this CL:\n    %s' %
-                 '\n    '.join(sorted(unapproved_dependencies)))]
-    suggested_owners = owners_db.reviewers_for(missing_files, owner_email)
-    output_list.append(output(
-        'Suggested missing target path OWNERS:\n    %s' %
-            '\n    '.join(suggested_owners or [])))
-    return output_list
-
-  return []
-
-
-def _CheckSpamLogging(input_api, output_api):
-  file_inclusion_pattern = r'.+%s' % _IMPLEMENTATION_EXTENSIONS
-  black_list = (_EXCLUDED_PATHS +
-                _TEST_CODE_EXCLUDED_PATHS +
-                input_api.DEFAULT_BLACK_LIST +
-                (r"^base[\\\/]logging\.h$",
-                 r"^base[\\\/]logging\.cc$",
-                 r"^chrome[\\\/]app[\\\/]chrome_main_delegate\.cc$",
-                 r"^chrome[\\\/]browser[\\\/]chrome_browser_main\.cc$",
-                 r"^chrome[\\\/]browser[\\\/]ui[\\\/]startup[\\\/]"
-                     r"startup_browser_creator\.cc$",
-                 r"^chrome[\\\/]installer[\\\/]setup[\\\/].*",
-                 r"chrome[\\\/]browser[\\\/]diagnostics[\\\/]" +
-                     r"diagnostics_writer\.cc$",
-                 r"^chrome_elf[\\\/]dll_hash[\\\/]dll_hash_main\.cc$",
-                 r"^chromecast[\\\/]",
-                 r"^cloud_print[\\\/]",
-                 r"^components[\\\/]html_viewer[\\\/]"
-                     r"web_test_delegate_impl\.cc$",
-                 # TODO(peter): Remove this exception. https://crbug.com/534537
-                 r"^content[\\\/]browser[\\\/]notifications[\\\/]"
-                     r"notification_event_dispatcher_impl\.cc$",
-                 r"^content[\\\/]common[\\\/]gpu[\\\/]client[\\\/]"
-                     r"gl_helper_benchmark\.cc$",
-                 r"^courgette[\\\/]courgette_minimal_tool\.cc$",
-                 r"^courgette[\\\/]courgette_tool\.cc$",
-                 r"^extensions[\\\/]renderer[\\\/]logging_native_handler\.cc$",
-                 r"^ipc[\\\/]ipc_logging\.cc$",
-                 r"^native_client_sdk[\\\/]",
-                 r"^remoting[\\\/]base[\\\/]logging\.h$",
-                 r"^remoting[\\\/]host[\\\/].*",
-                 r"^sandbox[\\\/]linux[\\\/].*",
-                 r"^tools[\\\/]",
-                 r"^ui[\\\/]base[\\\/]resource[\\\/]data_pack.cc$",
-                 r"^ui[\\\/]aura[\\\/]bench[\\\/]bench_main\.cc$",
-                 r"^ui[\\\/]ozone[\\\/]platform[\\\/]cast[\\\/]",
-                 r"^storage[\\\/]browser[\\\/]fileapi[\\\/]" +
-                     r"dump_file_system.cc$",
-                 r"^headless[\\\/]app[\\\/]headless_shell\.cc$"))
-  source_file_filter = lambda x: input_api.FilterSourceFile(
-      x, white_list=(file_inclusion_pattern,), black_list=black_list)
-
-  log_info = []
-  printf = []
-
-  for f in input_api.AffectedSourceFiles(source_file_filter):
-    contents = input_api.ReadFile(f, 'rb')
-    if input_api.re.search(r"\bD?LOG\s*\(\s*INFO\s*\)", contents):
-      log_info.append(f.LocalPath())
-    elif input_api.re.search(r"\bD?LOG_IF\s*\(\s*INFO\s*,", contents):
-      log_info.append(f.LocalPath())
-
-    if input_api.re.search(r"\bprintf\(", contents):
-      printf.append(f.LocalPath())
-    elif input_api.re.search(r"\bfprintf\((stdout|stderr)", contents):
-      printf.append(f.LocalPath())
-
-  if log_info:
-    return [output_api.PresubmitError(
-      'These files spam the console log with LOG(INFO):',
-      items=log_info)]
-  if printf:
-    return [output_api.PresubmitError(
-      'These files spam the console log with printf/fprintf:',
-      items=printf)]
-  return []
-
-
-def _CheckForAnonymousVariables(input_api, output_api):
-  """These types are all expected to hold locks while in scope and
-     so should never be anonymous (which causes them to be immediately
-     destroyed)."""
-  they_who_must_be_named = [
-    'base::AutoLock',
-    'base::AutoReset',
-    'base::AutoUnlock',
-    'SkAutoAlphaRestore',
-    'SkAutoBitmapShaderInstall',
-    'SkAutoBlitterChoose',
-    'SkAutoBounderCommit',
-    'SkAutoCallProc',
-    'SkAutoCanvasRestore',
-    'SkAutoCommentBlock',
-    'SkAutoDescriptor',
-    'SkAutoDisableDirectionCheck',
-    'SkAutoDisableOvalCheck',
-    'SkAutoFree',
-    'SkAutoGlyphCache',
-    'SkAutoHDC',
-    'SkAutoLockColors',
-    'SkAutoLockPixels',
-    'SkAutoMalloc',
-    'SkAutoMaskFreeImage',
-    'SkAutoMutexAcquire',
-    'SkAutoPathBoundsUpdate',
-    'SkAutoPDFRelease',
-    'SkAutoRasterClipValidate',
-    'SkAutoRef',
-    'SkAutoTime',
-    'SkAutoTrace',
-    'SkAutoUnref',
-  ]
-  anonymous = r'(%s)\s*[({]' % '|'.join(they_who_must_be_named)
-  # bad: base::AutoLock(lock.get());
-  # not bad: base::AutoLock lock(lock.get());
-  bad_pattern = input_api.re.compile(anonymous)
-  # good: new base::AutoLock(lock.get())
-  good_pattern = input_api.re.compile(r'\bnew\s*' + anonymous)
-  errors = []
-
-  for f in input_api.AffectedFiles():
-    if not f.LocalPath().endswith(('.cc', '.h', '.inl', '.m', '.mm')):
-      continue
-    for linenum, line in f.ChangedContents():
-      if bad_pattern.search(line) and not good_pattern.search(line):
-        errors.append('%s:%d' % (f.LocalPath(), linenum))
-
-  if errors:
-    return [output_api.PresubmitError(
-      'These lines create anonymous variables that need to be named:',
-      items=errors)]
-  return []
-
-
-def _CheckCygwinShell(input_api, output_api):
-  source_file_filter = lambda x: input_api.FilterSourceFile(
-      x, white_list=(r'.+\.(gyp|gypi)$',))
-  cygwin_shell = []
-
-  for f in input_api.AffectedSourceFiles(source_file_filter):
-    for linenum, line in f.ChangedContents():
-      if 'msvs_cygwin_shell' in line:
-        cygwin_shell.append(f.LocalPath())
-        break
-
-  if cygwin_shell:
-    return [output_api.PresubmitError(
-      'These files should not use msvs_cygwin_shell (the default is 0):',
-      items=cygwin_shell)]
-  return []
-
-
-def _CheckUserActionUpdate(input_api, output_api):
-  """Checks if any new user action has been added."""
-  if any('actions.xml' == input_api.os_path.basename(f) for f in
-         input_api.LocalPaths()):
-    # If actions.xml is already included in the changelist, the PRESUBMIT
-    # for actions.xml will do a more complete presubmit check.
-    return []
-
-  file_filter = lambda f: f.LocalPath().endswith(('.cc', '.mm'))
-  action_re = r'[^a-zA-Z]UserMetricsAction\("([^"]*)'
-  current_actions = None
-  for f in input_api.AffectedFiles(file_filter=file_filter):
-    for line_num, line in f.ChangedContents():
-      match = input_api.re.search(action_re, line)
-      if match:
-        # Loads contents in tools/metrics/actions/actions.xml to memory. It's
-        # loaded only once.
-        if not current_actions:
-          with open('tools/metrics/actions/actions.xml') as actions_f:
-            current_actions = actions_f.read()
-        # Search for the matched user action name in |current_actions|.
-        for action_name in match.groups():
-          action = 'name="{0}"'.format(action_name)
-          if action not in current_actions:
-            return [output_api.PresubmitPromptWarning(
-              'File %s line %d: %s is missing in '
-              'tools/metrics/actions/actions.xml. Please run '
-              'tools/metrics/actions/extract_actions.py to update.'
-              % (f.LocalPath(), line_num, action_name))]
-  return []
-
-
-def _GetJSONParseError(input_api, filename, eat_comments=True):
-  try:
-    contents = input_api.ReadFile(filename)
-    if eat_comments:
-      import sys
-      original_sys_path = sys.path
-      try:
-        sys.path = sys.path + [input_api.os_path.join(
-            input_api.PresubmitLocalPath(),
-            'tools', 'json_comment_eater')]
-        import json_comment_eater
-      finally:
-        sys.path = original_sys_path
-      contents = json_comment_eater.Nom(contents)
-
-    input_api.json.loads(contents)
-  except ValueError as e:
-    return e
-  return None
-
-
-def _GetIDLParseError(input_api, filename):
-  try:
-    contents = input_api.ReadFile(filename)
-    idl_schema = input_api.os_path.join(
-        input_api.PresubmitLocalPath(),
-        'tools', 'json_schema_compiler', 'idl_schema.py')
-    process = input_api.subprocess.Popen(
-        [input_api.python_executable, idl_schema],
-        stdin=input_api.subprocess.PIPE,
-        stdout=input_api.subprocess.PIPE,
-        stderr=input_api.subprocess.PIPE,
-        universal_newlines=True)
-    (_, error) = process.communicate(input=contents)
-    return error or None
-  except ValueError as e:
-    return e
-
-
-def _CheckParseErrors(input_api, output_api):
-  """Check that IDL and JSON files do not contain syntax errors."""
-  actions = {
-    '.idl': _GetIDLParseError,
-    '.json': _GetJSONParseError,
-  }
-  # These paths contain test data and other known invalid JSON files.
-  excluded_patterns = [
-    r'test[\\\/]data[\\\/]',
-    r'^components[\\\/]policy[\\\/]resources[\\\/]policy_templates\.json$',
-  ]
-  # Most JSON files are preprocessed and support comments, but these do not.
-  json_no_comments_patterns = [
-    r'^testing[\\\/]',
-  ]
-  # Only run IDL checker on files in these directories.
-  idl_included_patterns = [
-    r'^chrome[\\\/]common[\\\/]extensions[\\\/]api[\\\/]',
-    r'^extensions[\\\/]common[\\\/]api[\\\/]',
-  ]
-
-  def get_action(affected_file):
-    filename = affected_file.LocalPath()
-    return actions.get(input_api.os_path.splitext(filename)[1])
-
-  def MatchesFile(patterns, path):
-    for pattern in patterns:
-      if input_api.re.search(pattern, path):
-        return True
-    return False
-
-  def FilterFile(affected_file):
-    action = get_action(affected_file)
-    if not action:
-      return False
-    path = affected_file.LocalPath()
-
-    if MatchesFile(excluded_patterns, path):
-      return False
-
-    if (action == _GetIDLParseError and
-        not MatchesFile(idl_included_patterns, path)):
-      return False
-    return True
-
-  results = []
-  for affected_file in input_api.AffectedFiles(
-      file_filter=FilterFile, include_deletes=False):
-    action = get_action(affected_file)
-    kwargs = {}
-    if (action == _GetJSONParseError and
-        MatchesFile(json_no_comments_patterns, affected_file.LocalPath())):
-      kwargs['eat_comments'] = False
-    parse_error = action(input_api,
-                         affected_file.AbsoluteLocalPath(),
-                         **kwargs)
-    if parse_error:
-      results.append(output_api.PresubmitError('%s could not be parsed: %s' %
-          (affected_file.LocalPath(), parse_error)))
-  return results
-
-
-def _CheckJavaStyle(input_api, output_api):
-  """Runs checkstyle on changed java files and returns errors if any exist."""
-  import sys
-  original_sys_path = sys.path
-  try:
-    sys.path = sys.path + [input_api.os_path.join(
-        input_api.PresubmitLocalPath(), 'tools', 'android', 'checkstyle')]
-    import checkstyle
-  finally:
-    # Restore sys.path to what it was before.
-    sys.path = original_sys_path
-
-  return checkstyle.RunCheckstyle(
-      input_api, output_api, 'tools/android/checkstyle/chromium-style-5.0.xml',
-      black_list=_EXCLUDED_PATHS + input_api.DEFAULT_BLACK_LIST)
-
-
-def _CheckIpcOwners(input_api, output_api):
-  """Checks that affected files involving IPC have an IPC OWNERS rule.
-
-  Whether or not a file affects IPC is determined by a simple whitelist of
-  filename patterns."""
-  file_patterns = [
-      # Legacy IPC:
-      '*_messages.cc',
-      '*_messages*.h',
-      '*_param_traits*.*',
-      # Mojo IPC:
-      '*.mojom',
-      '*_struct_traits*.*',
-      '*_type_converter*.*',
-      '*.typemap',
-      # Android native IPC:
-      '*.aidl',
-      # Blink uses a different file naming convention:
-      '*EnumTraits*.*',
-      '*StructTraits*.*',
-      '*TypeConverter*.*',
-  ]
-
-  # These third_party directories do not contain IPCs, but contain files
-  # matching the above patterns, which trigger false positives.
-  exclude_paths = [
-      'third_party/crashpad/*',
-  ]
-
-  # Dictionary mapping an OWNERS file path to Patterns.
-  # Patterns is a dictionary mapping glob patterns (suitable for use in per-file
-  # rules ) to a PatternEntry.
-  # PatternEntry is a dictionary with two keys:
-  # - 'files': the files that are matched by this pattern
-  # - 'rules': the per-file rules needed for this pattern
-  # For example, if we expect OWNERS file to contain rules for *.mojom and
-  # *_struct_traits*.*, Patterns might look like this:
-  # {
-  #   '*.mojom': {
-  #     'files': ...,
-  #     'rules': [
-  #       'per-file *.mojom=set noparent',
-  #       'per-file *.mojom=file://ipc/SECURITY_OWNERS',
-  #     ],
-  #   },
-  #   '*_struct_traits*.*': {
-  #     'files': ...,
-  #     'rules': [
-  #       'per-file *_struct_traits*.*=set noparent',
-  #       'per-file *_struct_traits*.*=file://ipc/SECURITY_OWNERS',
-  #     ],
-  #   },
-  # }
-  to_check = {}
-
-  # Iterate through the affected files to see what we actually need to check
-  # for. We should only nag patch authors about per-file rules if a file in that
-  # directory would match that pattern. If a directory only contains *.mojom
-  # files and no *_messages*.h files, we should only nag about rules for
-  # *.mojom files.
-  for f in input_api.change.AffectedFiles(include_deletes=False):
-    for pattern in file_patterns:
-      if input_api.fnmatch.fnmatch(
-          input_api.os_path.basename(f.LocalPath()), pattern):
-        skip = False
-        for exclude in exclude_paths:
-          if input_api.fnmatch.fnmatch(f.LocalPath(), exclude):
-            skip = True
-            break
-        if skip:
-          continue
-        owners_file = input_api.os_path.join(
-            input_api.os_path.dirname(f.LocalPath()), 'OWNERS')
-        if owners_file not in to_check:
-          to_check[owners_file] = {}
-        if pattern not in to_check[owners_file]:
-          to_check[owners_file][pattern] = {
-              'files': [],
-              'rules': [
-                  'per-file %s=set noparent' % pattern,
-                  'per-file %s=file://ipc/SECURITY_OWNERS' % pattern,
-              ]
-          }
-        to_check[owners_file][pattern]['files'].append(f)
-        break
-
-  # Now go through the OWNERS files we collected, filtering out rules that are
-  # already present in that OWNERS file.
-  for owners_file, patterns in to_check.iteritems():
-    try:
-      with file(owners_file) as f:
-        lines = set(f.read().splitlines())
-        for entry in patterns.itervalues():
-          entry['rules'] = [rule for rule in entry['rules'] if rule not in lines
-                           ]
-    except IOError:
-      # No OWNERS file, so all the rules are definitely missing.
-      continue
-
-  # All the remaining lines weren't found in OWNERS files, so emit an error.
-  errors = []
-  for owners_file, patterns in to_check.iteritems():
-    missing_lines = []
-    files = []
-    for pattern, entry in patterns.iteritems():
-      missing_lines.extend(entry['rules'])
-      files.extend(['  %s' % f.LocalPath() for f in entry['files']])
-    if missing_lines:
-      errors.append(
-          '%s is missing the following lines:\n\n%s\n\nfor changed files:\n%s' %
-          (owners_file, '\n'.join(missing_lines), '\n'.join(files)))
-
-  results = []
-  if errors:
-    if input_api.is_committing:
-      output = output_api.PresubmitError
-    else:
-      output = output_api.PresubmitPromptWarning
-    results.append(output(
-        'Found changes to IPC files without a security OWNER!',
-        long_text='\n\n'.join(errors)))
-
-  return results
-
-
-def _CheckUselessForwardDeclarations(input_api, output_api):
-  """Checks that added or removed lines in non third party affected
-     header files do not lead to new useless class or struct forward
-     declaration.
-  """
-  results = []
-  class_pattern = input_api.re.compile(r'^class\s+(\w+);$',
-                                       input_api.re.MULTILINE)
-  struct_pattern = input_api.re.compile(r'^struct\s+(\w+);$',
-                                        input_api.re.MULTILINE)
-  for f in input_api.AffectedFiles(include_deletes=False):
-    if (f.LocalPath().startswith('third_party') and
-        not f.LocalPath().startswith('third_party/WebKit') and
-        not f.LocalPath().startswith('third_party\\WebKit')):
-      continue
-
-    if not f.LocalPath().endswith('.h'):
-      continue
-
-    contents = input_api.ReadFile(f)
-    fwd_decls = input_api.re.findall(class_pattern, contents)
-    fwd_decls.extend(input_api.re.findall(struct_pattern, contents))
-
-    useless_fwd_decls = []
-    for decl in fwd_decls:
-      count = sum(1 for _ in input_api.re.finditer(
-        r'\b%s\b' % input_api.re.escape(decl), contents))
-      if count == 1:
-        useless_fwd_decls.append(decl)
-
-    if not useless_fwd_decls:
-      continue
-
-    for line in f.GenerateScmDiff().splitlines():
-      if (line.startswith('-') and not line.startswith('--') or
-          line.startswith('+') and not line.startswith('++')):
-        for decl in useless_fwd_decls:
-          if input_api.re.search(r'\b%s\b' % decl, line[1:]):
-            results.append(output_api.PresubmitPromptWarning(
-              '%s: %s forward declaration is becoming useless' %
-              (f.LocalPath(), decl)))
-            useless_fwd_decls.remove(decl)
-
-  return results
-
-
-def _CheckAndroidToastUsage(input_api, output_api):
-  """Checks that code uses org.chromium.ui.widget.Toast instead of
-     android.widget.Toast (Chromium Toast doesn't force hardware
-     acceleration on low-end devices, saving memory).
-  """
-  toast_import_pattern = input_api.re.compile(
-      r'^import android\.widget\.Toast;$')
-
-  errors = []
-
-  sources = lambda affected_file: input_api.FilterSourceFile(
-      affected_file,
-      black_list=(_EXCLUDED_PATHS +
-                  _TEST_CODE_EXCLUDED_PATHS +
-                  input_api.DEFAULT_BLACK_LIST +
-                  (r'^chromecast[\\\/].*',
-                   r'^remoting[\\\/].*')),
-      white_list=(r'.*\.java$',))
-
-  for f in input_api.AffectedSourceFiles(sources):
-    for line_num, line in f.ChangedContents():
-      if toast_import_pattern.search(line):
-        errors.append("%s:%d" % (f.LocalPath(), line_num))
-
-  results = []
-
-  if errors:
-    results.append(output_api.PresubmitError(
-        'android.widget.Toast usage is detected. Android toasts use hardware'
-        ' acceleration, and can be\ncostly on low-end devices. Please use'
-        ' org.chromium.ui.widget.Toast instead.\n'
-        'Contact dskiba@chromium.org if you have any questions.',
-        errors))
-
-  return results
-
-
-def _CheckAndroidCrLogUsage(input_api, output_api):
-  """Checks that new logs using org.chromium.base.Log:
-    - Are using 'TAG' as variable name for the tags (warn)
-    - Are using a tag that is shorter than 20 characters (error)
-  """
-
-  # Do not check format of logs in the given files
-  cr_log_check_excluded_paths = [
-    # //chrome/android/webapk cannot depend on //base
-    r"^chrome[\\\/]android[\\\/]webapk[\\\/].*",
-    # WebView license viewer code cannot depend on //base; used in stub APK.
-    r"^android_webview[\\\/]glue[\\\/]java[\\\/]src[\\\/]com[\\\/]android[\\\/]"
-    r"webview[\\\/]chromium[\\\/]License.*",
-  ]
-
-  cr_log_import_pattern = input_api.re.compile(
-      r'^import org\.chromium\.base\.Log;$', input_api.re.MULTILINE)
-  class_in_base_pattern = input_api.re.compile(
-      r'^package org\.chromium\.base;$', input_api.re.MULTILINE)
-  has_some_log_import_pattern = input_api.re.compile(
-      r'^import .*\.Log;$', input_api.re.MULTILINE)
-  # Extract the tag from lines like `Log.d(TAG, "*");` or `Log.d("TAG", "*");`
-  log_call_pattern = input_api.re.compile(r'^\s*Log\.\w\((?P<tag>\"?\w+\"?)\,')
-  log_decl_pattern = input_api.re.compile(
-      r'^\s*private static final String TAG = "(?P<name>(.*))";',
-      input_api.re.MULTILINE)
-
-  REF_MSG = ('See docs/android_logging.md '
-            'or contact dgn@chromium.org for more info.')
-  sources = lambda x: input_api.FilterSourceFile(x, white_list=(r'.*\.java$',),
-      black_list=cr_log_check_excluded_paths)
-
-  tag_decl_errors = []
-  tag_length_errors = []
-  tag_errors = []
-  tag_with_dot_errors = []
-  util_log_errors = []
-
-  for f in input_api.AffectedSourceFiles(sources):
-    file_content = input_api.ReadFile(f)
-    has_modified_logs = False
-
-    # Per line checks
-    if (cr_log_import_pattern.search(file_content) or
-        (class_in_base_pattern.search(file_content) and
-            not has_some_log_import_pattern.search(file_content))):
-      # Checks to run for files using cr log
-      for line_num, line in f.ChangedContents():
-
-        # Check if the new line is doing some logging
-        match = log_call_pattern.search(line)
-        if match:
-          has_modified_logs = True
-
-          # Make sure it uses "TAG"
-          if not match.group('tag') == 'TAG':
-            tag_errors.append("%s:%d" % (f.LocalPath(), line_num))
-    else:
-      # Report non cr Log function calls in changed lines
-      for line_num, line in f.ChangedContents():
-        if log_call_pattern.search(line):
-          util_log_errors.append("%s:%d" % (f.LocalPath(), line_num))
-
-    # Per file checks
-    if has_modified_logs:
-      # Make sure the tag is using the "cr" prefix and is not too long
-      match = log_decl_pattern.search(file_content)
-      tag_name = match.group('name') if match else None
-      if not tag_name:
-        tag_decl_errors.append(f.LocalPath())
-      elif len(tag_name) > 20:
-        tag_length_errors.append(f.LocalPath())
-      elif '.' in tag_name:
-        tag_with_dot_errors.append(f.LocalPath())
-
-  results = []
-  if tag_decl_errors:
-    results.append(output_api.PresubmitPromptWarning(
-        'Please define your tags using the suggested format: .\n'
-        '"private static final String TAG = "<package tag>".\n'
-        'They will be prepended with "cr_" automatically.\n' + REF_MSG,
-        tag_decl_errors))
-
-  if tag_length_errors:
-    results.append(output_api.PresubmitError(
-        'The tag length is restricted by the system to be at most '
-        '20 characters.\n' + REF_MSG,
-        tag_length_errors))
-
-  if tag_errors:
-    results.append(output_api.PresubmitPromptWarning(
-        'Please use a variable named "TAG" for your log tags.\n' + REF_MSG,
-        tag_errors))
-
-  if util_log_errors:
-    results.append(output_api.PresubmitPromptWarning(
-        'Please use org.chromium.base.Log for new logs.\n' + REF_MSG,
-        util_log_errors))
-
-  if tag_with_dot_errors:
-    results.append(output_api.PresubmitPromptWarning(
-        'Dot in log tags cause them to be elided in crash reports.\n' + REF_MSG,
-        tag_with_dot_errors))
-
-  return results
-
-
-def _CheckAndroidTestAnnotationUsage(input_api, output_api):
-  """Checks that android.test.suitebuilder.annotation.* is no longer used."""
-  deprecated_annotation_import_pattern = input_api.re.compile(
-      r'^import android\.test\.suitebuilder\.annotation\..*;',
-      input_api.re.MULTILINE)
-  sources = lambda x: input_api.FilterSourceFile(
-      x, white_list=(r'.*\.java$',), black_list=None)
-  errors = []
-  for f in input_api.AffectedFiles(sources):
-    for line_num, line in f.ChangedContents():
-      if deprecated_annotation_import_pattern.search(line):
-        errors.append("%s:%d" % (f.LocalPath(), line_num))
-
-  results = []
-  if errors:
-    results.append(output_api.PresubmitError(
-      'Annotations in android.test.suitebuilder.annotation have been'
-      ' deprecated since API level 24. Please use android.support.test.filters'
-      ' from //third_party/android_support_test_runner:runner_java instead.'
-      ' Contact yolandyan@chromium.org if you have any questions.', errors))
-  return results
-
-
-def _CheckAndroidNewMdpiAssetLocation(input_api, output_api):
-  """Checks if MDPI assets are placed in a correct directory."""
-  file_filter = lambda f: (f.LocalPath().endswith('.png') and
-                           ('/res/drawable/' in f.LocalPath() or
-                            '/res/drawable-ldrtl/' in f.LocalPath()))
-  errors = []
-  for f in input_api.AffectedFiles(include_deletes=False,
-                                   file_filter=file_filter):
-    errors.append('    %s' % f.LocalPath())
-
-  results = []
-  if errors:
-    results.append(output_api.PresubmitError(
-        'MDPI assets should be placed in /res/drawable-mdpi/ or '
-        '/res/drawable-ldrtl-mdpi/\ninstead of /res/drawable/ and'
-        '/res/drawable-ldrtl/.\n'
-        'Contact newt@chromium.org if you have questions.', errors))
-  return results
-
-
-class PydepsChecker(object):
-  def __init__(self, input_api, pydeps_files):
-    self._file_cache = {}
-    self._input_api = input_api
-    self._pydeps_files = pydeps_files
-
-  def _LoadFile(self, path):
-    """Returns the list of paths within a .pydeps file relative to //."""
-    if path not in self._file_cache:
-      with open(path) as f:
-        self._file_cache[path] = f.read()
-    return self._file_cache[path]
-
-  def _ComputeNormalizedPydepsEntries(self, pydeps_path):
-    """Returns an interable of paths within the .pydep, relativized to //."""
-    os_path = self._input_api.os_path
-    pydeps_dir = os_path.dirname(pydeps_path)
-    entries = (l.rstrip() for l in self._LoadFile(pydeps_path).splitlines()
-               if not l.startswith('*'))
-    return (os_path.normpath(os_path.join(pydeps_dir, e)) for e in entries)
-
-  def _CreateFilesToPydepsMap(self):
-    """Returns a map of local_path -> list_of_pydeps."""
-    ret = {}
-    for pydep_local_path in self._pydeps_files:
-      for path in self._ComputeNormalizedPydepsEntries(pydep_local_path):
-        ret.setdefault(path, []).append(pydep_local_path)
-    return ret
-
-  def ComputeAffectedPydeps(self):
-    """Returns an iterable of .pydeps files that might need regenerating."""
-    affected_pydeps = set()
-    file_to_pydeps_map = None
-    for f in self._input_api.AffectedFiles(include_deletes=True):
-      local_path = f.LocalPath()
-      if local_path  == 'DEPS':
-        return self._pydeps_files
-      elif local_path.endswith('.pydeps'):
-        if local_path in self._pydeps_files:
-          affected_pydeps.add(local_path)
-      elif local_path.endswith('.py'):
-        if file_to_pydeps_map is None:
-          file_to_pydeps_map = self._CreateFilesToPydepsMap()
-        affected_pydeps.update(file_to_pydeps_map.get(local_path, ()))
-    return affected_pydeps
-
-  def DetermineIfStale(self, pydeps_path):
-    """Runs print_python_deps.py to see if the files is stale."""
-    import difflib
-    old_pydeps_data = self._LoadFile(pydeps_path).splitlines()
-    cmd = old_pydeps_data[1][1:].strip()
-    new_pydeps_data = self._input_api.subprocess.check_output(
-        cmd  + ' --output ""', shell=True)
-    old_contents = old_pydeps_data[2:]
-    new_contents = new_pydeps_data.splitlines()[2:]
-    if old_pydeps_data[2:] != new_pydeps_data.splitlines()[2:]:
-      return cmd, '\n'.join(difflib.context_diff(old_contents, new_contents))
-
-
-def _CheckPydepsNeedsUpdating(input_api, output_api, checker_for_tests=None):
-  """Checks if a .pydeps file needs to be regenerated."""
-  # This check is mainly for Android, and involves paths not only in the
-  # PRESUBMIT.py, but also in the .pydeps files. It doesn't work on Windows and
-  # Mac, so skip it on other platforms.
-  if input_api.platform != 'linux2':
-    return []
-  # TODO(agrieve): Update when there's a better way to detect this: crbug/570091
-  is_android = input_api.os_path.exists('third_party/android_tools')
-  pydeps_files = _ALL_PYDEPS_FILES if is_android else _GENERIC_PYDEPS_FILES
-  results = []
-  # First, check for new / deleted .pydeps.
-  for f in input_api.AffectedFiles(include_deletes=True):
-    if f.LocalPath().endswith('.pydeps'):
-      if f.Action() == 'D' and f.LocalPath() in _ALL_PYDEPS_FILES:
-        results.append(output_api.PresubmitError(
-            'Please update _ALL_PYDEPS_FILES within //PRESUBMIT.py to '
-            'remove %s' % f.LocalPath()))
-      elif f.Action() != 'D' and f.LocalPath() not in _ALL_PYDEPS_FILES:
-        results.append(output_api.PresubmitError(
-            'Please update _ALL_PYDEPS_FILES within //PRESUBMIT.py to '
-            'include %s' % f.LocalPath()))
-
-  if results:
-    return results
-
-  checker = checker_for_tests or PydepsChecker(input_api, pydeps_files)
-
-  for pydep_path in checker.ComputeAffectedPydeps():
-    try:
-      result = checker.DetermineIfStale(pydep_path)
-      if result:
-        cmd, diff = result
-        results.append(output_api.PresubmitError(
-            'File is stale: %s\nDiff (apply to fix):\n%s\n'
-            'To regenerate, run:\n\n    %s' %
-            (pydep_path, diff, cmd)))
-    except input_api.subprocess.CalledProcessError as error:
-      return [output_api.PresubmitError('Error running: %s' % error.cmd,
-          long_text=error.output)]
-
-  return results
-
-
-def _CheckSingletonInHeaders(input_api, output_api):
-  """Checks to make sure no header files have |Singleton<|."""
-  def FileFilter(affected_file):
-    # It's ok for base/memory/singleton.h to have |Singleton<|.
-    black_list = (_EXCLUDED_PATHS +
-                  input_api.DEFAULT_BLACK_LIST +
-                  (r"^base[\\\/]memory[\\\/]singleton\.h$",))
-    return input_api.FilterSourceFile(affected_file, black_list=black_list)
-
-  pattern = input_api.re.compile(r'(?<!class\sbase::)Singleton\s*<')
-  files = []
-  for f in input_api.AffectedSourceFiles(FileFilter):
-    if (f.LocalPath().endswith('.h') or f.LocalPath().endswith('.hxx') or
-        f.LocalPath().endswith('.hpp') or f.LocalPath().endswith('.inl')):
-      contents = input_api.ReadFile(f)
-      for line in contents.splitlines(False):
-        if (not line.lstrip().startswith('//') and # Strip C++ comment.
-            pattern.search(line)):
-          files.append(f)
-          break
-
-  if files:
-    return [output_api.PresubmitError(
-        'Found base::Singleton<T> in the following header files.\n' +
-        'Please move them to an appropriate source file so that the ' +
-        'template gets instantiated in a single compilation unit.',
-        files) ]
-  return []
-
-
-def _CheckNoDeprecatedCompiledResourcesGyp(input_api, output_api):
-  """Checks for old style compiled_resources.gyp files."""
-  is_compiled_resource = lambda fp: fp.endswith('compiled_resources.gyp')
-
-  added_compiled_resources = filter(is_compiled_resource, [
-    f.LocalPath() for f in input_api.AffectedFiles() if f.Action() == 'A'
-  ])
-
-  if not added_compiled_resources:
-    return []
-
-  return [output_api.PresubmitError(
-      "Found new compiled_resources.gyp files:\n%s\n\n"
-      "compiled_resources.gyp files are deprecated,\n"
-      "please use compiled_resources2.gyp instead:\n"
-      "https://chromium.googlesource.com/chromium/src/+/master/docs/closure_compilation.md"
-      %
-      "\n".join(added_compiled_resources))]
-
-
-_DEPRECATED_CSS = [
-  # Values
-  ( "-webkit-box", "flex" ),
-  ( "-webkit-inline-box", "inline-flex" ),
-  ( "-webkit-flex", "flex" ),
-  ( "-webkit-inline-flex", "inline-flex" ),
-  ( "-webkit-min-content", "min-content" ),
-  ( "-webkit-max-content", "max-content" ),
-
-  # Properties
-  ( "-webkit-background-clip", "background-clip" ),
-  ( "-webkit-background-origin", "background-origin" ),
-  ( "-webkit-background-size", "background-size" ),
-  ( "-webkit-box-shadow", "box-shadow" ),
-  ( "-webkit-user-select", "user-select" ),
-
-  # Functions
-  ( "-webkit-gradient", "gradient" ),
-  ( "-webkit-repeating-gradient", "repeating-gradient" ),
-  ( "-webkit-linear-gradient", "linear-gradient" ),
-  ( "-webkit-repeating-linear-gradient", "repeating-linear-gradient" ),
-  ( "-webkit-radial-gradient", "radial-gradient" ),
-  ( "-webkit-repeating-radial-gradient", "repeating-radial-gradient" ),
-]
-
-def _CheckNoDeprecatedCss(input_api, output_api):
-  """ Make sure that we don't use deprecated CSS
-      properties, functions or values. Our external
-      documentation and iOS CSS for dom distiller
-      (reader mode) are ignored by the hooks as it
-      needs to be consumed by WebKit. """
-  results = []
-  file_inclusion_pattern = (r".+\.css$",)
-  black_list = (_EXCLUDED_PATHS +
-                _TEST_CODE_EXCLUDED_PATHS +
-                input_api.DEFAULT_BLACK_LIST +
-                (r"^chrome/common/extensions/docs",
-                 r"^chrome/docs",
-                 r"^components/dom_distiller/core/css/distilledpage_ios.css",
-                 r"^components/flags_ui/resources/apple_flags.css",
-                 r"^components/neterror/resources/neterror.css",
-                 r"^native_client_sdk"))
-  file_filter = lambda f: input_api.FilterSourceFile(
-      f, white_list=file_inclusion_pattern, black_list=black_list)
-  for fpath in input_api.AffectedFiles(file_filter=file_filter):
-    for line_num, line in fpath.ChangedContents():
-      for (deprecated_value, value) in _DEPRECATED_CSS:
-        if deprecated_value in line:
-          results.append(output_api.PresubmitError(
-              "%s:%d: Use of deprecated CSS %s, use %s instead" %
-              (fpath.LocalPath(), line_num, deprecated_value, value)))
-  return results
-
-
-_DEPRECATED_JS = [
-  ( "__lookupGetter__", "Object.getOwnPropertyDescriptor" ),
-  ( "__defineGetter__", "Object.defineProperty" ),
-  ( "__defineSetter__", "Object.defineProperty" ),
-]
-
-def _CheckNoDeprecatedJs(input_api, output_api):
-  """Make sure that we don't use deprecated JS in Chrome code."""
-  results = []
-  file_inclusion_pattern = (r".+\.js$",)  # TODO(dbeam): .html?
-  black_list = (_EXCLUDED_PATHS + _TEST_CODE_EXCLUDED_PATHS +
-                input_api.DEFAULT_BLACK_LIST)
-  file_filter = lambda f: input_api.FilterSourceFile(
-      f, white_list=file_inclusion_pattern, black_list=black_list)
-  for fpath in input_api.AffectedFiles(file_filter=file_filter):
-    for lnum, line in fpath.ChangedContents():
-      for (deprecated, replacement) in _DEPRECATED_JS:
-        if deprecated in line:
-          results.append(output_api.PresubmitError(
-              "%s:%d: Use of deprecated JS %s, use %s instead" %
-              (fpath.LocalPath(), lnum, deprecated, replacement)))
-  return results
-
-
-def _CheckForRiskyJsFeatures(input_api, output_api):
-  maybe_ios_js = (r"^(ios|components|ui\/webui\/resources)\/.+\.js$", )
-  file_filter = lambda f: input_api.FilterSourceFile(f, white_list=maybe_ios_js)
-
-  arrow_lines = []
-  for f in input_api.AffectedFiles(file_filter=file_filter):
-    for lnum, line in f.ChangedContents():
-      if ' => ' in line:
-        arrow_lines.append((f.LocalPath(), lnum))
-
-  if not arrow_lines:
-    return []
-
-  return [output_api.PresubmitPromptWarning("""
-Use of => operator detected in:
-%s
-Please ensure your code does not run on iOS9 (=> (arrow) does not work there).
-https://chromium.googlesource.com/chromium/src/+/master/docs/es6_chromium.md#Arrow-Functions
-""" % "\n".join("  %s:%d\n" % line for line in arrow_lines))]
-
-
-def _AndroidSpecificOnUploadChecks(input_api, output_api):
-  """Groups checks that target android code."""
-  results = []
-  results.extend(_CheckAndroidCrLogUsage(input_api, output_api))
-  results.extend(_CheckAndroidNewMdpiAssetLocation(input_api, output_api))
-  results.extend(_CheckAndroidToastUsage(input_api, output_api))
-  results.extend(_CheckAndroidTestAnnotationUsage(input_api, output_api))
-  return results
-
-
-def _CommonChecks(input_api, output_api):
-  """Checks common to both upload and commit."""
-  results = []
-  results.extend(input_api.canned_checks.PanProjectChecks(
-      input_api, output_api,
-      excluded_paths=_EXCLUDED_PATHS))
-  results.extend(
-      input_api.canned_checks.CheckAuthorizedAuthor(input_api, output_api))
-  results.extend(
-      _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api))
-  results.extend(_CheckNoIOStreamInHeaders(input_api, output_api))
-  results.extend(_CheckNoUNIT_TESTInSourceFiles(input_api, output_api))
-  results.extend(_CheckDCHECK_IS_ONHasBraces(input_api, output_api))
-  results.extend(_CheckNoNewWStrings(input_api, output_api))
-  results.extend(_CheckNoDEPSGIT(input_api, output_api))
-  results.extend(_CheckNoBannedFunctions(input_api, output_api))
-  results.extend(_CheckNoPragmaOnce(input_api, output_api))
-  results.extend(_CheckNoTrinaryTrueFalse(input_api, output_api))
-  results.extend(_CheckUnwantedDependencies(input_api, output_api))
-  results.extend(_CheckFilePermissions(input_api, output_api))
-  results.extend(_CheckTeamTags(input_api, output_api))
-  results.extend(_CheckNoAuraWindowPropertyHInHeaders(input_api, output_api))
-  results.extend(_CheckIncludeOrder(input_api, output_api))
-  results.extend(_CheckForVersionControlConflicts(input_api, output_api))
-  results.extend(_CheckPatchFiles(input_api, output_api))
-  results.extend(_CheckHardcodedGoogleHostsInLowerLayers(input_api, output_api))
-  results.extend(_CheckNoAbbreviationInPngFileName(input_api, output_api))
-  results.extend(_CheckForInvalidOSMacros(input_api, output_api))
-  results.extend(_CheckForInvalidIfDefinedMacros(input_api, output_api))
-  results.extend(_CheckFlakyTestUsage(input_api, output_api))
-  results.extend(_CheckAddedDepsHaveTargetApprovals(input_api, output_api))
-  results.extend(
-      input_api.canned_checks.CheckChangeHasNoTabs(
-          input_api,
-          output_api,
-          source_file_filter=lambda x: x.LocalPath().endswith('.grd')))
-  results.extend(_CheckSpamLogging(input_api, output_api))
-  results.extend(_CheckForAnonymousVariables(input_api, output_api))
-  results.extend(_CheckCygwinShell(input_api, output_api))
-  results.extend(_CheckUserActionUpdate(input_api, output_api))
-  results.extend(_CheckNoDeprecatedCss(input_api, output_api))
-  results.extend(_CheckNoDeprecatedJs(input_api, output_api))
-  results.extend(_CheckParseErrors(input_api, output_api))
-  results.extend(_CheckForIPCRules(input_api, output_api))
-  results.extend(_CheckForWindowsLineEndings(input_api, output_api))
-  results.extend(_CheckSingletonInHeaders(input_api, output_api))
-  results.extend(_CheckNoDeprecatedCompiledResourcesGyp(input_api, output_api))
-  results.extend(_CheckPydepsNeedsUpdating(input_api, output_api))
-  results.extend(_CheckJavaStyle(input_api, output_api))
-  results.extend(_CheckIpcOwners(input_api, output_api))
-  results.extend(_CheckUselessForwardDeclarations(input_api, output_api))
-  results.extend(_CheckForRiskyJsFeatures(input_api, output_api))
-
-  if any('PRESUBMIT.py' == f.LocalPath() for f in input_api.AffectedFiles()):
-    results.extend(input_api.canned_checks.RunUnitTestsInDirectory(
-        input_api, output_api,
-        input_api.PresubmitLocalPath(),
-        whitelist=[r'^PRESUBMIT_test\.py$']))
-  return results
-
-
-def _CheckPatchFiles(input_api, output_api):
-  problems = [f.LocalPath() for f in input_api.AffectedFiles()
-      if f.LocalPath().endswith(('.orig', '.rej'))]
-  if problems:
-    return [output_api.PresubmitError(
-        "Don't commit .rej and .orig files.", problems)]
-  else:
-    return []
-
-
-def _DidYouMeanOSMacro(bad_macro):
-  try:
-    return {'A': 'OS_ANDROID',
-            'B': 'OS_BSD',
-            'C': 'OS_CHROMEOS',
-            'F': 'OS_FREEBSD',
-            'L': 'OS_LINUX',
-            'M': 'OS_MACOSX',
-            'N': 'OS_NACL',
-            'O': 'OS_OPENBSD',
-            'P': 'OS_POSIX',
-            'S': 'OS_SOLARIS',
-            'W': 'OS_WIN'}[bad_macro[3].upper()]
-  except KeyError:
-    return ''
-
-
-def _CheckForInvalidOSMacrosInFile(input_api, f):
-  """Check for sensible looking, totally invalid OS macros."""
-  preprocessor_statement = input_api.re.compile(r'^\s*#')
-  os_macro = input_api.re.compile(r'defined\((OS_[^)]+)\)')
-  results = []
-  for lnum, line in f.ChangedContents():
-    if preprocessor_statement.search(line):
-      for match in os_macro.finditer(line):
-        if not match.group(1) in _VALID_OS_MACROS:
-          good = _DidYouMeanOSMacro(match.group(1))
-          did_you_mean = ' (did you mean %s?)' % good if good else ''
-          results.append('    %s:%d %s%s' % (f.LocalPath(),
-                                             lnum,
-                                             match.group(1),
-                                             did_you_mean))
-  return results
-
-
-def _CheckForInvalidOSMacros(input_api, output_api):
-  """Check all affected files for invalid OS macros."""
-  bad_macros = []
-  for f in input_api.AffectedFiles():
-    if not f.LocalPath().endswith(('.py', '.js', '.html', '.css', '.md')):
-      bad_macros.extend(_CheckForInvalidOSMacrosInFile(input_api, f))
-
-  if not bad_macros:
-    return []
-
-  return [output_api.PresubmitError(
-      'Possibly invalid OS macro[s] found. Please fix your code\n'
-      'or add your macro to src/PRESUBMIT.py.', bad_macros)]
-
-
-def _CheckForInvalidIfDefinedMacrosInFile(input_api, f):
-  """Check all affected files for invalid "if defined" macros."""
-  ALWAYS_DEFINED_MACROS = (
-      "TARGET_CPU_PPC",
-      "TARGET_CPU_PPC64",
-      "TARGET_CPU_68K",
-      "TARGET_CPU_X86",
-      "TARGET_CPU_ARM",
-      "TARGET_CPU_MIPS",
-      "TARGET_CPU_SPARC",
-      "TARGET_CPU_ALPHA",
-      "TARGET_IPHONE_SIMULATOR",
-      "TARGET_OS_EMBEDDED",
-      "TARGET_OS_IPHONE",
-      "TARGET_OS_MAC",
-      "TARGET_OS_UNIX",
-      "TARGET_OS_WIN32",
-  )
-  ifdef_macro = input_api.re.compile(r'^\s*#.*(?:ifdef\s|defined\()([^\s\)]+)')
-  results = []
-  for lnum, line in f.ChangedContents():
-    for match in ifdef_macro.finditer(line):
-      if match.group(1) in ALWAYS_DEFINED_MACROS:
-        always_defined = ' %s is always defined. ' % match.group(1)
-        did_you_mean = 'Did you mean \'#if %s\'?' % match.group(1)
-        results.append('    %s:%d %s\n\t%s' % (f.LocalPath(),
-                                               lnum,
-                                               always_defined,
-                                               did_you_mean))
-  return results
-
-
-def _CheckForInvalidIfDefinedMacros(input_api, output_api):
-  """Check all affected files for invalid "if defined" macros."""
-  bad_macros = []
-  for f in input_api.AffectedFiles():
-    if f.LocalPath().endswith(('.h', '.c', '.cc', '.m', '.mm')):
-      bad_macros.extend(_CheckForInvalidIfDefinedMacrosInFile(input_api, f))
-
-  if not bad_macros:
-    return []
-
-  return [output_api.PresubmitError(
-      'Found ifdef check on always-defined macro[s]. Please fix your code\n'
-      'or check the list of ALWAYS_DEFINED_MACROS in src/PRESUBMIT.py.',
-      bad_macros)]
-
-
-def _CheckForIPCRules(input_api, output_api):
-  """Check for same IPC rules described in
-  http://www.chromium.org/Home/chromium-security/education/security-tips-for-ipc
-  """
-  base_pattern = r'IPC_ENUM_TRAITS\('
-  inclusion_pattern = input_api.re.compile(r'(%s)' % base_pattern)
-  comment_pattern = input_api.re.compile(r'//.*(%s)' % base_pattern)
-
-  problems = []
-  for f in input_api.AffectedSourceFiles(None):
-    local_path = f.LocalPath()
-    if not local_path.endswith('.h'):
-      continue
-    for line_number, line in f.ChangedContents():
-      if inclusion_pattern.search(line) and not comment_pattern.search(line):
-        problems.append(
-          '%s:%d\n    %s' % (local_path, line_number, line.strip()))
-
-  if problems:
-    return [output_api.PresubmitPromptWarning(
-        _IPC_ENUM_TRAITS_DEPRECATED, problems)]
-  else:
-    return []
-
-
-def _CheckForWindowsLineEndings(input_api, output_api):
-  """Check source code and known ascii text files for Windows style line
-  endings.
-  """
-  known_text_files = r'.*\.(txt|html|htm|mhtml|py|gyp|gypi|gn|isolate)$'
-
-  file_inclusion_pattern = (
-    known_text_files,
-    r'.+%s' % _IMPLEMENTATION_EXTENSIONS
-  )
-
-  filter = lambda f: input_api.FilterSourceFile(
-    f, white_list=file_inclusion_pattern, black_list=None)
-  files = [f.LocalPath() for f in
-           input_api.AffectedSourceFiles(filter)]
-
-  problems = []
-
-  for file in files:
-    fp = open(file, 'r')
-    for line in fp:
-      if line.endswith('\r\n'):
-        problems.append(file)
-        break
-    fp.close()
-
-  if problems:
-    return [output_api.PresubmitPromptWarning('Are you sure that you want '
-        'these files to contain Windows style line endings?\n' +
-        '\n'.join(problems))]
-
-  return []
-
-
-def _CheckSyslogUseWarning(input_api, output_api, source_file_filter=None,
-                           lint_filters=None, verbose_level=None):
-  """Checks that all source files use SYSLOG properly."""
-  syslog_files = []
-  for f in input_api.AffectedSourceFiles(source_file_filter):
-    for line_number, line in f.ChangedContents():
-      if 'SYSLOG' in line:
-        syslog_files.append(f.LocalPath() + ':' + str(line_number))
-
-  if syslog_files:
-    return [output_api.PresubmitPromptWarning(
-        'Please make sure there are no privacy sensitive bits of data in SYSLOG'
-        ' calls.\nFiles to check:\n', items=syslog_files)]
-  return []
-
-
-def CheckChangeOnUpload(input_api, output_api):
-  results = []
-  results.extend(_CommonChecks(input_api, output_api))
-  results.extend(_CheckValidHostsInDEPS(input_api, output_api))
-  results.extend(
-      input_api.canned_checks.CheckPatchFormatted(input_api, output_api))
-  results.extend(
-      input_api.canned_checks.CheckGNFormatted(input_api, output_api))
-  results.extend(_CheckUmaHistogramChanges(input_api, output_api))
-  results.extend(_AndroidSpecificOnUploadChecks(input_api, output_api))
-  results.extend(_CheckSyslogUseWarning(input_api, output_api))
-  results.extend(_CheckGoogleSupportAnswerUrl(input_api, output_api))
-  return results
-
-
-def GetTryServerMasterForBot(bot):
-  """Returns the Try Server master for the given bot.
-
-  It tries to guess the master from the bot name, but may still fail
-  and return None.  There is no longer a default master.
-  """
-  # Potentially ambiguous bot names are listed explicitly.
-  master_map = {
-      'chromium_presubmit': 'master.tryserver.chromium.linux',
-      'tools_build_presubmit': 'master.tryserver.chromium.linux',
-  }
-  master = master_map.get(bot)
-  if not master:
-    if 'android' in bot:
-      master = 'master.tryserver.chromium.android'
-    elif 'linux' in bot or 'presubmit' in bot:
-      master = 'master.tryserver.chromium.linux'
-    elif 'win' in bot:
-      master = 'master.tryserver.chromium.win'
-    elif 'mac' in bot or 'ios' in bot:
-      master = 'master.tryserver.chromium.mac'
-  return master
-
-
-def GetDefaultTryConfigs(bots):
-  """Returns a list of ('bot', set(['tests']), filtered by [bots].
-  """
-
-  builders_and_tests = dict((bot, set(['defaulttests'])) for bot in bots)
-
-  # Build up the mapping from tryserver master to bot/test.
-  out = dict()
-  for bot, tests in builders_and_tests.iteritems():
-    out.setdefault(GetTryServerMasterForBot(bot), {})[bot] = tests
-  return out
-
-
-def CheckChangeOnCommit(input_api, output_api):
-  results = []
-  results.extend(_CommonChecks(input_api, output_api))
-  # Make sure the tree is 'open'.
-  results.extend(input_api.canned_checks.CheckTreeIsOpen(
-      input_api,
-      output_api,
-      json_url='http://chromium-status.appspot.com/current?format=json'))
-
-  results.extend(
-      input_api.canned_checks.CheckPatchFormatted(input_api, output_api))
-  results.extend(input_api.canned_checks.CheckChangeHasBugField(
-      input_api, output_api))
-  results.extend(input_api.canned_checks.CheckChangeHasDescription(
-      input_api, output_api))
-  return results
diff --git a/PRESUBMIT_test.py b/PRESUBMIT_test.py
deleted file mode 100755
index 7f3ee91..0000000
--- a/PRESUBMIT_test.py
+++ /dev/null
@@ -1,1305 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import re
-import subprocess
-import unittest
-
-import PRESUBMIT
-from PRESUBMIT_test_mocks import MockChange, MockFile, MockAffectedFile
-from PRESUBMIT_test_mocks import MockInputApi, MockOutputApi
-
-_TEST_DATA_DIR = 'base/test/data/presubmit'
-
-class IncludeOrderTest(unittest.TestCase):
-  def testSystemHeaderOrder(self):
-    scope = [(1, '#include <csystem.h>'),
-             (2, '#include <cppsystem>'),
-             (3, '#include "acustom.h"')]
-    all_linenums = [linenum for (linenum, _) in scope]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', all_linenums)
-    self.assertEqual(0, len(warnings))
-
-  def testSystemHeaderOrderMismatch1(self):
-    scope = [(10, '#include <cppsystem>'),
-             (20, '#include <csystem.h>'),
-             (30, '#include "acustom.h"')]
-    all_linenums = [linenum for (linenum, _) in scope]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', all_linenums)
-    self.assertEqual(1, len(warnings))
-    self.assertTrue('20' in warnings[0])
-
-  def testSystemHeaderOrderMismatch2(self):
-    scope = [(10, '#include <cppsystem>'),
-             (20, '#include "acustom.h"'),
-             (30, '#include <csystem.h>')]
-    all_linenums = [linenum for (linenum, _) in scope]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', all_linenums)
-    self.assertEqual(1, len(warnings))
-    self.assertTrue('30' in warnings[0])
-
-  def testSystemHeaderOrderMismatch3(self):
-    scope = [(10, '#include "acustom.h"'),
-             (20, '#include <csystem.h>'),
-             (30, '#include <cppsystem>')]
-    all_linenums = [linenum for (linenum, _) in scope]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', all_linenums)
-    self.assertEqual(2, len(warnings))
-    self.assertTrue('20' in warnings[0])
-    self.assertTrue('30' in warnings[1])
-
-  def testAlphabeticalOrderMismatch(self):
-    scope = [(10, '#include <csystem.h>'),
-             (15, '#include <bsystem.h>'),
-             (20, '#include <cppsystem>'),
-             (25, '#include <bppsystem>'),
-             (30, '#include "bcustom.h"'),
-             (35, '#include "acustom.h"')]
-    all_linenums = [linenum for (linenum, _) in scope]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', all_linenums)
-    self.assertEqual(3, len(warnings))
-    self.assertTrue('15' in warnings[0])
-    self.assertTrue('25' in warnings[1])
-    self.assertTrue('35' in warnings[2])
-
-  def testSpecialFirstInclude1(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "some/path/foo.h"',
-                '#include "a/header.h"']
-    mock_file = MockFile('some/path/foo.cc', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testSpecialFirstInclude2(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "some/other/path/foo.h"',
-                '#include "a/header.h"']
-    mock_file = MockFile('some/path/foo.cc', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testSpecialFirstInclude3(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "some/path/foo.h"',
-                '#include "a/header.h"']
-    mock_file = MockFile('some/path/foo_platform.cc', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testSpecialFirstInclude4(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "some/path/bar.h"',
-                '#include "a/header.h"']
-    mock_file = MockFile('some/path/foo_platform.cc', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(1, len(warnings))
-    self.assertTrue('2' in warnings[0])
-
-  def testSpecialFirstInclude5(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "some/other/path/foo.h"',
-                '#include "a/header.h"']
-    mock_file = MockFile('some/path/foo-suffix.h', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testSpecialFirstInclude6(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "some/other/path/foo_win.h"',
-                '#include <set>',
-                '#include "a/header.h"']
-    mock_file = MockFile('some/path/foo_unittest_win.h', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testOrderAlreadyWrong(self):
-    scope = [(1, '#include "b.h"'),
-             (2, '#include "a.h"'),
-             (3, '#include "c.h"')]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', [3])
-    self.assertEqual(0, len(warnings))
-
-  def testConflictAdded1(self):
-    scope = [(1, '#include "a.h"'),
-             (2, '#include "c.h"'),
-             (3, '#include "b.h"')]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', [2])
-    self.assertEqual(1, len(warnings))
-    self.assertTrue('3' in warnings[0])
-
-  def testConflictAdded2(self):
-    scope = [(1, '#include "c.h"'),
-             (2, '#include "b.h"'),
-             (3, '#include "d.h"')]
-    mock_input_api = MockInputApi()
-    warnings = PRESUBMIT._CheckIncludeOrderForScope(scope, mock_input_api,
-                                                    '', [2])
-    self.assertEqual(1, len(warnings))
-    self.assertTrue('2' in warnings[0])
-
-  def testIfElifElseEndif(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include "e.h"',
-                '#define foo',
-                '#include "f.h"',
-                '#undef foo',
-                '#include "e.h"',
-                '#if foo',
-                '#include "d.h"',
-                '#elif bar',
-                '#include "c.h"',
-                '#else',
-                '#include "b.h"',
-                '#endif',
-                '#include "a.h"']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testExcludedIncludes(self):
-    # #include <sys/...>'s can appear in any order.
-    mock_input_api = MockInputApi()
-    contents = ['#include <sys/b.h>',
-                '#include <sys/a.h>']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-    contents = ['#include <atlbase.h>',
-                '#include <aaa.h>']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-    contents = ['#include "build/build_config.h"',
-                '#include "aaa.h"']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(0, len(warnings))
-
-  def testCheckOnlyCFiles(self):
-    mock_input_api = MockInputApi()
-    mock_output_api = MockOutputApi()
-    contents = ['#include <b.h>',
-                '#include <a.h>']
-    mock_file_cc = MockFile('something.cc', contents)
-    mock_file_h = MockFile('something.h', contents)
-    mock_file_other = MockFile('something.py', contents)
-    mock_input_api.files = [mock_file_cc, mock_file_h, mock_file_other]
-    warnings = PRESUBMIT._CheckIncludeOrder(mock_input_api, mock_output_api)
-    self.assertEqual(1, len(warnings))
-    self.assertEqual(2, len(warnings[0].items))
-    self.assertEqual('promptOrNotify', warnings[0].type)
-
-  def testUncheckableIncludes(self):
-    mock_input_api = MockInputApi()
-    contents = ['#include <windows.h>',
-                '#include "b.h"',
-                '#include "a.h"']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(1, len(warnings))
-
-    contents = ['#include "gpu/command_buffer/gles_autogen.h"',
-                '#include "b.h"',
-                '#include "a.h"']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(1, len(warnings))
-
-    contents = ['#include "gl_mock_autogen.h"',
-                '#include "b.h"',
-                '#include "a.h"']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(1, len(warnings))
-
-    contents = ['#include "ipc/some_macros.h"',
-                '#include "b.h"',
-                '#include "a.h"']
-    mock_file = MockFile('', contents)
-    warnings = PRESUBMIT._CheckIncludeOrderInFile(
-        mock_input_api, mock_file, range(1, len(contents) + 1))
-    self.assertEqual(1, len(warnings))
-
-
-class VersionControlConflictsTest(unittest.TestCase):
-  def testTypicalConflict(self):
-    lines = ['<<<<<<< HEAD',
-             '  base::ScopedTempDir temp_dir_;',
-             '=======',
-             '  ScopedTempDir temp_dir_;',
-             '>>>>>>> master']
-    errors = PRESUBMIT._CheckForVersionControlConflictsInFile(
-        MockInputApi(), MockFile('some/path/foo_platform.cc', lines))
-    self.assertEqual(3, len(errors))
-    self.assertTrue('1' in errors[0])
-    self.assertTrue('3' in errors[1])
-    self.assertTrue('5' in errors[2])
-
-  def testIgnoresReadmes(self):
-    lines = ['A First Level Header',
-             '====================',
-             '',
-             'A Second Level Header',
-             '---------------------']
-    errors = PRESUBMIT._CheckForVersionControlConflictsInFile(
-        MockInputApi(), MockFile('some/polymer/README.md', lines))
-    self.assertEqual(0, len(errors))
-
-class UmaHistogramChangeMatchedOrNotTest(unittest.TestCase):
-  def testTypicalCorrectlyMatchedChange(self):
-    diff_cc = ['UMA_HISTOGRAM_BOOL("Bla.Foo.Dummy", true)']
-    diff_xml = ['<histogram name="Bla.Foo.Dummy"> </histogram>']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('some/path/foo.cc', diff_cc),
-      MockFile('tools/metrics/histograms/histograms.xml', diff_xml),
-    ]
-    warnings = PRESUBMIT._CheckUmaHistogramChanges(mock_input_api,
-                                                   MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-  def testTypicalNotMatchedChange(self):
-    diff_cc = ['UMA_HISTOGRAM_BOOL("Bla.Foo.Dummy", true)']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [MockFile('some/path/foo.cc', diff_cc)]
-    warnings = PRESUBMIT._CheckUmaHistogramChanges(mock_input_api,
-                                                   MockOutputApi())
-    self.assertEqual(1, len(warnings))
-    self.assertEqual('warning', warnings[0].type)
-
-  def testTypicalNotMatchedChangeViaSuffixes(self):
-    diff_cc = ['UMA_HISTOGRAM_BOOL("Bla.Foo.Dummy", true)']
-    diff_xml = ['<histogram_suffixes name="SuperHistogram">',
-                '  <suffix name="Dummy"/>',
-                '  <affected-histogram name="Snafu.Dummy"/>',
-                '</histogram>']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('some/path/foo.cc', diff_cc),
-      MockFile('tools/metrics/histograms/histograms.xml', diff_xml),
-    ]
-    warnings = PRESUBMIT._CheckUmaHistogramChanges(mock_input_api,
-                                                   MockOutputApi())
-    self.assertEqual(1, len(warnings))
-    self.assertEqual('warning', warnings[0].type)
-
-  def testTypicalCorrectlyMatchedChangeViaSuffixes(self):
-    diff_cc = ['UMA_HISTOGRAM_BOOL("Bla.Foo.Dummy", true)']
-    diff_xml = ['<histogram_suffixes name="SuperHistogram">',
-                '  <suffix name="Dummy"/>',
-                '  <affected-histogram name="Bla.Foo"/>',
-                '</histogram>']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('some/path/foo.cc', diff_cc),
-      MockFile('tools/metrics/histograms/histograms.xml', diff_xml),
-    ]
-    warnings = PRESUBMIT._CheckUmaHistogramChanges(mock_input_api,
-                                                   MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-  def testTypicalCorrectlyMatchedChangeViaSuffixesWithSeparator(self):
-    diff_cc = ['UMA_HISTOGRAM_BOOL("Snafu_Dummy", true)']
-    diff_xml = ['<histogram_suffixes name="SuperHistogram" separator="_">',
-                '  <suffix name="Dummy"/>',
-                '  <affected-histogram name="Snafu"/>',
-                '</histogram>']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('some/path/foo.cc', diff_cc),
-      MockFile('tools/metrics/histograms/histograms.xml', diff_xml),
-    ]
-    warnings = PRESUBMIT._CheckUmaHistogramChanges(mock_input_api,
-                                                   MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-class BadExtensionsTest(unittest.TestCase):
-  def testBadRejFile(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('some/path/foo.cc', ''),
-      MockFile('some/path/foo.cc.rej', ''),
-      MockFile('some/path2/bar.h.rej', ''),
-    ]
-
-    results = PRESUBMIT._CheckPatchFiles(mock_input_api, MockOutputApi())
-    self.assertEqual(1, len(results))
-    self.assertEqual(2, len(results[0].items))
-    self.assertTrue('foo.cc.rej' in results[0].items[0])
-    self.assertTrue('bar.h.rej' in results[0].items[1])
-
-  def testBadOrigFile(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('other/path/qux.h.orig', ''),
-      MockFile('other/path/qux.h', ''),
-      MockFile('other/path/qux.cc', ''),
-    ]
-
-    results = PRESUBMIT._CheckPatchFiles(mock_input_api, MockOutputApi())
-    self.assertEqual(1, len(results))
-    self.assertEqual(1, len(results[0].items))
-    self.assertTrue('qux.h.orig' in results[0].items[0])
-
-  def testGoodFiles(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockFile('other/path/qux.h', ''),
-      MockFile('other/path/qux.cc', ''),
-    ]
-    results = PRESUBMIT._CheckPatchFiles(mock_input_api, MockOutputApi())
-    self.assertEqual(0, len(results))
-
-
-class CheckSingletonInHeadersTest(unittest.TestCase):
-  def testSingletonInArbitraryHeader(self):
-    diff_singleton_h = ['base::subtle::AtomicWord '
-                        'base::Singleton<Type, Traits, DifferentiatingType>::']
-    diff_foo_h = ['// base::Singleton<Foo> in comment.',
-                  'friend class base::Singleton<Foo>']
-    diff_foo2_h = ['  //Foo* bar = base::Singleton<Foo>::get();']
-    diff_bad_h = ['Foo* foo = base::Singleton<Foo>::get();']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [MockAffectedFile('base/memory/singleton.h',
-                                     diff_singleton_h),
-                            MockAffectedFile('foo.h', diff_foo_h),
-                            MockAffectedFile('foo2.h', diff_foo2_h),
-                            MockAffectedFile('bad.h', diff_bad_h)]
-    warnings = PRESUBMIT._CheckSingletonInHeaders(mock_input_api,
-                                                  MockOutputApi())
-    self.assertEqual(1, len(warnings))
-    self.assertEqual(2, len(warnings[0].items))
-    self.assertEqual('error', warnings[0].type)
-    self.assertTrue('Found base::Singleton<T>' in warnings[0].message)
-
-  def testSingletonInCC(self):
-    diff_cc = ['Foo* foo = base::Singleton<Foo>::get();']
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [MockAffectedFile('some/path/foo.cc', diff_cc)]
-    warnings = PRESUBMIT._CheckSingletonInHeaders(mock_input_api,
-                                                  MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-
-class CheckNoDeprecatedCompiledResourcesGypTest(unittest.TestCase):
-  def testNoDeprecatedCompiledResourcsGyp(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [MockFile('some/js/compiled_resources.gyp', [])]
-    errors = PRESUBMIT._CheckNoDeprecatedCompiledResourcesGyp(mock_input_api,
-                                                              MockOutputApi())
-    self.assertEquals(1, len(errors))
-
-    mock_input_api.files = [MockFile('some/js/compiled_resources2.gyp', [])]
-    errors = PRESUBMIT._CheckNoDeprecatedCompiledResourcesGyp(mock_input_api,
-                                                              MockOutputApi())
-    self.assertEquals(0, len(errors))
-
-
-class InvalidOSMacroNamesTest(unittest.TestCase):
-  def testInvalidOSMacroNames(self):
-    lines = ['#if defined(OS_WINDOWS)',
-             ' #elif defined(OS_WINDOW)',
-             ' # if defined(OS_MACOSX) || defined(OS_CHROME)',
-             '# else  // defined(OS_MAC)',
-             '#endif  // defined(OS_MACOS)']
-    errors = PRESUBMIT._CheckForInvalidOSMacrosInFile(
-        MockInputApi(), MockFile('some/path/foo_platform.cc', lines))
-    self.assertEqual(len(lines), len(errors))
-    self.assertTrue(':1 OS_WINDOWS' in errors[0])
-    self.assertTrue('(did you mean OS_WIN?)' in errors[0])
-
-  def testValidOSMacroNames(self):
-    lines = ['#if defined(%s)' % m for m in PRESUBMIT._VALID_OS_MACROS]
-    errors = PRESUBMIT._CheckForInvalidOSMacrosInFile(
-        MockInputApi(), MockFile('some/path/foo_platform.cc', lines))
-    self.assertEqual(0, len(errors))
-
-
-class InvalidIfDefinedMacroNamesTest(unittest.TestCase):
-  def testInvalidIfDefinedMacroNames(self):
-    lines = ['#if defined(TARGET_IPHONE_SIMULATOR)',
-             '#if !defined(TARGET_IPHONE_SIMULATOR)',
-             '#elif defined(TARGET_IPHONE_SIMULATOR)',
-             '#ifdef TARGET_IPHONE_SIMULATOR',
-             ' # ifdef TARGET_IPHONE_SIMULATOR',
-             '# if defined(VALID) || defined(TARGET_IPHONE_SIMULATOR)',
-             '# else  // defined(TARGET_IPHONE_SIMULATOR)',
-             '#endif  // defined(TARGET_IPHONE_SIMULATOR)',]
-    errors = PRESUBMIT._CheckForInvalidIfDefinedMacrosInFile(
-        MockInputApi(), MockFile('some/path/source.mm', lines))
-    self.assertEqual(len(lines), len(errors))
-
-  def testValidIfDefinedMacroNames(self):
-    lines = ['#if defined(FOO)',
-             '#ifdef BAR',]
-    errors = PRESUBMIT._CheckForInvalidIfDefinedMacrosInFile(
-        MockInputApi(), MockFile('some/path/source.cc', lines))
-    self.assertEqual(0, len(errors))
-
-
-class CheckAddedDepsHaveTetsApprovalsTest(unittest.TestCase):
-  def testFilesToCheckForIncomingDeps(self):
-    changed_lines = [
-      '"+breakpad",',
-      '"+chrome/installer",',
-      '"+chrome/plugin/chrome_content_plugin_client.h",',
-      '"+chrome/utility/chrome_content_utility_client.h",',
-      '"+chromeos/chromeos_paths.h",',
-      '"+components/crash/content",',
-      '"+components/nacl/common",',
-      '"+content/public/browser/render_process_host.h",',
-      '"+jni/fooblat.h",',
-      '"+grit",  # For generated headers',
-      '"+grit/generated_resources.h",',
-      '"+grit/",',
-      '"+policy",  # For generated headers and source',
-      '"+sandbox",',
-      '"+tools/memory_watcher",',
-      '"+third_party/lss/linux_syscall_support.h",',
-    ]
-    files_to_check = PRESUBMIT._FilesToCheckForIncomingDeps(re, changed_lines)
-    expected = set([
-      'breakpad/DEPS',
-      'chrome/installer/DEPS',
-      'chrome/plugin/chrome_content_plugin_client.h',
-      'chrome/utility/chrome_content_utility_client.h',
-      'chromeos/chromeos_paths.h',
-      'components/crash/content/DEPS',
-      'components/nacl/common/DEPS',
-      'content/public/browser/render_process_host.h',
-      'policy/DEPS',
-      'sandbox/DEPS',
-      'tools/memory_watcher/DEPS',
-      'third_party/lss/linux_syscall_support.h',
-    ])
-    self.assertEqual(expected, files_to_check);
-
-
-class JSONParsingTest(unittest.TestCase):
-  def testSuccess(self):
-    input_api = MockInputApi()
-    filename = 'valid_json.json'
-    contents = ['// This is a comment.',
-                '{',
-                '  "key1": ["value1", "value2"],',
-                '  "key2": 3  // This is an inline comment.',
-                '}'
-                ]
-    input_api.files = [MockFile(filename, contents)]
-    self.assertEqual(None,
-                     PRESUBMIT._GetJSONParseError(input_api, filename))
-
-  def testFailure(self):
-    input_api = MockInputApi()
-    test_data = [
-      ('invalid_json_1.json',
-       ['{ x }'],
-       'Expecting property name:'),
-      ('invalid_json_2.json',
-       ['// Hello world!',
-        '{ "hello": "world }'],
-       'Unterminated string starting at:'),
-      ('invalid_json_3.json',
-       ['{ "a": "b", "c": "d", }'],
-       'Expecting property name:'),
-      ('invalid_json_4.json',
-       ['{ "a": "b" "c": "d" }'],
-       'Expecting , delimiter:'),
-      ]
-
-    input_api.files = [MockFile(filename, contents)
-                       for (filename, contents, _) in test_data]
-
-    for (filename, _, expected_error) in test_data:
-      actual_error = PRESUBMIT._GetJSONParseError(input_api, filename)
-      self.assertTrue(expected_error in str(actual_error),
-                      "'%s' not found in '%s'" % (expected_error, actual_error))
-
-  def testNoEatComments(self):
-    input_api = MockInputApi()
-    file_with_comments = 'file_with_comments.json'
-    contents_with_comments = ['// This is a comment.',
-                              '{',
-                              '  "key1": ["value1", "value2"],',
-                              '  "key2": 3  // This is an inline comment.',
-                              '}'
-                              ]
-    file_without_comments = 'file_without_comments.json'
-    contents_without_comments = ['{',
-                                 '  "key1": ["value1", "value2"],',
-                                 '  "key2": 3',
-                                 '}'
-                                 ]
-    input_api.files = [MockFile(file_with_comments, contents_with_comments),
-                       MockFile(file_without_comments,
-                                contents_without_comments)]
-
-    self.assertEqual('No JSON object could be decoded',
-                     str(PRESUBMIT._GetJSONParseError(input_api,
-                                                      file_with_comments,
-                                                      eat_comments=False)))
-    self.assertEqual(None,
-                     PRESUBMIT._GetJSONParseError(input_api,
-                                                  file_without_comments,
-                                                  eat_comments=False))
-
-
-class IDLParsingTest(unittest.TestCase):
-  def testSuccess(self):
-    input_api = MockInputApi()
-    filename = 'valid_idl_basics.idl'
-    contents = ['// Tests a valid IDL file.',
-                'namespace idl_basics {',
-                '  enum EnumType {',
-                '    name1,',
-                '    name2',
-                '  };',
-                '',
-                '  dictionary MyType1 {',
-                '    DOMString a;',
-                '  };',
-                '',
-                '  callback Callback1 = void();',
-                '  callback Callback2 = void(long x);',
-                '  callback Callback3 = void(MyType1 arg);',
-                '  callback Callback4 = void(EnumType type);',
-                '',
-                '  interface Functions {',
-                '    static void function1();',
-                '    static void function2(long x);',
-                '    static void function3(MyType1 arg);',
-                '    static void function4(Callback1 cb);',
-                '    static void function5(Callback2 cb);',
-                '    static void function6(Callback3 cb);',
-                '    static void function7(Callback4 cb);',
-                '  };',
-                '',
-                '  interface Events {',
-                '    static void onFoo1();',
-                '    static void onFoo2(long x);',
-                '    static void onFoo2(MyType1 arg);',
-                '    static void onFoo3(EnumType type);',
-                '  };',
-                '};'
-                ]
-    input_api.files = [MockFile(filename, contents)]
-    self.assertEqual(None,
-                     PRESUBMIT._GetIDLParseError(input_api, filename))
-
-  def testFailure(self):
-    input_api = MockInputApi()
-    test_data = [
-      ('invalid_idl_1.idl',
-       ['//',
-        'namespace test {',
-        '  dictionary {',
-        '    DOMString s;',
-        '  };',
-        '};'],
-       'Unexpected "{" after keyword "dictionary".\n'),
-      # TODO(yoz): Disabled because it causes the IDL parser to hang.
-      # See crbug.com/363830.
-      # ('invalid_idl_2.idl',
-      #  (['namespace test {',
-      #    '  dictionary MissingSemicolon {',
-      #    '    DOMString a',
-      #    '    DOMString b;',
-      #    '  };',
-      #    '};'],
-      #   'Unexpected symbol DOMString after symbol a.'),
-      ('invalid_idl_3.idl',
-       ['//',
-        'namespace test {',
-        '  enum MissingComma {',
-        '    name1',
-        '    name2',
-        '  };',
-        '};'],
-       'Unexpected symbol name2 after symbol name1.'),
-      ('invalid_idl_4.idl',
-       ['//',
-        'namespace test {',
-        '  enum TrailingComma {',
-        '    name1,',
-        '    name2,',
-        '  };',
-        '};'],
-       'Trailing comma in block.'),
-      ('invalid_idl_5.idl',
-       ['//',
-        'namespace test {',
-        '  callback Callback1 = void(;',
-        '};'],
-       'Unexpected ";" after "(".'),
-      ('invalid_idl_6.idl',
-       ['//',
-        'namespace test {',
-        '  callback Callback1 = void(long );',
-        '};'],
-       'Unexpected ")" after symbol long.'),
-      ('invalid_idl_7.idl',
-       ['//',
-        'namespace test {',
-        '  interace Events {',
-        '    static void onFoo1();',
-        '  };',
-        '};'],
-       'Unexpected symbol Events after symbol interace.'),
-      ('invalid_idl_8.idl',
-       ['//',
-        'namespace test {',
-        '  interface NotEvent {',
-        '    static void onFoo1();',
-        '  };',
-        '};'],
-       'Did not process Interface Interface(NotEvent)'),
-      ('invalid_idl_9.idl',
-       ['//',
-        'namespace test {',
-        '  interface {',
-        '    static void function1();',
-        '  };',
-        '};'],
-       'Interface missing name.'),
-      ]
-
-    input_api.files = [MockFile(filename, contents)
-                       for (filename, contents, _) in test_data]
-
-    for (filename, _, expected_error) in test_data:
-      actual_error = PRESUBMIT._GetIDLParseError(input_api, filename)
-      self.assertTrue(expected_error in str(actual_error),
-                      "'%s' not found in '%s'" % (expected_error, actual_error))
-
-
-class TryServerMasterTest(unittest.TestCase):
-  def testTryServerMasters(self):
-    bots = {
-        'master.tryserver.chromium.android': [
-            'android_archive_rel_ng',
-            'android_arm64_dbg_recipe',
-            'android_blink_rel',
-            'android_chromium_variable',
-            'android_chromium_variable_archive',
-            'android_chromium_variable_arm64',
-            'android_chromium_variable_cast_shell',
-            'android_chromium_variable_clang',
-            'android_chromium_variable_gn',
-            'android_chromium_variable_nexus4',
-            'android_clang_dbg_recipe',
-            'android_compile_dbg',
-            'android_compile_mips_dbg',
-            'android_compile_rel',
-            'android_compile_x64_dbg',
-            'android_compile_x86_dbg',
-            'android_coverage',
-            'android_cronet_tester'
-            'android_swarming_rel',
-            'cast_shell_android',
-            'linux_android_dbg_ng',
-            'linux_android_rel_ng',
-        ],
-        'master.tryserver.chromium.mac': [
-            'ios_dbg_simulator',
-            'ios_rel_device',
-            'ios_rel_device_ninja',
-            'mac_asan',
-            'mac_asan_64',
-            'mac_chromium_compile_dbg',
-            'mac_chromium_compile_rel',
-            'mac_chromium_dbg',
-            'mac_chromium_rel',
-            'mac_nacl_sdk',
-            'mac_nacl_sdk_build',
-            'mac_rel_naclmore',
-            'mac_x64_rel',
-            'mac_xcodebuild',
-        ],
-        'master.tryserver.chromium.linux': [
-            'chromium_presubmit',
-            'linux_arm_cross_compile',
-            'linux_arm_tester',
-            'linux_chromeos_asan',
-            'linux_chromeos_browser_asan',
-            'linux_chromeos_valgrind',
-            'linux_chromium_chromeos_dbg',
-            'linux_chromium_chromeos_rel',
-            'linux_chromium_compile_dbg',
-            'linux_chromium_compile_rel',
-            'linux_chromium_dbg',
-            'linux_chromium_gn_dbg',
-            'linux_chromium_gn_rel',
-            'linux_chromium_rel',
-            'linux_chromium_trusty32_dbg',
-            'linux_chromium_trusty32_rel',
-            'linux_chromium_trusty_dbg',
-            'linux_chromium_trusty_rel',
-            'linux_clang_tsan',
-            'linux_ecs_ozone',
-            'linux_layout',
-            'linux_layout_asan',
-            'linux_layout_rel',
-            'linux_layout_rel_32',
-            'linux_nacl_sdk',
-            'linux_nacl_sdk_bionic',
-            'linux_nacl_sdk_bionic_build',
-            'linux_nacl_sdk_build',
-            'linux_redux',
-            'linux_rel_naclmore',
-            'linux_rel_precise32',
-            'linux_valgrind',
-            'tools_build_presubmit',
-        ],
-        'master.tryserver.chromium.win': [
-            'win8_aura',
-            'win8_chromium_dbg',
-            'win8_chromium_rel',
-            'win_chromium_compile_dbg',
-            'win_chromium_compile_rel',
-            'win_chromium_dbg',
-            'win_chromium_rel',
-            'win_chromium_rel',
-            'win_chromium_x64_dbg',
-            'win_chromium_x64_rel',
-            'win_nacl_sdk',
-            'win_nacl_sdk_build',
-            'win_rel_naclmore',
-         ],
-    }
-    for master, bots in bots.iteritems():
-      for bot in bots:
-        self.assertEqual(master, PRESUBMIT.GetTryServerMasterForBot(bot),
-                         'bot=%s: expected %s, computed %s' % (
-            bot, master, PRESUBMIT.GetTryServerMasterForBot(bot)))
-
-
-class UserMetricsActionTest(unittest.TestCase):
-  def testUserMetricsActionInActions(self):
-    input_api = MockInputApi()
-    file_with_user_action = 'file_with_user_action.cc'
-    contents_with_user_action = [
-      'base::UserMetricsAction("AboutChrome")'
-    ]
-
-    input_api.files = [MockFile(file_with_user_action,
-                                contents_with_user_action)]
-
-    self.assertEqual(
-      [], PRESUBMIT._CheckUserActionUpdate(input_api, MockOutputApi()))
-
-
-  def testUserMetricsActionNotAddedToActions(self):
-    input_api = MockInputApi()
-    file_with_user_action = 'file_with_user_action.cc'
-    contents_with_user_action = [
-      'base::UserMetricsAction("NotInActionsXml")'
-    ]
-
-    input_api.files = [MockFile(file_with_user_action,
-                                contents_with_user_action)]
-
-    output = PRESUBMIT._CheckUserActionUpdate(input_api, MockOutputApi())
-    self.assertEqual(
-      ('File %s line %d: %s is missing in '
-       'tools/metrics/actions/actions.xml. Please run '
-       'tools/metrics/actions/extract_actions.py to update.'
-       % (file_with_user_action, 1, 'NotInActionsXml')),
-      output[0].message)
-
-
-class PydepsNeedsUpdatingTest(unittest.TestCase):
-
-  class MockSubprocess(object):
-    CalledProcessError = subprocess.CalledProcessError
-
-  def setUp(self):
-    mock_all_pydeps = ['A.pydeps', 'B.pydeps']
-    self.old_ALL_PYDEPS_FILES = PRESUBMIT._ALL_PYDEPS_FILES
-    PRESUBMIT._ALL_PYDEPS_FILES = mock_all_pydeps
-    self.mock_input_api = MockInputApi()
-    self.mock_output_api = MockOutputApi()
-    self.mock_input_api.subprocess = PydepsNeedsUpdatingTest.MockSubprocess()
-    self.checker = PRESUBMIT.PydepsChecker(self.mock_input_api, mock_all_pydeps)
-    self.checker._file_cache = {
-        'A.pydeps': '# Generated by:\n# CMD A\nA.py\nC.py\n',
-        'B.pydeps': '# Generated by:\n# CMD B\nB.py\nC.py\n',
-    }
-
-  def tearDown(self):
-    PRESUBMIT._ALL_PYDEPS_FILES = self.old_ALL_PYDEPS_FILES
-
-  def _RunCheck(self):
-    return PRESUBMIT._CheckPydepsNeedsUpdating(self.mock_input_api,
-                                               self.mock_output_api,
-                                               checker_for_tests=self.checker)
-
-  def testAddedPydep(self):
-    # PRESUBMIT._CheckPydepsNeedsUpdating is only implemented for Android.
-    if self.mock_input_api.platform != 'linux2':
-      return []
-
-    self.mock_input_api.files = [
-      MockAffectedFile('new.pydeps', [], action='A'),
-    ]
-
-    results = self._RunCheck()
-    self.assertEqual(1, len(results))
-    self.assertTrue('PYDEPS_FILES' in str(results[0]))
-
-  def testRemovedPydep(self):
-    # PRESUBMIT._CheckPydepsNeedsUpdating is only implemented for Android.
-    if self.mock_input_api.platform != 'linux2':
-      return []
-
-    self.mock_input_api.files = [
-      MockAffectedFile(PRESUBMIT._ALL_PYDEPS_FILES[0], [], action='D'),
-    ]
-
-    results = self._RunCheck()
-    self.assertEqual(1, len(results))
-    self.assertTrue('PYDEPS_FILES' in str(results[0]))
-
-  def testRandomPyIgnored(self):
-    # PRESUBMIT._CheckPydepsNeedsUpdating is only implemented for Android.
-    if self.mock_input_api.platform != 'linux2':
-      return []
-
-    self.mock_input_api.files = [
-      MockAffectedFile('random.py', []),
-    ]
-
-    results = self._RunCheck()
-    self.assertEqual(0, len(results), 'Unexpected results: %r' % results)
-
-  def testRelevantPyNoChange(self):
-    # PRESUBMIT._CheckPydepsNeedsUpdating is only implemented for Android.
-    if self.mock_input_api.platform != 'linux2':
-      return []
-
-    self.mock_input_api.files = [
-      MockAffectedFile('A.py', []),
-    ]
-
-    def mock_check_output(cmd, shell=False):
-      self.assertEqual('CMD A --output ""', cmd)
-      return self.checker._file_cache['A.pydeps']
-
-    self.mock_input_api.subprocess.check_output = mock_check_output
-
-    results = self._RunCheck()
-    self.assertEqual(0, len(results), 'Unexpected results: %r' % results)
-
-  def testRelevantPyOneChange(self):
-    # PRESUBMIT._CheckPydepsNeedsUpdating is only implemented for Android.
-    if self.mock_input_api.platform != 'linux2':
-      return []
-
-    self.mock_input_api.files = [
-      MockAffectedFile('A.py', []),
-    ]
-
-    def mock_check_output(cmd, shell=False):
-      self.assertEqual('CMD A --output ""', cmd)
-      return 'changed data'
-
-    self.mock_input_api.subprocess.check_output = mock_check_output
-
-    results = self._RunCheck()
-    self.assertEqual(1, len(results))
-    self.assertTrue('File is stale' in str(results[0]))
-
-  def testRelevantPyTwoChanges(self):
-    # PRESUBMIT._CheckPydepsNeedsUpdating is only implemented for Android.
-    if self.mock_input_api.platform != 'linux2':
-      return []
-
-    self.mock_input_api.files = [
-      MockAffectedFile('C.py', []),
-    ]
-
-    def mock_check_output(cmd, shell=False):
-      return 'changed data'
-
-    self.mock_input_api.subprocess.check_output = mock_check_output
-
-    results = self._RunCheck()
-    self.assertEqual(2, len(results))
-    self.assertTrue('File is stale' in str(results[0]))
-    self.assertTrue('File is stale' in str(results[1]))
-
-
-class AndroidDeprecatedTestAnnotationTest(unittest.TestCase):
-  def testCheckAndroidTestAnnotationUsage(self):
-    mock_input_api = MockInputApi()
-    mock_output_api = MockOutputApi()
-
-    mock_input_api.files = [
-        MockAffectedFile('LalaLand.java', [
-          'random stuff'
-        ]),
-        MockAffectedFile('CorrectUsage.java', [
-          'import android.support.test.filters.LargeTest;',
-          'import android.support.test.filters.MediumTest;',
-          'import android.support.test.filters.SmallTest;',
-        ]),
-        MockAffectedFile('UsedDeprecatedLargeTestAnnotation.java', [
-          'import android.test.suitebuilder.annotation.LargeTest;',
-        ]),
-        MockAffectedFile('UsedDeprecatedMediumTestAnnotation.java', [
-          'import android.test.suitebuilder.annotation.MediumTest;',
-        ]),
-        MockAffectedFile('UsedDeprecatedSmallTestAnnotation.java', [
-          'import android.test.suitebuilder.annotation.SmallTest;',
-        ]),
-        MockAffectedFile('UsedDeprecatedSmokeAnnotation.java', [
-          'import android.test.suitebuilder.annotation.Smoke;',
-        ])
-    ]
-    msgs = PRESUBMIT._CheckAndroidTestAnnotationUsage(
-        mock_input_api, mock_output_api)
-    self.assertEqual(1, len(msgs),
-                     'Expected %d items, found %d: %s'
-                     % (1, len(msgs), msgs))
-    self.assertEqual(4, len(msgs[0].items),
-                     'Expected %d items, found %d: %s'
-                     % (4, len(msgs[0].items), msgs[0].items))
-    self.assertTrue('UsedDeprecatedLargeTestAnnotation.java:1' in msgs[0].items,
-                    'UsedDeprecatedLargeTestAnnotation not found in errors')
-    self.assertTrue('UsedDeprecatedMediumTestAnnotation.java:1'
-                    in msgs[0].items,
-                    'UsedDeprecatedMediumTestAnnotation not found in errors')
-    self.assertTrue('UsedDeprecatedSmallTestAnnotation.java:1' in msgs[0].items,
-                    'UsedDeprecatedSmallTestAnnotation not found in errors')
-    self.assertTrue('UsedDeprecatedSmokeAnnotation.java:1' in msgs[0].items,
-                    'UsedDeprecatedSmokeAnnotation not found in errors')
-
-
-
-class LogUsageTest(unittest.TestCase):
-
-  def testCheckAndroidCrLogUsage(self):
-    mock_input_api = MockInputApi()
-    mock_output_api = MockOutputApi()
-
-    mock_input_api.files = [
-      MockAffectedFile('RandomStuff.java', [
-        'random stuff'
-      ]),
-      MockAffectedFile('HasAndroidLog.java', [
-        'import android.util.Log;',
-        'some random stuff',
-        'Log.d("TAG", "foo");',
-      ]),
-      MockAffectedFile('HasExplicitUtilLog.java', [
-        'some random stuff',
-        'android.util.Log.d("TAG", "foo");',
-      ]),
-      MockAffectedFile('IsInBasePackage.java', [
-        'package org.chromium.base;',
-        'private static final String TAG = "cr_Foo";',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('IsInBasePackageButImportsLog.java', [
-        'package org.chromium.base;',
-        'import android.util.Log;',
-        'private static final String TAG = "cr_Foo";',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasBothLog.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "cr_Foo";',
-        'Log.d(TAG, "foo");',
-        'android.util.Log.d("TAG", "foo");',
-      ]),
-      MockAffectedFile('HasCorrectTag.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "cr_Foo";',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasOldTag.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "cr.Foo";',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasDottedTag.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "cr_foo.bar";',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasNoTagDecl.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasIncorrectTagDecl.java', [
-        'import org.chromium.base.Log;',
-        'private static final String TAHG = "cr_Foo";',
-        'some random stuff',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasInlineTag.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "cr_Foo";',
-        'Log.d("TAG", "foo");',
-      ]),
-      MockAffectedFile('HasUnprefixedTag.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "rubbish";',
-        'Log.d(TAG, "foo");',
-      ]),
-      MockAffectedFile('HasTooLongTag.java', [
-        'import org.chromium.base.Log;',
-        'some random stuff',
-        'private static final String TAG = "21_charachers_long___";',
-        'Log.d(TAG, "foo");',
-      ]),
-    ]
-
-    msgs = PRESUBMIT._CheckAndroidCrLogUsage(
-        mock_input_api, mock_output_api)
-
-    self.assertEqual(5, len(msgs),
-                     'Expected %d items, found %d: %s' % (5, len(msgs), msgs))
-
-    # Declaration format
-    nb = len(msgs[0].items)
-    self.assertEqual(2, nb,
-                     'Expected %d items, found %d: %s' % (2, nb, msgs[0].items))
-    self.assertTrue('HasNoTagDecl.java' in msgs[0].items)
-    self.assertTrue('HasIncorrectTagDecl.java' in msgs[0].items)
-
-    # Tag length
-    nb = len(msgs[1].items)
-    self.assertEqual(1, nb,
-                     'Expected %d items, found %d: %s' % (1, nb, msgs[1].items))
-    self.assertTrue('HasTooLongTag.java' in msgs[1].items)
-
-    # Tag must be a variable named TAG
-    nb = len(msgs[2].items)
-    self.assertEqual(1, nb,
-                     'Expected %d items, found %d: %s' % (1, nb, msgs[2].items))
-    self.assertTrue('HasInlineTag.java:4' in msgs[2].items)
-
-    # Util Log usage
-    nb = len(msgs[3].items)
-    self.assertEqual(2, nb,
-                     'Expected %d items, found %d: %s' % (2, nb, msgs[3].items))
-    self.assertTrue('HasAndroidLog.java:3' in msgs[3].items)
-    self.assertTrue('IsInBasePackageButImportsLog.java:4' in msgs[3].items)
-
-    # Tag must not contain
-    nb = len(msgs[4].items)
-    self.assertEqual(2, nb,
-                     'Expected %d items, found %d: %s' % (2, nb, msgs[4].items))
-    self.assertTrue('HasDottedTag.java' in msgs[4].items)
-    self.assertTrue('HasOldTag.java' in msgs[4].items)
-
-class GoogleAnswerUrlFormatTest(unittest.TestCase):
-
-  def testCatchAnswerUrlId(self):
-    input_api = MockInputApi()
-    input_api.files = [
-      MockFile('somewhere/file.cc',
-               ['char* host = '
-                '  "https://support.google.com/chrome/answer/123456";']),
-      MockFile('somewhere_else/file.cc',
-               ['char* host = '
-                '  "https://support.google.com/chrome/a/answer/123456";']),
-    ]
-
-    warnings = PRESUBMIT._CheckGoogleSupportAnswerUrl(
-      input_api, MockOutputApi())
-    self.assertEqual(1, len(warnings))
-    self.assertEqual(2, len(warnings[0].items))
-
-  def testAllowAnswerUrlParam(self):
-    input_api = MockInputApi()
-    input_api.files = [
-      MockFile('somewhere/file.cc',
-               ['char* host = '
-                '  "https://support.google.com/chrome/?p=cpn_crash_reports";']),
-    ]
-
-    warnings = PRESUBMIT._CheckGoogleSupportAnswerUrl(
-      input_api, MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-class HardcodedGoogleHostsTest(unittest.TestCase):
-
-  def testWarnOnAssignedLiterals(self):
-    input_api = MockInputApi()
-    input_api.files = [
-      MockFile('content/file.cc',
-               ['char* host = "https://www.google.com";']),
-      MockFile('content/file.cc',
-               ['char* host = "https://www.googleapis.com";']),
-      MockFile('content/file.cc',
-               ['char* host = "https://clients1.google.com";']),
-    ]
-
-    warnings = PRESUBMIT._CheckHardcodedGoogleHostsInLowerLayers(
-      input_api, MockOutputApi())
-    self.assertEqual(1, len(warnings))
-    self.assertEqual(3, len(warnings[0].items))
-
-  def testAllowInComment(self):
-    input_api = MockInputApi()
-    input_api.files = [
-      MockFile('content/file.cc',
-               ['char* host = "https://www.aol.com"; // google.com'])
-    ]
-
-    warnings = PRESUBMIT._CheckHardcodedGoogleHostsInLowerLayers(
-      input_api, MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-
-class ForwardDeclarationTest(unittest.TestCase):
-  def testCheckHeadersOnlyOutsideThirdParty(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockAffectedFile('somewhere/file.cc', [
-        'class DummyClass;'
-      ]),
-      MockAffectedFile('third_party/header.h', [
-        'class DummyClass;'
-      ])
-    ]
-    warnings = PRESUBMIT._CheckUselessForwardDeclarations(mock_input_api,
-      MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-  def testNoNestedDeclaration(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockAffectedFile('somewhere/header.h', [
-        'class SomeClass {',
-        ' protected:',
-        '  class NotAMatch;',
-        '};'
-      ])
-    ]
-    warnings = PRESUBMIT._CheckUselessForwardDeclarations(mock_input_api,
-      MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-  def testSubStrings(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockAffectedFile('somewhere/header.h', [
-        'class NotUsefulClass;',
-        'struct SomeStruct;',
-        'UsefulClass *p1;',
-        'SomeStructPtr *p2;'
-      ])
-    ]
-    warnings = PRESUBMIT._CheckUselessForwardDeclarations(mock_input_api,
-      MockOutputApi())
-    self.assertEqual(2, len(warnings))
-
-  def testUselessForwardDeclaration(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockAffectedFile('somewhere/header.h', [
-        'class DummyClass;',
-        'struct DummyStruct;',
-        'class UsefulClass;',
-        'std::unique_ptr<UsefulClass> p;'
-      ])
-    ]
-    warnings = PRESUBMIT._CheckUselessForwardDeclarations(mock_input_api,
-      MockOutputApi())
-    self.assertEqual(2, len(warnings))
-
-  def testBlinkHeaders(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockAffectedFile('third_party/WebKit/header.h', [
-        'class DummyClass;',
-        'struct DummyStruct;',
-      ]),
-      MockAffectedFile('third_party\\WebKit\\header.h', [
-        'class DummyClass;',
-        'struct DummyStruct;',
-      ])
-    ]
-    warnings = PRESUBMIT._CheckUselessForwardDeclarations(mock_input_api,
-      MockOutputApi())
-    self.assertEqual(4, len(warnings))
-
-
-class RiskyJsTest(unittest.TestCase):
-  def testArrowWarnInIos9Code(self):
-    mock_input_api = MockInputApi()
-    mock_output_api = MockOutputApi()
-
-    mock_input_api.files = [
-      MockAffectedFile('components/blah.js', ["shouldn't use => here"]),
-    ]
-    warnings = PRESUBMIT._CheckForRiskyJsFeatures(
-        mock_input_api, mock_output_api)
-    self.assertEqual(1, len(warnings))
-
-    mock_input_api.files = [
-      MockAffectedFile('ios/blee.js', ['might => break folks']),
-    ]
-    warnings = PRESUBMIT._CheckForRiskyJsFeatures(
-        mock_input_api, mock_output_api)
-    self.assertEqual(1, len(warnings))
-
-    mock_input_api.files = [
-      MockAffectedFile('ui/webui/resources/blarg.js', ['on => iOS9']),
-    ]
-    warnings = PRESUBMIT._CheckForRiskyJsFeatures(
-        mock_input_api, mock_output_api)
-    self.assertEqual(1, len(warnings))
-
-  def testArrowsAllowedInChromeCode(self):
-    mock_input_api = MockInputApi()
-    mock_input_api.files = [
-      MockAffectedFile('chrome/browser/resources/blah.js', 'arrow => OK here'),
-    ]
-    warnings = PRESUBMIT._CheckForRiskyJsFeatures(
-        mock_input_api, MockOutputApi())
-    self.assertEqual(0, len(warnings))
-
-
-if __name__ == '__main__':
-  unittest.main()
diff --git a/PRESUBMIT_test_mocks.py b/PRESUBMIT_test_mocks.py
deleted file mode 100644
index c269dee..0000000
--- a/PRESUBMIT_test_mocks.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import json
-import os
-import re
-import subprocess
-import sys
-
-
-class MockInputApi(object):
-  """Mock class for the InputApi class.
-
-  This class can be used for unittests for presubmit by initializing the files
-  attribute as the list of changed files.
-  """
-
-  def __init__(self):
-    self.json = json
-    self.re = re
-    self.os_path = os.path
-    self.platform = sys.platform
-    self.python_executable = sys.executable
-    self.platform = sys.platform
-    self.subprocess = subprocess
-    self.files = []
-    self.is_committing = False
-    self.change = MockChange([])
-
-  def AffectedFiles(self, file_filter=None, include_deletes=False):
-    return self.files
-
-  def AffectedSourceFiles(self, file_filter=None):
-    return self.files
-
-  def LocalPaths(self):
-    return self.files
-
-  def PresubmitLocalPath(self):
-    return os.path.dirname(__file__)
-
-  def ReadFile(self, filename, mode='rU'):
-    if hasattr(filename, 'AbsoluteLocalPath'):
-       filename = filename.AbsoluteLocalPath()
-    for file_ in self.files:
-      if file_.LocalPath() == filename:
-        return '\n'.join(file_.NewContents())
-    # Otherwise, file is not in our mock API.
-    raise IOError, "No such file or directory: '%s'" % filename
-
-
-class MockOutputApi(object):
-  """Mock class for the OutputApi class.
-
-  An instance of this class can be passed to presubmit unittests for outputing
-  various types of results.
-  """
-
-  class PresubmitResult(object):
-    def __init__(self, message, items=None, long_text=''):
-      self.message = message
-      self.items = items
-      self.long_text = long_text
-
-    def __repr__(self):
-      return self.message
-
-  class PresubmitError(PresubmitResult):
-    def __init__(self, message, items=None, long_text=''):
-      MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
-      self.type = 'error'
-
-  class PresubmitPromptWarning(PresubmitResult):
-    def __init__(self, message, items=None, long_text=''):
-      MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
-      self.type = 'warning'
-
-  class PresubmitNotifyResult(PresubmitResult):
-    def __init__(self, message, items=None, long_text=''):
-      MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
-      self.type = 'notify'
-
-  class PresubmitPromptOrNotify(PresubmitResult):
-    def __init__(self, message, items=None, long_text=''):
-      MockOutputApi.PresubmitResult.__init__(self, message, items, long_text)
-      self.type = 'promptOrNotify'
-
-
-class MockFile(object):
-  """Mock class for the File class.
-
-  This class can be used to form the mock list of changed files in
-  MockInputApi for presubmit unittests.
-  """
-
-  def __init__(self, local_path, new_contents, action='A'):
-    self._local_path = local_path
-    self._new_contents = new_contents
-    self._changed_contents = [(i + 1, l) for i, l in enumerate(new_contents)]
-    self._action = action
-    self._scm_diff = "--- /dev/null\n+++ %s\n@@ -0,0 +1,%d @@\n" % (local_path,
-      len(new_contents))
-    for l in new_contents:
-      self._scm_diff += "+%s\n" % l
-
-  def Action(self):
-    return self._action
-
-  def ChangedContents(self):
-    return self._changed_contents
-
-  def NewContents(self):
-    return self._new_contents
-
-  def LocalPath(self):
-    return self._local_path
-
-  def AbsoluteLocalPath(self):
-    return self._local_path
-
-  def GenerateScmDiff(self):
-    return self._scm_diff
-
-  def rfind(self, p):
-    """os.path.basename is called on MockFile so we need an rfind method."""
-    return self._local_path.rfind(p)
-
-  def __getitem__(self, i):
-    """os.path.basename is called on MockFile so we need a get method."""
-    return self._local_path[i]
-
-  def __len__(self):
-    """os.path.basename is called on MockFile so we need a len method."""
-    return len(self._local_path)
-
-
-class MockAffectedFile(MockFile):
-  def AbsoluteLocalPath(self):
-    return self._local_path
-
-
-class MockChange(object):
-  """Mock class for Change class.
-
-  This class can be used in presubmit unittests to mock the query of the
-  current change.
-  """
-
-  def __init__(self, changed_files):
-    self._changed_files = changed_files
-
-  def LocalPaths(self):
-    return self._changed_files
-
-  def AffectedFiles(self, include_dirs=False, include_deletes=True,
-                    file_filter=None):
-    return self._changed_files
diff --git a/WATCHLISTS b/WATCHLISTS
deleted file mode 100644
index f140a2e..0000000
--- a/WATCHLISTS
+++ /dev/null
@@ -1,2172 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Watchlist Rules
-# Refer: http://dev.chromium.org/developers/contributing-code/watchlists
-
-# IMPORTANT: The regular expression filepath is tested against each path using
-# re.search, so it is not usually necessary to add .*.
-
-{
-  'WATCHLIST_DEFINITIONS': {
-    'about_flags': {
-      'filepath': 'chrome/browser/about_flags\.cc'
-    },
-    'accelerator_table': {
-      'filepath': 'ash/accelerators/accelerator_table\.cc' \
-                  '|chrome/browser/ui/views/accelerator_table\.cc',
-    },
-    'accessibility': {
-      'filepath': 'accessibility' \
-                  '|braille' \
-                  '|chromevox' \
-                  '|iaccessible2' \
-                  '|isimpledom' \
-                  '|liblouis'
-    },
-    'activity_log': {
-      'filepath': 'chrome/browser/extensions/activity_log/' \
-                  '|chrome/browser/extensions/api/activity_log_private/'
-    },
-    'add_to_homescreen': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/webapps/|'\
-                  'chrome/android/javatests/src/org/chromium/chrome/browser/webapps/|'\
-                  'chrome/android/junit/src/org/chromium/chrome/browser/webapps/|'\
-                  'chrome/android/javatests/src/org/chromium/chrome/browser/banners/|'\
-                  'chrome/browser/android/shortcut_.*|'\
-                  'chrome/browser/android/webapps/',
-    },
-    'android_crash_reporting': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/crash/'
-    },
-    'android_crazy_linker': {
-      'filepath': 'third_party/android_crazy_linker/'
-    },
-    'android_infobars': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/infobar/'
-    },
-    'android_infra': {
-      'filepath': 'build/android/' \
-                  '|testing/android/' \
-                  '|tools/android/'
-    },
-    'android_java': {
-      'filepath': '/java/'
-    },
-    'android_loading': {
-      'filepath': 'tools/android/loading/'
-    },
-    'android_media': {
-      'filepath': 'content/browser/media/android' \
-                  '|content/renderer/media/android' \
-                  '|media/audio/android' \
-                  '|media/base/android' \
-                  '|media/midi/*_android.*' \
-                  '|media/video/capture/android'
-    },
-    'android_studio': {
-      'filepath': 'build/android/gradle/' \
-                  '|docs/android_studio.md' \
-                  '|tools/android/android_studio'
-    },
-    'android_tab': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/Tab'
-    },
-    'android_uma_settings': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/UsageAndCrashReportsPreferenceFragment.java|'\
-                  'chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManager.java|'\
-                  'chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java|'\
-                  'chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java',
-    },
-    'android_webapk': {
-      'filepath': 'chrome/android/webapk/|'\
-                  'chrome/browser/android/webapk/',
-    },
-    'android_webview': {
-      'filepath': 'android_webview/',
-    },
-    'app_list': {
-      'filepath': 'chrome/browser/ui/app_list'\
-                  '|chrome/browser/ui/ash/app_list'\
-                  '|chrome/browser/ui/views/app_list'\
-                  '|ui/app_list/'
-    },
-    'app_shortcuts': {
-      'filepath': 'apps/app_shim/'\
-                  '|chrome/browser/web_applications/'\
-                  '|chrome/browser/ui/web_applications/'\
-                  '|chrome/common/mac/'
-    },
-    'appcache': {
-      'filepath': 'appcache/',
-    },
-    'apps': {
-      'filepath': '^apps/',
-    },
-    'arc': {
-      'filepath': 'arc/',
-    },
-    'arc_auth': {
-      'filepath': 'chrome/browser/chromeos/arc/arc_auth'
-    },
-    'arc_kiosk': {
-      'filepath': 'chrome/browser/chromeos/app_mode/arc/'\
-                  '|components/arc/kiosk/'\
-                  '|arc_kiosk'
-    },
-    'arc_net': {
-      'filepath': 'components/arc/net/',
-    },
-    'arc_power': {
-      'filepath': 'components/arc/power/',
-    },
-    'ash': {
-      'filepath': 'ash/',
-    },
-    'aura': {
-      'filepath': 'ui/aura/',
-    },
-    'aura_compositor': {
-      'filepath':
-        'ui/compositor/' \
-        '|content/browser/compositor/' \
-        '|content/browser/renderer_host/compositor_resize_lock_aura' \
-        '|content/browser/renderer_host/render_widget_host_view_aura' \
-        '|content/browser/renderer_host/render_widget_host_view_browsertest' \
-        '|content/browser/renderer_host/delegated' \
-        '|content/browser/renderer_host/software' \
-        '|content/common/gpu/client/' \
-    },
-    'auto_bisect': {
-      'filepath': 'tools/run-bisect-perf-regression.py'\
-                  '|tools/run-perf-test.cfg'\
-                  '|tools/auto_bisect/'
-    },
-    'autofill': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/autofill/|'\
-                  'chrome/browser/autofill/|'\
-                  'chrome/browser/resources/options/autofill_|'\
-                  'chrome/browser/ui/android/autofill/|'\
-                  'chrome/browser/ui/autofill/|'\
-                  'chrome/browser/ui/cocoa/autofill/|'\
-                  'chrome/browser/ui/views/autofill/|'\
-                  'chrome/browser/ui/webui/options/autofill_|'\
-                  'chrome/renderer/autofill/|'\
-                  'chrome/test/data/autofill/|'\
-                  'components/autofill/|'\
-                  'components/autofill/browser/webdata/|'\
-                  'components/webdata/',
-    },
-    'background_fetch': {
-      'filepath': 'background_fetch',
-    },
-    'background_sync': {
-      'filepath': 'background_sync',
-    },
-    'banners': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/banners/|'\
-                  'chrome/android/javatests/src/org/chromium/chrome/browser/banners/|'\
-                  'chrome/browser/android/banners/|'\
-                  'chrome/browser/banners/|'\
-                  'chrome/browser/ui/android/infobars/app_banner_.*|'\
-                  'chrome/renderer/banners/|'\
-                  'third_party/WebKit/public/platform/modules/app_banner/|'\
-                  'third_party/WebKit/Source/modules/app_banner/',
-    },
-    'base': {
-      'filepath': '^base/',
-    },
-    'base_allocator': {
-      'filepath': '^base/allocator',
-    },
-    'base_memory': {
-      'filepath': '^base/memory',
-    },
-    'base_task_scheduler': {
-      'filepath': '^base/task_scheduler',
-    },
-    'base_win': {
-      'filepath': '^base/win',
-    },
-    'battery_status': {
-      'filepath': 'content/browser/battery_status/|'\
-                  'content/test/data/battery_status/|'\
-                  'device/battery/',
-    },
-    'bookmarks': {
-      'filepath': 'chrome/browser/bookmarks/' \
-                  '|chrome/browser/extensions/api/bookmark_manager_private/' \
-                  '|chrome/browser/extensions/api/bookmarks/' \
-                  '|chrome/browser/resources/bookmark_manager/' \
-                  '|chrome/browser/ui/bookmarks/' \
-                  '|chrome/browser/ui/cocoa/bookmarks/' \
-                  '|chrome/browser/ui/views/bookmarks/' \
-                  '|components/bookmarks'
-    },
-    'bottombar': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/',
-    },
-    'breakpad_app': {
-      'filepath': 'components/crash/content/app/',
-    },
-    'browser': {
-      'filepath': 'chrome/browser/',
-    },
-    'browser_chromeos': {
-      'filepath': 'chrome/browser/chromeos/',
-    },
-    'browser_components': {
-      'filepath': 'chrome/browser/autofill/' \
-                  '|chrome/browser/bookmarks/' \
-                  '|chrome/browser/favicon/' \
-                  '|chrome/browser/history/' \
-                  '|chrome/browser/webdata/' \
-                  '|components/autofill/'
-    },
-    'browser_compositor': {
-      'filepath': 'ui/compositor/'
-    },
-    'browser_resources': {
-      'filepath': 'chrome/browser/resources/',
-    },
-    'browser_resources_md': {
-      'filepath': 'chrome/browser/resources/md_'\
-                  '|chrome/browser/resources/settings/',
-    },
-    'browsing_data': {
-      'filepath': 'chrome/browser/browsing_data/',
-    },
-    'bubble': {
-      'filepath': 'ui/views/bubble/|'\
-                  'chrome/browser/ui/views/bubble/|'\
-                  'components/bubble/',
-    },
-    'cache_storage': {
-      'filepath': 'cache_storage',
-    },
-    'cast': {
-      'filepath': 'media/cast/'\
-                  '|chrome/browser/extensions/api/cast_streaming/'\
-                  '|chrome/browser/media/cast'\
-                  '|chrome/renderer/media/cast'\
-                  '|chrome/test/data/extensions/api_test/cast_'\
-                  '|content/public/renderer/media_stream_'\
-                  '|content/renderer/media/(media_stream|(.+audio_source))',
-    },
-    'cast_certificate': {
-      'filepath': 'components/cast_certificate/'\
-                  '|components/test/data/cast_certificate/',
-    },
-    'certificate_transparency': {
-      'filepath': 'components/certificate_transparency/'\
-                  '|components/packed_ct_ev_whitelist/'\
-                  '|net/cert/ct_'\
-                  '|net/cert/multi_log_ct_verifier'\
-                  '|net/cert/sct_status_flags.h'\
-                  '|net/cert/signed_certificate_timestamp'\
-                  '|net/cert/signed_tree_head'\
-                  '|net/test/ct_',
-    },
-    'chromecast': {
-      'filepath': 'chromecast/',
-    },
-    'chromecast_public': {
-      'filepath': 'chromecast/public/',
-    },
-    'cc': {
-      'filepath': 'cc/|'\
-                  'content/common/cc_messages'
-    },
-    'chrome_elf': {
-      'filepath': 'chrome_elf',
-    },
-    'chrome_grc': {
-      'filepath': 'services/resource_coordinator',
-    },
-    'chrome_views': {
-      'filepath': 'chrome/browser/ui/views',
-    },
-    'chromedriver': {
-      'filepath': 'chrome/test/chromedriver|'\
-                  'chrome/test/data/chromedriver|'\
-                  'third_party/webdriver'
-    },
-    'chromeos': {
-      'filepath': 'chromeos/',
-    },
-    'chromeos_attestation': {
-      'filepath': 'chromeos/attestation/|'\
-                  'chrome/browser/chromeos/attestation/|'\
-                  'chrome/browser/extensions/api/enterprise_platform_keys_private/',
-    },
-    'chromeos_calculator': {
-      'filepath': 'chrome/common/extensions/docs/examples/apps/calculator/',
-    },
-    'chromeos_dbus': {
-      'filepath': 'chromeos/dbus/',
-    },
-    'chromeos_geolocation': {
-      'filepath': 'chromeos/geolocation/',
-    },
-    'chromeos_login': {
-      'filepath': 'chrome/browser/chromeos/login/|'\
-                  'chrome/browser/ui/webui/chromeos/login/|'\
-                  'chrome/browser/resources/chromeos/login/|'\
-                  'ui/login/',
-    },
-    'chromeos_net': {
-      'filepath': 'chromeos/network/|'\
-                  'chrome/browser/chromeos/net/|'\
-                  'chrome/browser/extensions/api/networking_private/|'\
-                  'extensions/browser/api/networking_private/|'\
-                  'ui/chromeos/network/',
-    },
-    'chromeos_power': {
-      'filepath': 'ash/system/chromeos/power/|'\
-                  'chromeos/dbus/power_.*|'\
-                  'chrome/browser/chromeos/power/',
-    },
-    'chromeos_timezone': {
-      'filepath': 'chromeos/timezone/',
-    },
-    'chromeos_webui': {
-      'filepath': 'chrome/browser/ui/webui/chromeos/|'\
-                  'chrome/browser/resources/chromeos/',
-    },
-    'clang_update': {
-      'filepath': 'tools/clang/scripts/update.py'
-    },
-    'clipboard': {
-      'filepath': 'clipboard|dnd|drag|drop',
-    },
-    'closure': {
-      'filepath': 'third_party/closure_(compiler|linter)/|'
-                  'compiled_resources2?.gyp',
-    },
-    'components_deps': {
-      'filepath': 'components/([^/]*/)*DEPS',
-    },
-    'content': {
-      'filepath': 'content/',
-    },
-    'content_bluetooth': {
-      'filepath': 'content/.*bluetooth'
-    },
-    'content_loader': {
-      'filepath': 'chrome/browser/loader|' \
-                  'content/browser/loader|' \
-                  'content/child/*loader',
-    },
-    'content_renderer': {
-      'filepath': 'content/renderer/',
-    },
-    'content_shell': {
-      'filepath': 'content/shell/',
-    },
-    'content_worker': {
-      'filepath': 'content/.*worker',
-    },
-    'contextual_search': {
-      'filepath': 'chrome/browser/android/contextualsearch/|' \
-                  'chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/|' \
-                  'chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/|' \
-                  'components/contextual_search/',
-    },
-    'cookie_monster': {
-      'filepath': 'net/cookies/|'\
-                  'chrome/browser/net/sqlite_persistent_cookie_store',
-    },
-    'courgette': {
-      'filepath': 'courgette/',
-    },
-    'cr_elements': {
-      'filepath': 'ui/webui/resources/cr_element',
-    },
-    'custom_tabs': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/customtabs/|'\
-                  'chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/',
-    },
-    'data_reduction_proxy': {
-      'filepath': 'chrome/browser/net/spdyproxy/|'\
-                  'data_reduction_proxy|'\
-                  'chrome_proxy',
-    },
-    'deep_memory_profiler': {
-      'filepath': 'tools/(deep_memory_profiler|find_runtime_symbols)',
-    },
-    'device_bluetooth': {
-      'filepath': 'device/.*bluetooth'
-    },
-    'device_sensors': {
-      'filepath': 'content/browser/device_sensors/|'\
-                  'content/common/device_sensors/|'\
-                  'content/public/android/java/src/org/chromium/content/browser/DeviceSensors.java|'\
-                  'content/public/android/javatests/src/org/chromium/content/browser/DeviceSensorsTest.java|'\
-                  'content/renderer/device_sensors/|'\
-                  'content/test/data/device_sensors/|'\
-                  'device/sensors/',
-    },
-    'developer_recommended_flags': {
-      'filepath': 'developer_recommended_flags.gypi',
-    },
-    'devtools': {
-      'filepath': 'devtools',
-    },
-    'disk_cache': {
-      'filepath': 'net/disk_cache/|http_cache',
-    },
-    'download': {
-      'filepath': 'chrome/browser/download/|'\
-                  'content/browser/download/',
-    },
-    'downloads_ui': {
-      'filepath': 'chrome/browser/resources/(md_)?downloads/|' \
-                  'chrome/browser/ui/webui/.*downloads|' \
-                  'chrome/browser/ui/views/download/|' \
-                  'chrome/browser/ui/cocoa/download/'
-    },
-    'drive': {
-      'filepath': 'chrome/browser/chromeos/drive/|' \
-                  'chrome/browser/google_apis/'
-    },
-    'drive_resource_metadata': {
-      'filepath': 'chrome/browser/chromeos/drive/resource_metadata'
-    },
-    'eme': {
-      'filepath': 'components/cdm/|' \
-                  'content/browser/media/cdm/|' \
-                  'content/renderer/media/crypto/|' \
-                  'media/base/android/*drm*|' \
-                  'media/cdm/|' \
-                  'third_party/widevine/cdm/'
-    },
-    'events': {
-      'filepath': 'ui/events/',
-    },
-    'extension': {
-      'filepath': 'extension',
-    },
-    'feature_policy': {
-      'filepath': 'third_party/WebKit/Source/platform/feature_policy/|' \
-                  'third_party/WebKit/Source/bindings/core/v8/ConditionalFeatures',
-    },
-    'feedback_ui': {
-      'filepath': 'chrome/browser/resources/(md_)?feedback/'
-    },
-    'fileapi': {
-      'filepath': 'file_system/|' \
-                  'fileapi/'
-    },
-    'filebrowse': {
-      'filepath': 'file_browser|' \
-                  'file_manager|' \
-                  'filebrowse'
-    },
-    'filesapp': {
-      'filepath': 'chrome/browser/chromeos/drive|' \
-                  'chrome/browser/chromeos/extensions/file_manager|' \
-                  'chrome/browser/chromeos/extensions/file_system_provider|' \
-                  'chrome/browser/chromeos/file_manager|' \
-                  'chrome/browser/chromeos/file_system_provider|' \
-                  'chrome/browser/drive|' \
-                  'chrome/test/data/extensions/api_test/file_system_provider|' \
-                  'components/drive|' \
-                  'google_apis/drive|' \
-                  'ui/file_manager'
-    },
-    'filesapp_ui': {
-      'filepath': 'ui/file_manager'
-    },
-    'ftp': {
-      'filepath': 'ftp',
-    },
-    'fuzzing': {
-      'filepath': 'fuzz|Fuzz',
-    },
-    'gcm': {
-      'filepath': 'chrome/browser/gcm/|'\
-                  'components/gcm_driver/|'\
-                  'google_apis/gcm/',
-    },
-    'generic_sensor': {
-      'filepath': 'device/generic_sensor/|'\
-                  'third_party/WebKit/Source/modules/sensor/',
-    },
-    'geolocation': {
-      'filepath': 'chrome/browser/geolocation/|'\
-                  'content/browser/geolocation|'\
-                  'content/public/common/geoposition.*|'\
-                  'content/public/browser/geolocation.*|'\
-                  'content/renderer/geolocation.*|'\
-                  'content/shell/geolocation/',
-    },
-    'gfx_image': {
-      'filepath': 'ui/gfx/image/',
-    },
-    'gfx_geometry': {
-      'filepath': 'ui/gfx/geometry/',
-    },
-    'gn': {
-      'filepath': 'tools/gn',
-    },
-    'goma': {
-      'filepath': 'infra/config/cq.cfg',
-    },
-    'gpu': {
-      'filepath': 'gpu/',
-    },
-    'history_ui': {
-      'filepath': 'chrome/browser/resources/(md_)?history|'\
-                  'chrome/browser/ui/webui/.*history',
-    },
-    'hotword': {
-      'filepath': 'chrome/browser/extensions/api/hotword_private/'\
-                  '|chrome/browser/resources/hotword_helper/'\
-                  '|chrome/browser/resources/hotword/'\
-                  '|chrome/browser/search/hotword*'\
-                  '|chrome/test/data/extensions/api_test/hotword_private/',
-    },
-    'i18n': {
-      'filepath': 'base/i18n/|base/string|l10n|icu|'\
-                  'locale_settings|encoding',
-    },
-    'importer': {
-      'filepath': 'import',
-    },
-    'indexed_db': {
-      'filepath': 'content/browser/indexed_db|'\
-                  'content/child/indexed_db|'\
-                  'content/common/indexed_db|'\
-                  'content/public/browser/indexed_db|'\
-                  'content/test/data/indexeddb',
-    },
-    'ink_drop': {
-      'filepath': 'ui/views/animation/test/.*ink_drop.*|' \
-                  'ui/views/animation/.*ink_drop.*'
-    },
-    'input': {
-      'filepath': 'content/browser/renderer_host/input|'\
-                  'content/renderer/input|'\
-                  'ui/events/blink/'
-    },
-    'installer': {
-      'filepath': 'chrome/install(_static|er)/',
-    },
-    'installer_linux': {
-      'filepath': 'chrome/installer/linux/',
-    },
-    'instant': {
-      'filepath': 'instant|searchbox|'\
-                  'chrome/browser/search/|'\
-                  'chrome/browser/ui/search/|'\
-                  'chrome/browser/resources/local_ntp/|'\
-                  'chrome/common/search_types.*',
-    },
-    'ios': {
-      'filepath': 'ios',
-    },
-    'ios_chrome': {
-      'filepath': 'ios/chrome',
-    },
-    'ios_clean': {
-      'filepath': 'ios/clean',
-    },
-    'ios_showcase': {
-      'filepath': 'ios/showcase',
-    },
-    'ios_web': {
-      'filepath': 'ios/web',
-    },
-    'ipc': {
-      'filepath': 'ipc/ipc',
-    },
-    'ipc_messages': {
-      'filepath': '_message.*.h|'\
-                  '_messages.cc',
-    },
-    'login': {
-      'filepath': 'chrome/browser/ui/login'
-    },
-    'libwebp': {
-      'filepath': 'third_party/libwebp'
-    },
-    'libvpx': {
-      'filepath': 'third_party/libvpx'
-    },
-    'linux_fonts': {
-      'filepath': 'ui/gfx/font_render_params_.*|'\
-                  'ui/gfx/platform_font_linux.*|'\
-                  'ui/gfx/render_text_harfbuzz.*',
-    },
-    'linux_sandboxing': {
-      'filepath': 'sandbox/linux/',
-    },
-    'linux_seccomp_bpf': {
-      'filepath': 'content/common/sandbox.*linux.cc',
-    },
-    'mac': {
-      'filepath': '(_|/)(cocoa|mac)(_|\.)|/(cocoa|mac)/|^((?!ios\/).)*\.mm?$',
-    },
-    'manifest': {
-      'filepath': 'content/(browser|renderer)/manifest/'\
-                  '|content/public/common/manifest*',
-    },
-    'md_settings': {
-      'filepath': 'chrome/browser/resources/settings/'\
-                  '|chrome/browser/ui/webui/settings/',
-    },
-    'media': {
-      'filepath': 'media/|third_party/(ffmpeg|openmax)/|webmediaplayer|'\
-        'audio_message_filter|video_layer|media_internals',
-    },
-    'media_galleries': {
-      'filepath': 'chrome/browser/extensions/api/media_galleries/'\
-                  '|chrome/browser/media_galleries/'\
-                  '|chrome/browser/storage_monitor/'\
-                  '|chrome/common/media_galleries/'\
-                  '|chrome/test/data/extensions/api_test/media_galleries/'\
-                  '|chrome/utility/itunes*'\
-                  '|chrome/utility/picasa*',
-    },
-    'media_mojo': {
-      'filepath': 'media/mojo/*'
-    },
-    'media_remoting': {
-      'filepath': 'chrome/browser/media/cast_remoting'\
-                  '|media/blink/webmediaplayer_'\
-                  '|media/mojo/interfaces/remoting.mojom'\
-                  '|media/remoting/',
-    },
-    'media_router': {
-      'filepath': 'chrome/browser/media/router/*' \
-                  '|chrome/app/theme/*/common/media_router*' \
-                  '|chrome/browser/resources/media_router/' \
-                  '|chrome/browser/ui/webui/media_router/' \
-                  '|chrome/test/media_router/',
-    },
-    'message_loop': {
-      'filepath': 'base/message_'
-    },
-    'metrics': {
-      'filepath': 'base/metrics/'\
-                  '|chrome/android/java/src/org/chromium/chrome/browser/metrics/'\
-                  '|chrome/browser/metrics/'\
-                  '|chrome/browser/chromeos/external_metrics'\
-                  '|chrome/browser/extensions/api/metrics_private/'\
-                  '|chrome/browser/ui/webui/metrics_handler'\
-                  '|chromecast/browser/metrics/'\
-                  '|content/browser/user_metrics.cc'\
-                  '|components/metrics/'\
-                  '|components/metrics_services_manager/'\
-                  '|components/rappor/'\
-                  '|components/variations/'\
-                  '|content/public/browser/user_metrics.h'\
-                  # Exclude XML files; in particular, histograms.xml.
-                  '|tools/metrics/[^.]*([.](?!xml$).*)?$',
-    },
-    'metrics_xml_files': {
-      # Subscribe to this to watch for changes to histograms.xml.
-      'filepath': 'tools/metrics/.*\.xml$',
-    },
-    'midi': {
-      'filepath': 'midi',
-    },
-    'mojo': {
-      'filepath': 'mojo',
-    },
-    'mouse_lock': {
-      'filepath': 'mouse_lock',
-    },
-    'mus': {
-      'filepath': 'services/ui/'\
-                  '|mojo/gpu/',
-    },
-    'nacl': {
-      'filepath': 'chrome/nacl/|chrome/test/nacl/|'\
-        'chrome/browser/nacl_host/|chrome/common/nacl|'\
-        'native_client_sdk/src/doc/',
-    },
-    'native_client_sdk': {
-      'filepath': '^native_client_sdk/',
-    },
-    'navigation': {
-      'filepath': 'content/browser/frame_host|'\
-                  'content/browser/renderer_host/render_process_host.*|'\
-                  'content/browser/renderer_host/render_view_host.*|'\
-                  'content/browser/web_contents/web_contents_impl.*|'\
-                  'content/renderer/render_frame.*|'\
-                  'content/renderer/render_view.*'
-    },
-    'net': {
-      'filepath': 'net/',
-    },
-    'net_base': {
-      'filepath': 'net/base/',
-    },
-    'net_error_list': {
-      'filepath': 'net/base/net_error_list.h',
-    },
-    'net_http2': {
-      'filepath': 'net/http2/',
-    },
-    'net_log': {
-      'filepath': 'net/log/|' \
-        'chrome/browser/net/.*net_log|' \
-        'chrome/browser/resources/net_internals/|' \
-        'chrome/browser/ui/webui/net_internals/|' \
-	'components/net_log/'
-    },
-    'net_spdy': {
-      'filepath': 'net/spdy/',
-    },
-    'netinfo': {
-      'filepath': 'netinfo',
-    },
-    'notifications': {
-      'filepath': 'chrome/browser/extensions/api/notifications/|' \
-        'chrome/browser/notifications/|' \
-        'chrome/test/data/notifications/|' \
-        'content/browser/notifications/|' \
-        'content/child/notifications/|' \
-        'content/common/platform_notification|' \
-        'content/public/browser/platform_notification|' \
-        'content/public/common/platform_notification|' \
-        'content/renderer/notification_|' \
-        'ui/message_center/'
-    },
-    'nqe': {
-      'filepath': 'nqe',
-    },
-    'ntp': {
-      'filepath': 'chrome/browser/resources/ntp4/|'\
-        'chrome/browser/resources/ntp_android/|'\
-        'chrome/browser/ui/webui/ntp/',
-    },
-    'ntp_snippets': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/ntp/|'\
-        'chrome/android/javatests/src/org/chromium/chrome/browser/ntp/|'\
-        'chrome/android/junit/src/org/chromium/chrome/browser/ntp/|'\
-        'chrome/android/java/src/org/chromium/chrome/browser/suggestions/|'\
-        'chrome/android/javatests/src/org/chromium/chrome/browser/suggestions/|'\
-        'chrome/browser/android/ntp/ntp_snippets|'\
-        'chrome/browser/ntp_snippets/|'\
-        'chrome/browser/resources/snippets_internals|'\
-        'chrome/browser/ui/webui/snippets_internals|'\
-        'components/ntp_snippets/|'\
-        'chrome/android/java/res/layout/new_tab_page|'\
-        'chrome/android/java/res/layout/most_visited|'\
-        'ios/chrome/browser/ntp_snippets'
-    },
-    'ntp_tiles': {
-      'filepath': 'chrome/browser/android/ntp/|'\
-        'chrome/browser/ui/webui/ntp/|'\
-        'chrome/common/search/ntp|'\
-        'components/ntp_tiles/|'\
-        'ios/chrome/browser/ntp_tiles'
-    },
-    'offline_pages': {
-      'filepath': 'components/offline_pages/'\
-                  '|chrome/browser/android/offline_pages/'\
-                  '|chrome/android/java/src/org/chromium/chrome/browser/offlinepages/'
-    },
-    'omnibox': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/omnibox/|'\
-                  'chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/|'\
-                  'chrome/browser/autocomplete/|'\
-                  'chrome/browser/ui/omnibox/|'\
-                  'chrome/browser/ui/.*/omnibox/|'\
-                  'components/omnibox/|'\
-                  'ios/chrome/browser/ui/omnibox/'
-    },
-    'options': {
-      'filepath': 'chrome/browser/resources/options/|'\
-          'chrome/browser/ui/webui/options/',
-    },
-    'origin_trials': {
-      'filepath': 'origin_trials'\
-                  '|OriginTrial'\
-                  '|ConditionalFeature',
-    },
-    'ozone': {
-      'filepath': 'ui/ozone/|'\
-        'ui/events/ozone/|'\
-        'ui/gfx/ozone/|'\
-        'ui/gl/gl_.*egl.*|'\
-        'ui/gl/gl_.*ozone.*'
-    },
-    'page_load_metrics' : {
-      'filepath': 'chrome/browser/page_load_metrics/'\
-                  '|chrome/common/page_load_metrics/'\
-                  '|chrome/renderer/page_load_metrics/'
-    },
-    'panels': {
-      'filepath': 'chrome/browser/ui/panels'\
-                  '|chrome/browser/ui/cocoa/panels'\
-                  '|chrome/browser/ui/views/panels'
-    },
-    'password_manager': {
-      'filepath': 'chrome/.*/password_'\
-                  '|chrome/browser/ui/passwords'\
-                  '|chrome/browser/ui/views/passwords'\
-                  '|chrome/test/data/password'\
-                  '|components/autofill.*password'
-                  '|components/password_'\
-                  '|^ios/chrome/browser/passwords'\
-    },
-    'payments': {
-      'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/payments'\
-                  '|chrome/android/javatests/src/org/chromium/chrome/browser/payments'\
-                  '|chrome/test/data/payments'\
-                  '|components/payments'\
-                  '|third_party/WebKit/LayoutTests/payments/'\
-                  '|third_party/WebKit/Source/modules/payments'\
-                  '|ios/web/payments/'\
-                  '|ios/web/public/payments/'\
-                  '|ios/chrome/browser/payments/'
-    },
-    'payments_ios': {
-      'filepath': 'ios/web/payments/'\
-                  '|ios/web/public/payments/'\
-                  '|ios/chrome/browser/payments/'
-    },
-    'pepper_api': {
-      'filepath': 'ppapi/api'\
-                  '|ppapi/c',
-    },
-    'permissions': {
-      'filepath': 'content/(child,browser)/permissions/'\
-                  '|content/common/permission_*'\
-                  '|content/public/(common,browser)/permission_*'\
-                  '|chrome/browser/permissions/'\
-                  '|chrome/browser/content_settings/permission*'\
-                  '|permission_context',
-    },
-    'plugin': {
-      'filepath': 'chrome/browser/plugin|chrome/plugin/|'\
-        'chrome/common/plugin',
-    },
-    'policy_definitions': {
-      'filepath': 'components/policy/resources/policy_templates.json',
-    },
-    'polymer': {
-      'filepath': 'third_party/polymer/|'\
-                  'tools/polymer|'\
-                  'ui/webui/resources/polymer_resources.grdp',
-    },
-    'precache': {
-      'filepath': '[pP]recache'
-    },
-    'prepopulated_engines': {
-      'filepath': 'components/search_engines/prepopulated_engines.json',
-    },
-    'prerender': {
-      'filepath': 'prerender'
-    },
-    'push_messaging': {
-      'filepath': 'push_messaging'
-    },
-    'reading_list': {
-      'filepath': 'components/reading_list|'\
-                  'ios/chrome/browser/reading_list|'\
-                  'ios/chrome/browser/ui/reading_list',
-    },
-    'remoting': {
-      'filepath': '^remoting/' \
-                  '|^testing/chromoting'
-    },
-    'rlz_id': {
-      'filepath' :'rlz/lib/machine_id.cc|'\
-                  'rlz/lib/machine_id.h|'\
-                  'rlz/win/lib/machine_id_win.cc',
-    },
-    'safe_browsing': {
-      'filepath': 'chrome/(browser|common|renderer)/safe_browsing/',
-    },
-    'safe_browsing_db': {
-      'filepath': 'components/safe_browsing_db/',
-    },
-    'sandbox': {
-      'filepath': 'sandbox/'\
-                  '|content/browser/bootstrap_sandbox_mac'\
-                  '|content/browser/renderer_host/render_sandbox_host_linux'\
-                  '|content/browser/renderer_host/sandbox_ipc_linux'\
-                  '|content/browser/zygote_host/'\
-                  '|content/common/sandbox_'\
-                  '|content/zygote/'\
-    },
-    'scheduler': {
-      'filepath': 'cc/scheduler'\
-                  '|components/scheduler'\
-                  '|content/renderer/scheduler'
-    },
-    'screen_orientation': {
-      'filepath': 'screen_orientation',
-    },
-    'search': {
-      'filepath': 'chrome/browser/ui/search/',
-    },
-    'service_worker': {
-      'filepath': 'content/(browser|renderer|child|common)/service_worker/',
-    },
-    'site_engagement': {
-      'filepath': 'chrome/browser/engagement/|'\
-                  'chrome/browser/ui/webui/engagement/',
-    },
-    'site_instance': {
-      'filepath': 'content/browser/site_instance|'\
-        'content/browser/browsing_instance',
-    },
-    'speech': {
-      'filepath': 'chrome/browser/speech/'\
-                  '|content/browser/speech/'\
-                  '|content/common/.*speech'\
-                  '|content/public/.*speech'
-    },
-    'spellcheck': {
-      'filepath': 'chrome/browser/spellchecker/'\
-                  '|chrome/browser/renderer_context_menu/spelling_'\
-                  '|components/spellcheck/'\
-                  '|third_party/hunspell/'\
-                  '|third_party/hunspell_dictionaries/',
-    },
-    'streams': {
-      'filepath': 'content/browser/streams/',
-    },
-    'styleguide': {
-      'filepath': '^styleguide/',
-    },
-    'subresource_filter': {
-      'filepath': 'subresource_filter|SubresourceFilter',
-    },
-    'supervised_users': {
-      'filepath': 'chrome/browser/.*managed_mode'\
-                  '|chrome/browser/.*managed_user'\
-                  '|chrome/browser/.*supervised_user',
-    },
-    'swreporter': {
-      'filepath': 'chrome/browser/safe_browsing/srt_'\
-                  '|chrome/browser/component_updater/sw_reporter_',
-    },
-    'sync': {
-      'filepath': '^chrome/android/sync_shell/'\
-                  '|^chrome/browser/ui/sync/'\
-                  '|^chrome/browser/ui/views/sync/'\
-                  '|^chrome/test/android/javatests/src/org/chromium/chrome/test/util/browser/sync/'\
-                  '|^ios/chrome/browser/sync/'\
-                  '|^chrome/android/java/src/org/chromium/chrome/browser/sync/'\
-                  '|^chrome/browser/sync/'\
-                  '|^components/browser_sync/'\
-                  '|^components/sync/'\
-                  '|^components/sync_bookmarks/'\
-                  '|^components/sync_sessions/',
-    },
-    'syncfs': {
-      'filepath': 'sync_file_system',
-    },
-    'tab_alert_indicators': {
-      'filepath': 'content/browser/media/audio_stream_monitor'\
-        '|chrome/browser/ui/cocoa/tabs/alert_indicator_button'\
-        '|chrome/browser/ui/cocoa/tabs/tab_controller\.mm'\
-        '|chrome/browser/ui/tabs/tab_utils'\
-        '|chrome/browser/ui/views/tabs/alert_indicator_button'\
-        '|chrome/browser/ui/views/tabs/tab\.cc'\
-        '|chrome/browser/ui/views/tabs/tab_renderer_data'\
-        '|media/audio/audio_(output_controller|power_monitor)',
-    },
-    'tab_capture': {
-      'filepath': 'cc/output/copy_output_'\
-        '|chrome/browser/extensions/api/tab_capture/'\
-        '|chrome/renderer/resources/extensions/tab_capture_custom_bindings.js'\
-        '|chrome/test/data/extensions/api_test/tab_capture/'\
-        '|content/browser/media/capture/'\
-        '|content/browser/renderer_host/delegated_frame_host'\
-        '|content/browser/renderer_host/media/(audio_'\
-            '|media_stream_manager|video_)'\
-        '|content/public/renderer/media_stream_'\
-        '|content/renderer/media/(media_stream|(.+audio_source))'\
-        '|media/audio/(audio_output_controller|fake_audio_|virtual_audio_)'\
-        '|media/base/video_frame\.h'\
-        '|media/capture/',
-    },
-    'tab_contents': {
-      'filepath': 'chrome/browser/tab_contents/|'\
-        'content/browser/tab_contents/|'\
-        'chrome/browser/ui/tab_contents/',
-    },
-    'task_manager': {
-      'filepath': 'task_manager'
-    },
-    'tcmalloc': {
-      'filepath': 'third_party/tcmalloc'
-    },
-    'telemetry': {
-      'filepath': 'tools/perf/'
-    },
-    'tests': {
-      'filepath': 'apitest|unittest|browsertest|uitest|chrome/test/',
-    },
-    'tether': {
-      'filepath': 'components/cryptauth/'\
-                  '|chromeos/components/tether/'\
-                  '|components/proximity_auth/',
-    },
-    'textinput': {
-      'filepath': 'content/browser/renderer_host/gtk_im'\
-                  '|content/browser/renderer_host/gtk_key'\
-                  '|content/browser/renderer_host/render_widget_host_view'\
-                  '|content/browser/renderer_host/text_input'\
-                  '|ui/base/ime/'\
-                  '|ui/base/gtk/event'\
-                  '|ui/base/gtk/gtk_im'\
-                  '|ui/base/keycodes/'\
-                  '|ui/base/win/ime'\
-                  '|ui/views/controls/textfield/'\
-                  '|ui/views/ime/'
-    },
-    'textinput_chromeos': {
-      'filepath': 'chrome/browser/chromeos/input_method/'\
-                  '|chrome/browser/chromeos/extensions/input_method'\
-                  '|chrome/browser/chromeos/status/input_method'\
-                  '|chrome/browser/extensions/extension_input_'\
-                  '|chrome/browser/resources/keyboard'\
-                  '|chrome/browser/resources/options/language'\
-                  '|chrome/browser/ui/webui/options/'\
-                  'chromeos/.*(language|keyboard)'\
-                  '|chrome/browser/ui/webui/options/language'\
-                  '|chromeos/ime/*'
-    },
-    'timers': {
-      'filepath': 'base/timer/'\
-                  '|components/timers/'
-    },
-    'tools': {
-      'filepath': 'tools/',
-    },
-    'tools_win_chromeexts': {
-      'filepath': 'tools/win/chromeexts',
-    },
-    'tracing': {
-      'filepath': 'base/debug/trace_event.*'\
-                  '|base/trace_event/'\
-                  '|content/browser/tracing/'\
-                  '|components/tracing/'
-    },
-    'ui_compositor': {
-      'filepath': 'ui/compositor/layer\.|'\
-                  'ui/compositor/layer_unittest|'\
-                  'ui/compositor/compositor',
-    },
-    'ui_display_win': {
-      'filepath': '^ui/display/win',
-    },
-    'ui_resources': {
-      'filepath': 'ui/resources/'\
-                  '|ui/base/native_theme/resources/'\
-                  '|chrome/app/theme/'
-    },
-    'ui_strings': {
-      'filepath': 'chrome/app/generated_resources.grd'\
-                  '|chrome/app/google_chrome_strings.grd'\
-                  '|chrome/android/java/strings/android_chrome_strings.grd'\
-                  '|chrome/app/settings_strings.grdp'\
-                  '|ios/chrome/app/strings/ios(_.+)*_strings.grd'\
-                  '|ui/strings/ui_strings.grd',
-    },
-    'valgrind': {
-      'filepath': 'valgrind',
-    },
-    'version_assembly': {
-      'filepath': 'chrome/app/version_assembly',
-    },
-    'video': {
-      'filepath': 'content/browser/renderer_host/media/|'\
-                  'content/renderer/media/|'\
-                  'media/capture/video/|'\
-                  'media/filters/|'\
-                  'media/gpu/|'\
-                  '.*video.*',
-    },
-    'video_capture': {
-      'filepath': 'chrome/browser/media/.*(capture|media|webrtc)'\
-                  '|content/browser/renderer_host/media/.*(capture|media)'\
-                  '|content/renderer/media/.*(capture|media|webrtc)'\
-                  '|media/capture/'\
-                  '|media/muxers/'\
-                  '|services/video_capture/',
-    },
-    'views': {
-      # Applies to all files and subdirs within this directory.
-      'filepath': '^ui/views/',
-    },
-    'views_corewm': {
-      'filepath': 'ui/views/corewm/',
-    },
-    'virtual_keyboard': {
-      'filepath': 'ui/keyboard/'\
-                  '|chrome/test/data/chromeos/virtual_keyboard/'\
-                  '|extensions/browser/api/virtual_keyboard_private/'\
-                  '|ash/common/system/chromeos/virtual_keyboard/'\
-                  '|ash/virtual_keyboard',
-    },
-    'virtual_reality': {
-      'filepath': 'vr_shell/|'\
-                  '/vr/|'\
-                  'third_party/gvr',
-    },
-    'webrtc_browser_tests': {
-      'filepath': 'chrome/browser/media/.*webrtc.*browsertest|'\
-                  'content/browser/media/.*webrtc.*browsertest',
-    },
-    'website_settings': {
-      'filepath': 'chrome/browser/content_settings/'\
-                  '|chrome/browser/ui/views/website_settings/'\
-                  '|chrome/browser/ui/website_settings/'\
-                  '|chrome/common/content_settings'\
-                  '|components/content_settings/',
-    },
-    'windows_sandboxing': {
-      'filepath': 'sandbox/win/',
-    },
-    'x11': {
-      'filepath': 'content/browser/renderer_host/backing_store_x\.' \
-                  '|chrome/browser/chromeos/input_method/xkeyboard\.' \
-                  '|chrome/browser/chromeos/system_key_event_listener\.' \
-                  '|chrome/browser/chromeos/'\
-                  'xinput_hierarchy_changed_event_listener\.' \
-                  '|chrome/browser/chromeos/wm_' \
-                  '|ui/base/x/'
-    },
-    'zoom': {
-      'filepath': 'chrome/browser/ui/zoom/' \
-                  '|components/ui/zoom/' \
-                  '|content/browser/host_zoom_*' \
-                  '|content/browser/storage_partition_impl*' \
-                  '|content/public/browser/host_zoom_map.h' \
-                  '|content/public/browser/storage_partition.h'
-    },
-
-    'blink': {
-      'filepath': 'third_party/WebKit/',
-    },
-    'blink_accessibility': {
-      'filepath': 'third_party/WebKit/.*(accessibility|AXObjectCache|WebAX)'
-    },
-    'blink_animation': {
-      'filepath': 'third_party/WebKit/.*([Aa]nimat|[Tt]ransition)',
-    },
-    'blink_app_banner': {
-      'filepath': 'third_party/WebKit/Source/modules/app_banner' \
-                  '|third_party/WebKit/public/platform/modules/app_banner',
-    },
-    'blink_audio': {
-      'filepath': 'third_party/WebKit/Source/platform/audio' \
-                  '|third_party/WebKit/Source/modules/webaudio',
-    },
-    'blink_battery_status': {
-      'filepath': 'third_party/WebKit/Source/modules/battery/' \
-                  '|third_party/WebKit/LayoutTests/battery-status/' \
-                  '|third_party/WebKit/Source/core/frame/PlatformEvent(Controller|Dispatcher)'
-    },
-    'blink_bidi': {
-      'filepath': 'third_party/WebKit/Source/platform/text/.*Bidi' \
-                  '|third_party/WebKit/Source/core/rendering/.*Bidi',
-    },
-    'blink_bindings': {
-      'filepath': 'third_party/WebKit/Source/bindings',
-    },
-    'blink_bindings_serialization': {
-      'filepath': 'third_party/WebKit/Source/bindings/(core|modules)/v8/.*[Ss]erializ',
-    },
-    'blink_bluetooth': {
-      'filepath': 'third_party/WebKit/.*[Bb]luetooth'
-    },
-    'blink_canvas2d': {
-      'filepath': 'third_party/WebKit/Source/core/html/canvas' \
-                  '|third_party/WebKit/Source/core/html/HTMLCanvasElement' \
-                  '|third_party/WebKit/Source/modules/canvas2d' \
-                  '|third_party/WebKit/Source/platform/graphics/Canvas2D',
-    },
-    'blink_clipboard': {
-      'filepath': 'third_party/WebKit/Source/core/clipboard' \
-                  '|third_party/WebKit/Source/core/page/.*Drag' \
-                  '|third_party/WebKit/Source/platform/.*Drag' \
-                  '|third_party/WebKit/Source/platform/clipboard' \
-                  '|third_party/WebKit/Source/web/.*Drag' \
-                  '|third_party/WebKit/public/platform/.*Drag' \
-                  '|third_party/WebKit/public/web/.*Drag',
-    },
-    'blink_content_security_policy': {
-      'filepath': 'third_party/WebKit/Source/core/frame/csp' \
-                  '|third_party/WebKit/Source/core/events/SecurityPolicyViolationEvent' \
-                  '|third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy'
-    },
-    'blink_css': {
-      'filepath': 'third_party/WebKit/Source/core/css',
-    },
-    'blink_css_grid_layout': {
-      'filepath': 'third_party/WebKit/Source/core/layout/.*Grid' \
-                  '|third_party/WebKit/Source/core/paint/.*Grid' \
-                  '|third_party/WebKit/Source/core/css/.*Grid' \
-                  '|third_party/WebKit/LayoutTests/fast/css-grid-layout/' \
-                  '|third_party/WebKit/LayoutTests/ietestcenter/css3/grid/' \
-                  '|third_party/WebKit/LayoutTests/platform/.*/fast/css-grid-layout/' \
-                  '|third_party/WebKit/LayoutTests/platform/.*/ietestcenter/css3/grid/'
-    },
-    'blink_css_flexbox': {
-      'filepath': 'third_party/WebKit/Source/core/rendering/.*Flex' \
-                  '|third_party/WebKit/LayoutTests/fast/deprecated-flexbox/' \
-                  '|third_party/WebKit/LayoutTests/css3/flexbox/' \
-                  '|third_party/WebKit/LayoutTests/ietestcenter/css3/flexbox/'
-    },
-    'blink_css_fragmentation_tests': {
-      'filepath': 'third_party/WebKit/LayoutTests/fast/multicol/' \
-                  '|third_party/WebKit/LayoutTests/fast/pagination/' \
-                  '|third_party/WebKit/LayoutTests/printing/'
-    },
-    'blink_css_regions': {
-      'filepath': 'third_party/WebKit/Source/core/rendering/.*(Region|FlowThread)' \
-                  '|third_party/WebKit/Source/core/dom/NodeRendering' \
-                  '|third_party/WebKit/Source/core/dom/.*NamedFlow' \
-                  '|third_party/WebKit/Source/core/css/.*Region' \
-                  '|third_party/WebKit/LayoutTests/compositing/regions/' \
-                  '|third_party/WebKit/LayoutTests/fast/regions/' \
-                  '|third_party/WebKit/LayoutTests/platform/chromium.*/fast/regions/'
-    },
-    'blink_custom_elements': {
-      'filepath': 'third_party/WebKit/Source/core/dom/custom/' \
-                  '|third_party/WebKit/Source/bindings/v8/.*CustomElement',
-    },
-    'blink_device_light': {
-      'filepath': 'third_party/WebKit/Source/modules/device_light/' \
-                  '|third_party/WebKit/LayoutTests/fast/dom/DeviceLight/'
-    },
-    'blink_device_orientation': {
-      'filepath': 'third_party/WebKit/Source/modules/device_orientation/' \
-                  '|third_party/WebKit/LayoutTests/device_orientation/' \
-                  '|third_party/WebKit/Source/core/frame/PlatformEvent(Controller|Dispatcher)' \
-                  '|third_party/WebKit/Source/core/frame/DeviceSingleWindowEventController'
-    },
-    'blink_devtools': {
-      'filepath': 'third_party/WebKit/.*(inspector|DevTools|devtools)',
-    },
-    'blink_dom': {
-      'filepath': 'third_party/WebKit/Source/core/dom/'
-    },
-    'blink_events': {
-      'filepath': 'third_party/WebKit/Source/core/page/.*Event' \
-                  '|third_party/WebKit/Source/core/dom/.*Event' \
-                  '|third_party/WebKit/Source/core/css/.*Event' \
-                  '|third_party/WebKit/Source/platform/.*Event'
-    },
-    'blink_fetch': {
-      'filepath': 'third_party/WebKit/Source/platform/loader/fetch'
-    },
-    'blink_heap': {
-      'filepath': 'third_party/WebKit/Source/platform/heap' \
-                  '|base/allocator/partition_allocator/'
-    },
-    'blink_html': {
-      'filepath': 'third_party/WebKit/Source/core/html/'
-    },
-    'blink_loader': {
-      'filepath': 'third_party/WebKit/Source/core/loader', \
-      'filepath': 'third_party/WebKit/Source/platform/loader'
-    },
-    'blink_modules': {
-      'filepath': 'third_party/WebKit/Source/modules'
-    },
-    'blink_notifications': {
-      'filepath': 'third_party/WebKit/LayoutTests/http/tests/notifications' \
-                  '|third_party/WebKit/Source/modules/notifications' \
-                  '|third_party/WebKit/public/platform/modules/notifications'
-    },
-    'blink_owners': {
-      'filepath': 'third_party/WebKit/.*OWNERS',
-    },
-    'blink_paint': {
-      'filepath': 'third_party/WebKit/Source/core/paint/'
-    },
-    'blink_permissions': {
-      'filepath': 'third_party/WebKit/Source/modules/permissions/' \
-                  '|third_party/WebKit/public/platform/modules/permissions/',
-    },
-    'blink_preloadScanner': {
-      'filepath': 'third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner',
-    },
-    'blink_public_api': {
-      'filepath': 'third_party/WebKit/public'
-    },
-    'blink_push_messaging': {
-      'filepath': 'third_party/WebKit/LayoutTests/http/tests/push_messaging' \
-                  '|third_party/WebKit/Source/modules/push_messaging' \
-                  '|third_party/WebKit/public/platform/modules/push_messaging'
-    },
-    'blink_platform': {
-      'filepath': 'third_party/WebKit/Source/platform'
-    },
-    'blink_platform_graphics': {
-      'filepath': 'third_party/WebKit/Source/platform/fonts' \
-                  '|third_party/WebKit/Source/platform/geometry' \
-                  '|third_party/WebKit/Source/platform/graphics'
-    },
-    'blink_indexed_db': {
-      'filepath': 'third_party/WebKit/Source/modules/indexeddb/' \
-                  '|third_party/WebKit/Source/web/.*IDB' \
-                  '|third_party/WebKit/LayoutTests/storage/indexeddb' \
-                  '|third_party/WebKit/public/platform/.*IDB'
-    },
-    'blink_input': {
-      'filepath': 'third_party/WebKit/Source/core/input/'
-    },
-    'blink_layout': {
-      'filepath': 'third_party/WebKit/Source/core/layout' \
-                  '|third_party/WebKit/Source/core/rendering'
-    },
-    'blink_layout_ng': {
-      'filepath': 'third_party/WebKit/Source/core/layout/ng',
-    },
-    'blink_layers': {
-      'filepath': 'third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator' \
-                  '|third_party/WebKit/Source/platform/graphics/GraphicsLayer' \
-                  '|third_party/WebKit/Source/core/layout/Layer'
-    },
-    'blink_prerender': {
-      'filepath': 'third_party/WebKit/.*(Prerender|loader/LinkLoader|html/HTMLLinkElement)'
-    },
-    'blink_client_hints': {
-      'filepath': 'third_party/WebKit/Source/core/loader/AcceptClientHints*' \
-                  '|third_party/WebKit/Source/core/loader/FrameFetchContext*' \
-                  '|third_party/WebKit/Source/core/fetch/FetchContext*' \
-                  '|third_party/WebKit/Source/core/fetch/ImageResource*' \
-                  '|third_party/WebKit/Source/core/fetch/ResourceFetcher*'
-    },
-    'blink_track': {
-      'filepath': 'third_party/WebKit/Source/core/html/track/' \
-                  '|third_party/WebKit/Source/core/loader/TextTrack' \
-                  '|third_party/WebKit/Source/core/html/HTMLMediaElement' \
-                  '|third_party/WebKit/Source/core/html/HTMLTrackElement' \
-                  '|third_party/WebKit/Source/core/html/shadow/MediaControl' \
-                  '|third_party/WebKit/Source/core/css/mediaControl' \
-                  '|third_party/WebKit/LayoutTests/media/track/'
-    },
-    'blink_media': {
-      'filepath': 'third_party/WebKit/Source/core/css/mediaControls' \
-                  '|third_party/WebKit/Source/core/html/.*(Audio|Media|Video)' \
-                  '|third_party/WebKit/Source/core/html/shadow/MediaControl' \
-                  '|third_party/WebKit/Source/core/layout/LayoutMedia' \
-                  '|third_party/WebKit/Source/core/layout/LayoutTextTrackContainerElement' \
-                  '|third_party/WebKit/Source/modules/(encryptedmedia|mediasource)' \
-                  '|third_party/WebKit/Source/platform/drm/' \
-                  '|third_party/WebKit/Source/platform/graphics/media/' \
-                  '|third_party/WebKit/Source/web/.*Media' \
-                  '|third_party/WebKit/LayoutTests/media/' \
-                  '|third_party/WebKit/public/.*Media'
-    },
-    'blink_media_queries': {
-      'filepath': 'third_party/WebKit/Source/core/css/CSSMediaRule' \
-                    '|third_party/WebKit/Source/core/css/MediaList' \
-                    '|third_party/WebKit/Source/core/css/MediaQuery' \
-                    '|third_party/WebKit/Source/core/css/parser/MediaQuery'
-    },
-    'blink_navigator_content_utils': {
-      'filepath': 'third_party/WebKit/Source/modules/navigatorcontentutils' \
-                  '|third_party/WebKit/LayoutTests/fast/dom/navigatorcontentutils'
-    },
-    'blink_out_of_process_frames': {
-      'filepath': 'third_party/WebKit/Source/core/frame/FrameOwner' \
-                  '|third_party/WebKit/Source/core/frame/Frame\.' \
-                  '|third_party/WebKit/Source/web/WebFrame' \
-                  '|third_party/WebKit/Source/web/WebRemoteFrameImpl'
-    },
-    'blink_fileapi': {
-      'filepath': 'third_party/WebKit/Source/modules/filesystem/' \
-                  '|third_party/WebKit/Source/core/fileapi/' \
-                  '|third_party/WebKit/Source/platform/.*File' \
-                  '|third_party/WebKit/Source/web/.*File' \
-                  '|third_party/WebKit/LayoutTests/fast/file' \
-                  '|third_party/WebKit/public/.*File'
-    },
-    'blink_frames': {
-      'filepath': 'third_party/WebKit/Source/core/frame/'
-    },
-    'blink_quota': {
-      'filepath': 'third_party/WebKit/Source/modules/quota/' \
-                  '|third_party/WebKit/Source/web/.*Quota' \
-                  '|third_party/WebKit/public/.*Quota'
-    },
-    'blink_mediacapturefromelement': {
-      'filepath': 'third_party/WebKit/Source/modules/mediacapture/' \
-                  '|third_party/WebKit/Source/platform/exported/WebCanvasCapture' \
-                  '|third_party/WebKit/LayoutTests/fast/mediacapturefromelement/' \
-                  '|third_party/WebKit/public/platform/WebCanvasCapture'
-    },
-    'blink_mediarecorder': {
-      'filepath': 'third_party/WebKit/Source/modules/mediarecorder/' \
-                  '|third_party/WebKit/Source/platform/exported/WebMediaRecorder' \
-                  '|third_party/WebKit/LayoutTests/fast/mediarecorder/' \
-                  '|third_party/WebKit/public/platform/WebMediaRecorder'
-    },
-    'blink_mediastream': {
-      'filepath': 'third_party/WebKit/Source/modules/mediastream/' \
-                  '|third_party/WebKit/Source/platform/mediastream/' \
-                  '|third_party/WebKit/Source/platform/exported/WebMediaStream' \
-                  '|third_party/WebKit/Source/platform/exported/WebRTC' \
-                  '|third_party/WebKit/LayoutTests/fast/mediastream/'
-    },
-    'blink_geolocation': {
-      'filepath': 'third_party/WebKit/LayoutTests/geolocation-api/' \
-                  '|third_party/WebKit/Source/modules/geolocation/' \
-                  '|third_party/WebKit/Source/web/.*Geolocation' \
-                  '|third_party/WebKit/public/web/.*Geolocation'
-    },
-    'blink_htmlparser': {
-      'filepath': 'third_party/WebKit/Source/core/html/parser/'
-    },
-    'blink_screen_orientation': {
-      'filepath': 'third_party/WebKit/Source/modules/screen_orientation/' \
-                  '|third_party/WebKit/public/platform/modules/screen_orientation',
-    },
-    'blink_scheduler': {
-      'filepath': 'third_party/WebKit/Source/platform/scheduler' \
-                  '|third_party/WebKit/Source/core/html/parser/.*Scheduler'
-    },
-    'blink_serviceworkers' : {
-      'filepath': 'third_party/WebKit/Source/modules/serviceworkers' \
-                  '|third_party/WebKit/LayoutTests/http/tests/serviceworker'
-    },
-    'blink_serviceworkers_tests' : {
-      'filepath': 'third_party/WebKit/LayoutTests/http/tests/serviceworker'
-    },
-    'blink_spellcheck' : {
-      'filepath': 'third_party/WebKit/Source/core/editing/spellcheck'
-    },
-    'blink_spv2_layout_tests': {
-      'filepath': 'third_party/WebKit/LayoutTests/virtual/spv2'
-    },
-    'blink_style': {
-      'filepath': 'third_party/WebKit/.*(style/|Style)',
-    },
-    'blink_svg': {
-      'filepath': 'third_party/WebKit/Source/core/(layout/)?svg',
-    },
-    'blink_vibration': {
-      'filepath': 'third_party/WebKit/LayoutTests/vibration/' \
-                  '|third_party/WebKit/Source/modules/vibration/'
-    },
-    'blink_viewport_interaction': {
-      'filepath': 'third_party/WebKit/Source/core/css/.*Viewport' \
-                  '|third_party/WebKit/Source/core/dom/ViewportArguments' \
-                  '|third_party/WebKit/Source/core/html/HTMLMetaElement' \
-                  '|third_party/WebKit/Source/core/page/FrameView' \
-                  '|third_party/WebKit/Source/core/page/scrolling'
-    },
-    'blink_w3ctests': {
-      'filepath': 'third_party/WebKit/LayoutTests/external/' \
-                  '|third_party/WebKit/Tools/Scripts/webkitpy/w3c/'
-    },
-    'blink_web': {
-      'filepath': 'third_party/WebKit/Source/web'
-    },
-    'blink_webcomponents': {
-      'filepath': 'third_party/WebKit/Source/core/dom/shadow/' \
-                  '|third_party/WebKit/Source/core/dom/custom/' \
-                  '|third_party/WebKit/Source/core/html/imports/' \
-                  '|third_party/WebKit/Source/bindings/v8/custom/V8CustomElementConstructorCustom' \
-                  '|third_party/WebKit/Source/bindings/v8/CustomElementHelpers'
-    },
-    'blink_webp': {
-      'filepath': 'third_party/WebKit/Source/platform/image-decoders/webp' \
-                  '|third_party/WebKit/Source/platform/image-encoders/skia/WEBP'
-    },
-    'blink_websockets': {
-      'filepath': 'third_party/WebKit/Source/modules/websockets/'
-    },
-    'blink_workers': {
-      'filepath': 'third_party/WebKit/Source/core/workers',
-    },
-    'blink_wtf': {
-      'filepath': 'third_party/WebKit/Source/wtf',
-    },
-    'blink_xmlhttprequest': {
-      'filepath': 'third_party/WebKit/Source/core/xmlhttprequest/'
-    },
-    'test_runner': {
-      'filepath': 'components/test_runner/' \
-                  '|content/shell/(common|browser|renderer)/layout_test/' \
-                  '|content/test/layouttest_support.cc' \
-                  '|content/public/test/layouttest_support.h' \
-    },
-    'xml': {
-      'filepath': 'third_party/WebKit/Source/core/xml/' \
-                  '|third_party/libxml/' \
-                  '|third_party/libxslt/',
-    },
-  },
-
-  ##############################################################################
-  # Please keep alphabetical
-  ##############################################################################
-  'WATCHLISTS': {
-    'about_flags': ['asvitkine+watch@chromium.org'],
-    'accelerator_table': ['derat+watch@chromium.org',
-                          'yusukes+watch@chromium.org'],
-    'accessibility': ['aboxhall+watch@chromium.org',
-                      'dmazzoni+watch@chromium.org',
-                      'dtseng+watch@chromium.org',
-                      'je_julie.kim@chromium.org',
-                      'nektar+watch@chromium.org',
-                      'yuzo+watch@chromium.org'],
-    'add_to_homescreen': ['agrieve+watch@chromium.org',
-                          'dominickn+watch@chromium.org',
-                          'pkotwicz+watch@chromium.org',
-                          'zpeng+watch@chromium.org'],
-    'android_crash_reporting': ['asvitkine+watch@chromium.org'],
-    'android_crazy_linker': ['johnmaguire+watch@google.com'],
-    'android_infobars': ['dfalcantara+watch@chromium.org'],
-    'android_infra': ['agrieve+watch@chromium.org',
-                      'jbudorick+watch@chromium.org',
-                      'mikecase+watch@chromium.org'],
-    'android_java': ['agrieve+watch@chromium.org'],
-    'android_loading': ['gabadie+watch@chromium.org',
-                        'lizeb+watch-android-loading@chromium.org'],
-    'android_media': ['avayvod+watch@chromium.org',
-                      'mlamouri+watch-media@chromium.org'],
-    'android_studio': ['wnwen+watch@chromium.org',
-                       'nyquist+watch@chromium.org'],
-    'android_tab': ['avayvod+watch@chromium.org',
-                    'dtrainor@chromium.org'],
-    'android_uma_settings': ['asvitkine+watch@chromium.org',
-                             'gayane+watch@chromium.org'],
-    'android_webapk': ['zpeng+watch@chromium.org'],
-    'android_webview': ['android-webview-reviews@chromium.org'],
-    'app_list': ['mgiuca@chromium.org',
-                 'tfarina@chromium.org'],
-    'app_shortcuts': ['mgiuca@chromium.org',
-                      'tapted@chromium.org'],
-    'appcache': ['michaeln@chromium.org'],
-    'apps': ['chromium-apps-reviews@chromium.org',
-             'tfarina@chromium.org'],
-    'arc': ['elijahtaylor+arcwatch@chromium.org',
-            'hidehiko+watch@chromium.org',
-            'lhchavez+watch@chromium.org',
-            'victorhsieh+watch@chromium.org',
-            'yusukes+watch@chromium.org'],
-    'arc_auth': ['khmel+watch@chromium.org'],
-    'arc_kiosk': ['poromov+watch@chromium.org'],
-    'arc_net': ['abhishekbh@chromium.org',
-                'cernekee@chromium.org',
-                'snanda@chromium.org'],
-    'arc_power': ['ejcaruso+watch@chromium.org'],
-    'ash': ['kalyan.kondapally@intel.com',
-            'sadrul@chromium.org'],
-    'aura': ['kalyan.kondapally@intel.com',
-             'sadrul@chromium.org'],
-    'aura_compositor': ['danakj+watch@chromium.org',
-                        'jbauman+watch@chromium.org',
-                        'kalyan.kondapally@intel.com',
-                        'piman+watch@chromium.org'],
-    'auto_bisect': ['auto-bisect-reviews@chromium.org'],
-    'autofill': ['estade+watch@chromium.org',
-                 'rouslan+autofill@chromium.org',
-                 'vabr+watchlistautofill@chromium.org',
-                 'mathp+autofillwatch@chromium.org',
-                 'sebsg+autofillwatch@chromium.org',
-                 'rogerm+autofillwatch@chromium.org'],
-    'background_fetch': ['awdf+watch@chromium.org',
-                         'harkness+watch@chromium.org',
-                         'peter@chromium.org'],
-    'background_sync': ['chasej+watch@chromium.org',
-                        'iclelland+watch@chromium.org',
-                        'jkarlin+watch@chromium.org',
-                        'peter@chromium.org'],
-    'banners': ['dominickn+watch@chromium.org',
-                'pkotwicz+watch@chromium.org',
-                'zpeng+watch@chromium.org'],
-    'base_allocator': ['dmikurube@chromium.org',
-                       'wfh+watch@chromium.org'],
-    'base_memory': ['gavinp+memory@chromium.org'],
-    'base_task_scheduler': ['fdoray+watch@chromium.org',
-                            'gab+watch@chromium.org',
-                            'robliao+watch@chromium.org'],
-    'base_win': ['grt+watch@chromium.org',
-                 'wfh+watch@chromium.org'],
-    'base': ['vmpstr+watch@chromium.org'],
-    'battery_status': ['timvolodine@chromium.org'],
-    'blink': ['blink-reviews@chromium.org'],
-    'blink_accessibility': ['aboxhall@chromium.org',
-                            'dmazzoni@chromium.org',
-                            'je_julie.kim@chromium.org',
-                            'nektar@chromium.org'],
-    'blink_animation': ['alexis.menard@intel.com',
-                        'blink-reviews-animation@chromium.org',
-                        'ericwilligers@chromium.org',
-                        'rjwright@chromium.org',
-                        'shans@chromium.org'],
-    'blink_app_banner': ['mlamouri+watch-blink@chromium.org'],
-    'blink_audio': ['hongchan@chromium.org',
-                    'rtoy@chromium.org'],
-    'blink_battery_status': ['mlamouri+watch-blink@chromium.org',
-                             'timvolodine@chromium.org'],
-    'blink_bidi': ['leviw+bidiwatch@chromium.org'],
-    'blink_bindings': ['blink-reviews-bindings@chromium.org'],
-    'blink_bindings_serialization': ['jbroman+watch@chromium.org'],
-    'blink_bluetooth': ['ortuno+watch@chromium.org',
-                        'scheib+watch@chromium.org'],
-    'blink_canvas2d': ['ajuma+watch-canvas@chromium.org',
-                       'cabanier@adobe.com',
-                       'dongseong.hwang@intel.com',
-                       'junov@chromium.org'],
-    'blink_client_hints': ['yoav@yoav.ws'],
-    'blink_clipboard': ['dcheng@chromium.org'],
-    'blink_css': ['alexis.menard@intel.com',
-                  'apavlov+blink@chromium.org',
-                  'blink-reviews-css@chromium.org',
-                  'dglazkov+blink@chromium.org',
-                  'rob.buis@samsung.com'],
-    'blink_css_flexbox': ['cbiesinger@chromium.org'],
-    'blink_css_fragmentation_tests': ['mstensho@opera.com'],
-    'blink_css_grid_layout': ['jfernandez@igalia.com',
-                              'rego@igalia.com',
-                              'svillar@igalia.com'],
-    'blink_css_regions': ['ChromiumBugTracker@adobe.com'],
-    'blink_custom_elements': ['dglazkov+blink@chromium.org',
-                              'dominicc+watchlist@chromium.org'],
-    'blink_device_light': ['mlamouri+watch-blink@chromium.org',
-                           'timvolodine@chromium.org'],
-    'blink_device_orientation': ['mlamouri+watch-blink@chromium.org',
-                                 'timvolodine@chromium.org'],
-    'blink_devtools': ['apavlov+blink@chromium.org',
-                       'caseq+blink@chromium.org',
-                       'devtools-reviews@chromium.org',
-                       'kozyatinskiy+blink@chromium.org',
-                       'lushnikov+blink@chromium.org',
-                       'pfeldman+blink@chromium.org'],
-    'blink_dom': ['blink-reviews-dom@chromium.org',
-                  'dglazkov+blink@chromium.org',
-                  'eae+blinkwatch@chromium.org',
-                  'rob.buis@samsung.com',
-                  'sigbjornf@opera.com'],
-    'blink_events': ['blink-reviews-events@chromium.org',
-                     'dglazkov+blink@chromium.org',
-                     'dtapuska+blinkwatch@chromium.org',
-                     'eae+blinkwatch@chromium.org'],
-    'blink_fetch': ['gavinp+loader@chromium.org',
-                    'japhet@chromium.org',
-                    'loading-reviews+fetch@chromium.org',
-                    'tyoshino+watch@chromium.org'],
-    'blink_fileapi': ['kinuko+fileapi@chromium.org',
-                      'nhiroki@chromium.org',
-                      'tzik@chromium.org'],
-    'blink_frames': ['blink-reviews-frames@chromium.org'],
-    'blink_geolocation': ['mlamouri+watch-blink@chromium.org',
-                          'mvanouwerkerk+watch@chromium.org',
-                          'timvolodine@chromium.org'],
-    'blink_heap': ['ager@chromium.org',
-                   'haraken@chromium.org',
-                   'kouhei+heap@chromium.org',
-                   'oilpan-reviews@chromium.org'],
-    'blink_html': ['blink-reviews-html@chromium.org',
-                   'dglazkov+blink@chromium.org'],
-    'blink_htmlparser': ['kinuko+watch@chromium.org',
-                         'loading-reviews+parser@chromium.org'],
-    'blink_indexed_db': ['cmumford@chromium.org',
-                         'jsbell+idb@chromium.org'],
-    'blink_input': ['dtapuska+blinkwatch@chromium.org',
-                    'nzolghadr@chromium.org'],
-    'blink_layers': ['blink-layers+watch@chromium.org'],
-    'blink_layout': ['blink-reviews-layout@chromium.org',
-                     'eae+blinkwatch@chromium.org',
-                     'jchaffraix+rendering@chromium.org',
-                     'leviw+renderwatch@chromium.org',
-                     'pdr+renderingwatchlist@chromium.org',
-                     'szager+layoutwatch@chromium.org',
-                     'zoltan@webkit.org'],
-    'blink_layout_ng': ['ojan+watch@chromium.org',
-                        'cbiesinger@chromium.org',
-                        'glebl+reviews@chromium.org',
-                        'dgrogan+ng@chromium.org',
-                        'atotic+reviews@chromium.org'],
-    'blink_loader': ['gavinp+loader@chromium.org',
-                     'japhet@chromium.org',
-                     'loading-reviews@chromium.org',
-                     'tyoshino+watch@chromium.org'],
-    'blink_media': ['feature-media-reviews@chromium.org',
-                    'eric.carlson@apple.com',
-                    'mlamouri+watch-blink@chromium.org',
-                    'srirama.m@samsung.com'],
-    'blink_media_queries': ['kenneth.christiansen@gmail.com',
-                            'yoav@yoav.ws'],
-    'blink_mediacapturefromelement': ['emircan+watch+capturefromdom@chromium.org',
-                                      'mcasas+watch+capturefromdom@chromium.org'],
-    'blink_mediarecorder': ['emircan+watch+mediarecorder@chromium.org',
-                            'mcasas+watch+mediarecorder@chromium.org'],
-    'blink_mediastream': ['mcasas+watch+mediastream@chromium.org',
-                          'tommyw+watchlist@chromium.org'],
-    'blink_modules': ['haraken@chromium.org'],
-    'blink_navigator_content_utils': ['gyuyoung.kim@chromium.org'],
-    'blink_notifications': ['awdf+watch@chromium.org',
-                            'peter@chromium.org'],
-    'blink_out_of_process_frames': ['dcheng@chromium.org',
-                                    'mlamouri+watch-blink@chromium.org'],
-    'blink_owners': ['abarth@chromium.org'],
-    'blink_paint' : ['blink-reviews-paint@chromium.org',
-                     'dongseong.hwang@intel.com'],
-    'blink_permissions': ['mlamouri+watch-blink@chromium.org'],
-    'blink_platform': ['kinuko+watch@chromium.org'],
-    'blink_platform_graphics': ['ajuma+watch@chromium.org',
-                                'blink-reviews-platform-graphics@chromium.org',
-                                'cabanier@adobe.com',
-                                'danakj+watch@chromium.org',
-                                'dongseong.hwang@intel.com',
-                                'drott+blinkwatch@chromium.org',
-                                'dschulze@chromium.org',
-                                'fmalita+watch@chromium.org',
-                                'jbroman@chromium.org',
-                                'junov@chromium.org',
-                                'pdr+graphicswatchlist@chromium.org',
-                                'rob.buis@samsung.com',
-                                'schenney@chromium.org'],
-    'blink_prerender': ['gavinp+prerender@chromium.org',
-                        'yoav@yoav.ws'],
-    'blink_preloadScanner': ['yoav@yoav.ws'],
-    'blink_public_api': ['blink-reviews-api@chromium.org',
-                         'dglazkov+blink@chromium.org'],
-    'blink_push_messaging': ['awdf+watch@chromium.org',
-                             'johnme+watch@chromium.org',
-                             'peter@chromium.org'],
-    'blink_quota': ['kinuko+fileapi@chromium.org',
-                    'nhiroki@chromium.org',
-                    'tzik@chromium.org'],
-    'blink_scheduler': ['scheduler-bugs@chromium.org'],
-    'blink_screen_orientation': ['mlamouri+watch-blink@chromium.org'],
-    'blink_serviceworkers': ['falken+watch@chromium.org',
-                             'horo+watch@chromium.org',
-                             'jsbell+serviceworker@chromium.org',
-                             'kinuko+serviceworker@chromium.org',
-                             'michaeln@chromium.org',
-                             'nhiroki@chromium.org',
-                             'serviceworker-reviews@chromium.org',
-                             'shimazu+serviceworker@chromium.org',
-                             'tzik@chromium.org'],
-    'blink_serviceworkers_tests': ['kenjibaheux+watch@chromium.org'],
-    'blink_spellcheck' : ['groby+blinkspell@chromium.org',
-                          'timvolodine@chromium.org'],
-    'blink_spv2_layout_tests': ['jbroman+watch@chromium.org',
-                                'pdr+virtualspv2watchlist@chromium.org'],
-    'blink_style': ['blink-reviews-style@chromium.org'],
-    'blink_svg': ['dschulze@chromium.org',
-                  'fmalita+watch@chromium.org',
-                  'fs@opera.com',
-                  'gyuyoung.kim@chromium.org',
-                  'kouhei+svg@chromium.org',
-                  'pdr+svgwatchlist@chromium.org',
-                  'rob.buis@samsung.com',
-                  'schenney@chromium.org'],
-    'blink_track': ['eric.carlson@apple.com',
-                    'fs@opera.com',
-                    'glenn@chromium.org',
-                    'silviapf@chromium.org'],
-    'blink_vibration': ['mlamouri+watch-blink@chromium.org',
-                        'mvanouwerkerk+watch@chromium.org'],
-    'blink_viewport_interaction': ['kenneth.christiansen@gmail.com'],
-    'blink_w3ctests': ['blink-reviews-w3ctests@chromium.org'],
-    'blink_web': ['kinuko+watch@chromium.org'],
-    'blink_webcomponents': ['dglazkov+blink@chromium.org',
-                            'webcomponents-bugzilla@chromium.org'],
-    'blink_webp': ['jzern@chromium.org',
-                   'skal@google.com',
-                   'urvang@chromium.org'],
-    'blink_websockets': ['tyoshino+watch@chromium.org',
-                         'yhirano+watch@chromium.org'],
-    'blink_workers': ['blink-worker-reviews@chromium.org',
-                      'falken+watch@chromium.org',
-                      'horo+watch@chromium.org',
-                      'kinuko+worker@chromium.org',
-                      'shimazu+worker@chromium.org'],
-    'blink_wtf': ['blink-reviews-wtf@chromium.org',
-                  'mikhail.pozdnyakov@intel.com'],
-    'blink_xmlhttprequest': ['tyoshino+watch@chromium.org'],
-    'bookmarks': ['tfarina@chromium.org'],
-    'bottombar': ['donnd+watch@chromium.org',
-                  'mdjones+watch@chromium.org'],
-    'browser_chromeos': ['davemoore+watch@chromium.org'],
-    'browser_components': ['browser-components-watch@chromium.org'],
-    'browser_compositor': ['piman+watch@chromium.org',
-                           'vollick@chromium.org'],
-    'browser_resources': ['arv+watch@chromium.org'],
-    'browser_resources_md': ['michaelpg+watch-md-ui@chromium.org'],
-    'browsing_data': ['markusheintz@chromium.org',
-                      'msramek+watch@chromium.org'],
-    'bubble': ['hcarmona+bubble@chromium.org',
-               'groby+bubble@chromium.org',
-               'msw+watch@chromium.org',
-               'rouslan+bubble@chromium.org'],
-    'cache_storage': ['jkarlin+watch@chromium.org',
-                      'nhiroki@chromium.org'],
-    'cast': ['avayvod+watch@chromium.org',
-             'imcheng+watch@chromium.org',
-             'isheriff+watch@chromium.org',
-             'jasonroberts+watch@google.com',
-             'miu+watch@chromium.org',
-             'xjz+watch@chromium.org'],
-    'cast_certificate': ['dougsteed+watch@chromium.org',
-                         'ryanchung+watch@chromium.org'],
-    'cc': ['cc-bugs@chromium.org'],
-    'certificate_transparency': ['certificate-transparency-chrome@googlegroups.com',
-                                 'eranm@chromium.org',
-                                 'martijn+crwatch@martijnc.be',
-                                 'rsleevi+watch@chromium.org'],
-    'chrome_elf': ['caitkp+watch@chromium.org',
-                   'pennymac+watch@chromium.org'],
-    'chrome_grc': ['chrome-grc-reviews@chromium.org'],
-    'chrome_views': ['tfarina@chromium.org'],
-    'chromecast': ['alokp+watch@chromium.org',
-                   'halliwell+watch@chromium.org',
-                   'lcwu+watch@chromium.org'],
-    'chromecast_public': ['gfhuang+watch@chromium.org'],
-    'chromedriver': ['samuong+watch@chromium.org'],
-    'chromeos': ['oshima+watch@chromium.org'],
-    'chromeos_attestation': ['dkrahn+watch@chromium.org'],
-    'chromeos_calculator': ['dharcourt@chromium.org'],
-    'chromeos_dbus': ['hashimoto+watch@chromium.org'],
-    'chromeos_geolocation': ['alemate+watch@chromium.org'],
-    'chromeos_login': ['achuith+watch@chromium.org',
-                       'alemate+watch@chromium.org'],
-    'chromeos_net': ['stevenjb+watch@chromium.org'],
-    'chromeos_power': ['derat+watch@chromium.org'],
-    'chromeos_timezone': ['alemate+watch@chromium.org'],
-    'chromeos_webui': ['alemate+watch@chromium.org'],
-    'clang_update': ['dmikurube+clang@chromium.org',
-                     'dsinclair@chromium.org',
-                     'eugenis+clang@chromium.org',
-                     'glider+clang@chromium.org',
-                     'hans@chromium.org',
-                     'rnk@chromium.org',
-                     'thakis@chromium.org',
-                     'thestig@chromium.org',
-                     'ukai+watch@chromium.org',
-                     'vmpstr+watch@chromium.org',
-                     'yunlian@chromium.org'],
-    'clipboard': ['dcheng@chromium.org'],
-    'closure': ['dbeam+watch-closure@chromium.org',
-                'jlklein+watch-closure@chromium.org',
-                'vitalyp+closure@chromium.org'],
-    'components_deps': ['blundell+watchlist@chromium.org',
-                        'droger+watchlist@chromium.org',
-                        'sdefresne+watchlist@chromium.org'],
-    'content': ['darin-cc@chromium.org',
-                'jam@chromium.org'],
-    'content_bluetooth': ['ortuno+watch@chromium.org',
-                          'scheib+watch@chromium.org'],
-    'content_loader': ['loading-reviews@chromium.org',
-                       'mmenke@chromium.org',
-                       'rdsmith@chromium.org'],
-    'content_renderer': ['mlamouri+watch-content@chromium.org'],
-    'content_shell': ['jochen+watch@chromium.org',
-                      'mlamouri+watch-content@chromium.org',
-                      'peter@chromium.org'],
-    'content_worker': ['blink-worker-reviews@chromium.org',
-                       'kinuko+watch@chromium.org'],
-    'contextual_search': ['donnd+watch@chromium.org',
-                          'twellington+watch@chromium.org'],
-    'courgette': ['huangs+watch@chromium.org',
-                  'wfh+watch@chromium.org'],
-    'cr_elements': ['dbeam+watch-elements@chromium.org',
-                    'michaelpg+watch-elements@chromium.org',
-                    'stevenjb+watch-md-settings@chromium.org'],
-    'custom_tabs': ['lizeb+watch-custom-tabs@chromium.org'],
-    'data_reduction_proxy': ['tbansal+watch-data-reduction-proxy@chromium.org'],
-    'deep_memory_profiler': ['dmikurube@chromium.org'],
-    'device_bluetooth': ['ortuno+watch@chromium.org',
-                         'scheib+watch@chromium.org'],
-    'device_sensors': ['mlamouri+watch-sensors@chromium.org',
-                       'rijubrata.bhaumik@intel.com',
-                       'timvolodine@chromium.org'],
-    'developer_recommended_flags': ['scheib+watch@chromium.org'],
-    'devtools': ['devtools-reviews@chromium.org',
-                 'pfeldman@chromium.org'],
-    'disk_cache': ['gavinp+disk@chromium.org'],
-    'download': ['asanka@chromium.org'],
-    'downloads_ui': ['asanka@chromium.org',
-                     'dbeam+watch-downloads@chromium.org'],
-    'drive': ['tfarina@chromium.org'],
-    'drive_resource_metadata': ['hashimoto+watch@chromium.org'],
-    'eme': ['eme-reviews@chromium.org'],
-    'events': ['tdresser+watch@chromium.org'],
-    'extension': ['chromium-apps-reviews@chromium.org',
-                  'extensions-reviews@chromium.org'],
-    'feature_policy': ['lunalu@chromium.org',
-                       'iclelland@chromium.org'],
-    'feedback_ui': ['apacible+watch@chromium.org'],
-    'fileapi': ['kinuko+fileapi@chromium.org',
-                'nhiroki@chromium.org',
-                'tzik@chromium.org'],
-    'filebrowse': ['rginda+watch@chromium.org'],
-    'filesapp': ['fukino+watch@chromium.org',
-                 'oka+watch@chromium.org',
-                 'yamaguchi+watch@chromium.org'],
-    'filesapp_ui': ['mtomasz+watch@chromium.org'],
-    'ftp': ['phajdan.jr@chromium.org'],
-    'fuzzing': ['fuzzing@chromium.org'],
-    'gcm': ['johnme+watch@chromium.org',
-            'peter@chromium.org',
-            'zea+watch@chromium.org'],
-    'generic_sensor': ['alexander.shalamov@intel.com',
-                       'mikhail.pozdnyakov@intel.com',
-                       'wanming.lin@intel.com'],
-    'geolocation': ['mlamouri+watch-geolocation@chromium.org',
-                    'mvanouwerkerk@chromium.org'],
-    'gfx_geometry': ['cc-bugs@chromium.org'],
-    'gfx_image': ['rsesek+watch@chromium.org'],
-    'gn': ['agrieve+watch@chromium.org',
-           'dpranke@chromium.org',
-           'tfarina@chromium.org'],
-    'goma': ['shinyak+cc@chromium.com',
-             'tikuta+cc@chromium.com',
-             'ukai+cc@chromium.com',
-             'yyanagisawa+cc@chromium.com'],
-    'gpu': ['piman+watch@chromium.org'],
-    'history_ui': ['dbeam+watch-history@chromium.org',
-                   'dubroy@chromium.org',
-                   'pam+watch@chromium.org'],
-    'hotword': ['rlp+watch@chromium.org'],
-    'i18n': ['jshin+watch@chromium.org'],
-    'importer': ['tfarina@chromium.org'],
-    'indexed_db': ['cmumford@chromium.org',
-                   'jsbell+idb@chromium.org'],
-    'ink_drop': ['bruthig+ink_drop@chromium.org'],
-    'input': ['dtapuska+chromiumwatch@chromium.org'],
-    'installer': ['grt+watch@chromium.org',
-                  'pennymac+watch@chromium.org',
-                  'wfh+watch@chromium.org'],
-    'installer_linux': [ 'mmoss@chromium.org'],
-    'instant': ['dcblack@chromium.org',
-                'donnd+watch@chromium.org',
-                'jered@chromium.org',
-                'jfweitz+watch@chromium.org',
-                'kmadhusu+watch@chromium.org',
-                'melevin+watch@chromium.org',
-                'samarth+watch@chromium.org',
-                'skanuj+watch@chromium.org'],
-    'ios': ['ios-reviews@chromium.org'],
-    'ios_chrome': ['ios-reviews+chrome@chromium.org',
-                   'pkl@chromium.org',
-                   'sdefresne+watch@chromium.org',
-                   'noyau+watch@chromium.org',
-                   'marq+watch@chromium.org'],
-    'ios_clean': ['ios-reviews+clean@chromium.org',
-                  'marq+scrutinize@chromium.org',
-                  'lpromero+watch@chromium.org'],
-    'ios_showcase': ['ios-reviews+showcase@chromium.org',
-                     'marq+watch@chromium.org',
-                     'lpromero+watch@chromium.org'],
-    'ios_web': ['ios-reviews+web@chromium.org',
-                'eugenebut@chromium.org'],
-    'ipc': ['darin-cc@chromium.org',
-            'jam@chromium.org'],
-    'libwebp': ['jzern@chromium.org',
-                'skal@google.com',
-                'urvang@chromium.org'],
-    'libvpx': ['fgalligan@chromium.org',
-               'johannkoenig@chromium.org',
-               'jzern@chromium.org',
-               'tomfinegan@chromium.org'],
-    'linux_fonts': ['derat+watch@chromium.org'],
-    'linux_sandboxing': ['jln+watch@chromium.org'],
-    'linux_seccomp_bpf': ['jln+watch@chromium.org'],
-    'login': ['vabr+watchlistlogin@chromium.org'],
-    'mac' : ['mac-reviews@chromium.org'],
-    'manifest': ['mlamouri+watch-manifest@chromium.org'],
-    'md_settings': ['dbeam+watch-settings@chromium.org',
-                    'michaelpg+watch-md-settings@chromium.org',
-                    'stevenjb+watch-md-settings@chromium.org'],
-    'media': ['feature-media-reviews@chromium.org'],
-    'media_galleries': ['thestig@chromium.org',
-                        'tommycli@chromium.org'],
-    'media_mojo': ['alokp+watch@chromium.org'],
-    'media_remoting': ['apacible+watch@chromium.org',
-                       'erickung+watch@chromium.org',
-                       'miu+watch@chromium.org',
-                       'xjz+watch@chromium.org'],
-    'media_router': ['media-router+watch@chromium.org'],
-    'message_loop': ['sadrul@chromium.org'],
-    'metrics': ['asvitkine+watch@chromium.org'],
-    'metrics_xml_files': ['asvitkine+watch@chromium.org'],
-    'midi': ['toyoshim+midi@chromium.org'],
-    'mojo': ['aa@chromium.org',
-             'abarth@chromium.org',
-             'darin@chromium.org',
-             'qsr+mojo@chromium.org',
-             'viettrungluu+watch@chromium.org',
-             'yzshen+watch@chromium.org'],
-    'mouse_lock': ['scheib+watch@chromium.org'],
-    'mus': ['rjkroege@chromium.org'],
-    'nacl': ['native-client-reviews@googlegroups.com'],
-    'native_client_sdk': ['binji+watch@chromium.org',
-                          'sbc@chromium.org'],
-    'navigation': ['creis+watch@chromium.org',
-                   'nasko+codewatch@chromium.org'],
-    'net': ['cbentzel+watch@chromium.org',
-            'net-reviews@chromium.org'],
-    'net_base': ['bnc+watch@chromium.org'],
-    'net_error_list': ['mmenke@chromium.org'],
-    'net_http2': ['bnc+watch@chromium.org'],
-    'net_log': ['bnc+watch@chromium.org',
-                'eroman@chromium.org',
-                'mmenke@chromium.org'],
-    'net_spdy': ['bnc+watch@chromium.org'],
-    'netinfo': ['jkarlin+watch@chromium.org'],
-    'notifications': ['awdf+watch@chromium.org',
-                      'mlamouri+watch-notifications@chromium.org',
-                      'peter@chromium.org'],
-    'nqe': ['tbansal+watch-nqe@chromium.org'],
-    'ntp': ['dbeam+watch-ntp@chromium.org',
-            'pedrosimonetti+watch@chromium.org'],
-    'ntp_snippets': ['ntp-dev+reviews@chromium.org',
-                     'noyau+watch@chromium.org'],
-    'ntp_tiles': ['ntp-dev+reviews@chromium.org',
-                  'noyau+watch@chromium.org'],
-    'offline_pages': ['chili+watch@chromium.org',
-                      'dewittj+watch@chromium.org',
-                      'dimich+watch@chromium.org',
-                      'fgorski+watch@chromium.org',
-                      'petewil+watch@chromium.org',
-                      'romax+watch@chromium.org'],
-    'omnibox': ['jdonnelly+watch@chromium.org'],
-    'options': ['dbeam+watch-options@chromium.org',
-                'michaelpg+watch-options@chromium.org'],
-    'origin_trials': ['chasej+watch@chromium.org',
-                      'iclelland+watch@chromuim.org'],
-    'ozone': ['kalyan.kondapally@intel.com',
-              'ozone-reviews@chromium.org'],
-    'page_load_metrics' : ['csharrison+watch@chromium.org',
-                           'loading-reviews+metrics@chromium.org'],
-    'panels': ['dcheng@chromium.org',
-               'dimich@chromium.org',
-               'jennb@chromium.org',
-               'jianli@chromium.org'],
-    'password_manager': ['gcasto+watchlist@chromium.org',
-                         'vabr+watchlistpasswordmanager@chromium.org'],
-    'payments': ['rouslan+payments@chromium.org',
-                 'sebsg+paymentswatch@chromium.org',
-                 'gogerald+paymentswatch@chromium.org',
-                 'mahmadi+paymentswatch@chromium.org'],
-    'payments_ios': ['mahmadi+paymentsioswatch@chromium.org'],
-    'pepper_api': ['binji+watch@chromium.org',
-                   'bradnelson+warch@chromium.org',
-                   'ihf+watch@chromium.org',
-                   'piman+watch@chromium.org',
-                   'teravest+watch@chromium.org',
-                   'tzik@chromium.org',
-                   'yusukes+watch@chromium.org'],
-    'permissions': ['mlamouri+watch-permissions@chromium.org',
-                    'raymes+watch@chromium.org'],
-    'plugin': ['jam@chromium.org'],
-    'policy_definitions': ['tnagel+watch@chromium.org'],
-    'polymer': ['dbeam+watch-polymer@chromium.org',
-                'michaelpg+watch-polymer@chromium.org'],
-    'precache': ['wifiprefetch-reviews@google.com'],
-    'prepopulated_engines': ['vasilii+watch@chromium.org'],
-    'prerender': ['cbentzel+watch@chromium.org',
-                  'gavinp+prer@chromium.org',
-                  'tburkard+watch@chromium.org'],
-    'push_messaging': ['harkness+watch@chromium.org',
-                       'johnme+watch@chromium.org',
-                       'peter@chromium.org'],
-    'reading_list': ['stkhapugin@chromium.org'],
-    'remoting': ['chromoting-reviews@chromium.org'],
-    'rlz_id': ['alito+watch@chromium.org',
-               'gab+watch@chromium.org',
-               'robertshield+watch@chromium.org'],
-    'safe_browsing': ['grt+watch@chromium.org'],
-    'safe_browsing_db': ['vakh+watch@chromium.org'],
-    'scheduler': ['scheduler-bugs@chromium.org'],
-    'screen_orientation': ['mlamouri+watch-screen-orientation@chromium.org'],
-    'service_worker': ['horo+watch@chromium.org',
-                       'jsbell+serviceworker@chromium.org',
-                       'kinuko+serviceworker@chromium.org',
-                       'michaeln@chromium.org',
-                       'nhiroki@chromium.org',
-                       'serviceworker-reviews@chromium.org',
-                       'shimazu+serviceworker@chromium.org',
-                       'tzik@chromium.org'],
-    'site_engagement': ['dominickn+watch@chromium.org'],
-    'site_instance': ['ajwong+watch@chromium.org',
-                      'creis+watch@chromium.org',
-                      'nasko+codewatch@chromium.org'],
-    'spellcheck': ['groby+spellwatch@chromium.org',
-                   'rlp+watch@chromium.org',
-                   'rouslan+spell@chromium.org',
-                   'timvolodine@chromium.org'],
-    'streams': ['zork+watch@chromium.org'],
-    'styleguide': ['danakj+watch@chromium.org',
-                   'jbroman+cpp@chromium.org',
-                   'vmpstr+watch@chromium.org'],
-    'subresource_filter': ['subresource-filter-reviews@chromium.org'],
-    'supervised_users': ['pam+watch@chromium.org'],
-    'swreporter': ['alito+watch@chromium.org',
-                   'ftirelo+watch@chromium.org',
-                   'joenotcharles+watch@chromium.org'],
-    'sync': ['sync-reviews@chromium.org'],
-    'syncfs': ['kinuko+fileapi@chromium.org',
-               'nhiroki@chromium.org',
-               'tzik@chromium.org'],
-    'tab_alert_indicators': ['miu+watch@chromium.org'],
-    'tab_capture': ['miu+watch@chromium.org',
-                    'xjz+watch@chromium.org'],
-    'tab_contents': ['ajwong+watch@chromium.org',
-                     'avi@chromium.org',
-                     'creis+watch@chromium.org'],
-    'tcmalloc': ['dmikurube@chromium.org'],
-    'telemetry': ['telemetry-reviews@chromium.org'],
-    'test_runner': ['jochen+watch@chromium.org',
-                    'mlamouri+watch-test-runner@chromium.org',
-                    'einbinder+watch-test-runner@chromium.org'],
-    'tests': [],
-    'tether': ['jlklein+watch-tether@chromium.org',
-                    'khorimoto+watch-tether@chromium.org',
-                    'hansberry+watch-tether@chromium.org',
-                    'tengs+watch-tether@chromium.org',
-                    'jhawkins+watch-tether@chromium.org'],
-    'textinput': ['nona+watch@chromium.org',
-                  'shuchen+watch@chromium.org',
-                  'suzhe@chromium.org',
-                  'yusukes+watch@chromium.org'],
-    'textinput_chromeos': ['nona+watch@chromium.org',
-                           'shuchen+watch@chromium.org',
-                           'yusukes+watch@chromium.org'],
-    'timers': ['chirantan+watch@chromium.org'],
-    'tools_win_chromeexts': ['robliao+watch@chromium.org'],
-    'tracing': ['tracing+reviews@chromium.org',
-                'wfh+watch@chromium.org'],
-    'ui_compositor': ['cc-bugs@chromium.org'],
-    'ui_display_win': ['robliao+watch@chromium.org'],
-    'ui_resources': ['oshima+watch@chromium.org'],
-    'ui_strings': ['srahim+watch@chromium.org'],
-    'valgrind': ['bruening+watch@chromium.org',
-                 'glider+watch@chromium.org'],
-    'version_assembly': ['caitkp+watch@chromium.org',
-                         'gab+watch@chromium.org'],
-    'video': ['posciak+watch@chromium.org'],
-    'video_capture': ['mcasas+watch+vc@chromium.org',
-                      'chfremer+watch@chromium.org'],
-    'views': ['tfarina@chromium.org'],
-    'virtual_keyboard': ['dfaden+virtualkb@google.com',
-                         'groby+virtualkb@chromium.org',
-                         'oka+watchvk@chromium.org',
-                         'yhanada+watchvk@chromium.org'],
-    'virtual_reality': ['feature-vr-reviews@chromium.org'],
-    'webrtc_browser_tests': ['phoglund+watch@chromium.org'],
-    'website_settings': ['markusheintz@chromium.org',
-                         'msramek+watch@chromium.org',
-                         'raymes+watch@chromium.org'],
-    'windows_sandboxing': ['pennymac+watch@chromium.org',
-                           'wfh+watch@chromium.org'],
-    'x11': ['derat+watch@chromium.org',
-            'sadrul@chromium.org',
-            'yusukes+watch@chromium.org'],
-    'xml': ['dominicc+watchlist@chromium.org'],
-    'zoom': ['wjmaclean@chromium.org'],
-  },
-}
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
deleted file mode 100644
index 0366574..0000000
--- a/android_webview/BUILD.gn
+++ /dev/null
@@ -1,820 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//android_webview/system_webview_apk_tmpl.gni")
-import("//android_webview/webview_repack_locales.gni")
-import("//build/config/android/config.gni")
-import("//build/config/android/rules.gni")
-import("//build/config/locales.gni")
-import("//components/spellcheck/spellcheck_build_features.gni")
-import("//tools/grit/repack.gni")
-import("//tools/resources/generate_resource_whitelist.gni")
-
-declare_args() {
-  # Package name of the system_webview_apk target.
-  system_webview_package_name = "com.android.webview"
-}
-
-if (!defined(use_webview_internal_framework)) {
-  use_webview_internal_framework = false
-}
-
-if (enable_resource_whitelist_generation) {
-  system_webview_pak_whitelist =
-      "$target_gen_dir/system_webview_pak_whitelist.txt"
-}
-
-system_webview_android_manifest =
-    "$target_gen_dir/system_webview_apk/AndroidManifest.xml"
-
-group("android_webview") {
-  if (!use_webview_internal_framework) {
-    deps = [
-      ":system_webview_apk",
-    ]
-  }
-}
-
-jinja_template("system_webview_manifest") {
-  input = "apk/java/AndroidManifest.xml"
-  output = system_webview_android_manifest
-  variables = [ "package=$system_webview_package_name" ]
-}
-
-webview_repack_locales("repack_locales") {
-  input_locales = locales
-  output_locales = locales
-
-  if (enable_resource_whitelist_generation) {
-    repack_whitelist = system_webview_pak_whitelist
-    deps = [
-      ":system_webview_pak_whitelist",
-    ]
-  }
-}
-
-android_assets("locale_pak_assets") {
-  disable_compression = true
-  sources = []
-  foreach(_locale, locales) {
-    sources += [ "$root_out_dir/android_webview/locales/$_locale.pak" ]
-  }
-  deps = [
-    ":repack_locales",
-  ]
-}
-
-repack("repack_pack") {
-  sources = [
-    "$root_gen_dir/blink/public/resources/blink_resources.pak",
-    "$root_gen_dir/content/content_resources.pak",
-    "$root_gen_dir/net/net_resources.pak",
-    "$target_gen_dir/aw_resources.pak",
-    "$target_gen_dir/components_resources.pak",
-    "$target_gen_dir/webui_resources.pak",
-  ]
-  deps = [
-    ":generate_aw_resources",
-    ":generate_components_resources",
-    ":generate_webui_resources",
-    "//content:resources",
-    "//net:net_resources",
-    "//third_party/WebKit/public:resources",
-  ]
-  output = "$target_gen_dir/resources.pak"
-
-  if (enable_resource_whitelist_generation) {
-    repack_whitelist = system_webview_pak_whitelist
-    deps += [ ":system_webview_pak_whitelist" ]
-  }
-}
-
-repack("repack_100_percent") {
-  sources = [
-    "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
-    "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
-    "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
-  ]
-  deps = [
-    "//content/app/resources",
-    "//third_party/WebKit/public:image_resources",
-    "//ui/resources",
-  ]
-  output = "$target_gen_dir/chrome_100_percent.pak"
-
-  if (enable_resource_whitelist_generation) {
-    repack_whitelist = system_webview_pak_whitelist
-    deps += [ ":system_webview_pak_whitelist" ]
-  }
-}
-
-webview_license_path = "$target_gen_dir/webview_licenses.notice"
-
-android_assets("pak_file_assets") {
-  sources = [
-    "$target_gen_dir/chrome_100_percent.pak",
-    "$target_gen_dir/resources.pak",
-  ]
-  deps = [
-    ":repack_100_percent",
-    ":repack_pack",
-  ]
-  disable_compression = true
-}
-
-# These assets are needed by both monochrome and stand alone WebView, but not by
-# Chrome.
-android_assets("monochrome_webview_assets") {
-  sources = [
-    webview_license_path,
-  ]
-  deps = [
-    ":generate_webview_license_notice",
-    "//third_party/icu:icu_assets",
-    "//v8:v8_external_startup_data_assets",
-  ]
-  if (android_64bit_target_cpu && build_apk_secondary_abi) {
-    deps += [ ":v8_snapshot_secondary_abi_assets" ]
-  }
-}
-
-android_assets("assets") {
-  deps = [
-    ":locale_pak_assets",
-    ":monochrome_webview_assets",
-    ":pak_file_assets",
-  ]
-}
-
-android_assets("stub_assets") {
-  sources = [
-    webview_license_path,
-  ]
-  deps = [
-    ":generate_webview_license_notice",
-  ]
-}
-
-action("generate_webview_license_notice") {
-  script = "tools/webview_licenses.py"
-  depfile = "$target_gen_dir/$target_name.d"
-  inputs = [
-    "tools/licenses_notice.tmpl",
-  ]
-  outputs = [
-    webview_license_path,
-  ]
-  args = [
-    "notice",
-    rebase_path(webview_license_path, root_build_dir),
-    "--depfile",
-    rebase_path(depfile, root_build_dir),
-  ]
-}
-
-android_resources("system_webview_resources") {
-  resource_dirs = [ "apk/java/res" ]
-  custom_package = system_webview_package_name
-}
-
-android_resources("resources") {
-  resource_dirs = [ "java/res" ]
-  custom_package = "org.chromium.android_webview"
-  deps = [
-    ":strings_grd",
-  ]
-}
-
-grit("generate_aw_resources") {
-  source = "ui/aw_resources.grd"
-  outputs = [
-    "grit/aw_resources.h",
-    "aw_resources.pak",
-  ]
-}
-
-grit("generate_aw_strings") {
-  source = "ui/aw_strings.grd"
-  outputs = [
-    "grit/aw_strings.h",
-  ]
-  foreach(_locale, locales) {
-    outputs += [ "aw_strings_${_locale}.pak" ]
-  }
-}
-
-grit("generate_webui_resources") {
-  source = "../ui/webui/resources/webui_resources.grd"
-
-  # webui/resources has way too many resources. The whitelist is trim this down
-  # to a reasonable size
-  whitelist = rebase_path("ui/grit_resources_whitelist.txt")
-  inputs = [
-    whitelist,
-  ]
-  grit_flags = [
-    "-w",
-    whitelist,
-  ]
-  outputs = [
-    "grit/webui_resources.h",
-    "grit/webui_resources_map.h",
-    "grit/webui_resources_map.cc",
-    "webui_resources.pak",
-  ]
-}
-
-grit("generate_components_resources") {
-  source = "../components/resources/components_resources.grd"
-  use_qualified_include = true
-
-  # See :generate_webui_resources for an explanation of the whitelist
-  whitelist = rebase_path("ui/grit_resources_whitelist.txt")
-  inputs = [
-    whitelist,
-  ]
-  grit_flags = [
-    "-w",
-    whitelist,
-  ]
-  outputs = [
-    "grit/components_resources.h",
-    "components_resources.pak",
-  ]
-}
-
-grit("generate_components_strings") {
-  source = "../components/components_strings.grd"
-  use_qualified_include = true
-
-  # components_strings contains strings from all components. WebView
-  # will never display most of them, so we try to limit the included
-  # strings. This whitelist trims about 50% more than the compile-based
-  # whitelist generated by :system_webview_pak_whitelist.
-  whitelist = rebase_path("ui/grit_strings_whitelist.txt")
-  inputs = [
-    whitelist,
-  ]
-  grit_flags = [
-    "-w",
-    whitelist,
-  ]
-  outputs = [
-    "grit/components_strings.h",
-    "java/res/values-am/components_strings.xml",
-    "java/res/values-ar/components_strings.xml",
-    "java/res/values-bg/components_strings.xml",
-    "java/res/values-ca/components_strings.xml",
-    "java/res/values-cs/components_strings.xml",
-    "java/res/values-da/components_strings.xml",
-    "java/res/values-de/components_strings.xml",
-    "java/res/values-el/components_strings.xml",
-    "java/res/values-en-rGB/components_strings.xml",
-    "java/res/values-es-rUS/components_strings.xml",
-    "java/res/values-es/components_strings.xml",
-    "java/res/values-fa/components_strings.xml",
-    "java/res/values-fi/components_strings.xml",
-    "java/res/values-fr/components_strings.xml",
-    "java/res/values-hi/components_strings.xml",
-    "java/res/values-hr/components_strings.xml",
-    "java/res/values-hu/components_strings.xml",
-    "java/res/values-in/components_strings.xml",
-    "java/res/values-it/components_strings.xml",
-    "java/res/values-iw/components_strings.xml",
-    "java/res/values-ja/components_strings.xml",
-    "java/res/values-ko/components_strings.xml",
-    "java/res/values-lt/components_strings.xml",
-    "java/res/values-lv/components_strings.xml",
-    "java/res/values-nb/components_strings.xml",
-    "java/res/values-nl/components_strings.xml",
-    "java/res/values-pl/components_strings.xml",
-    "java/res/values-pt-rBR/components_strings.xml",
-    "java/res/values-pt-rPT/components_strings.xml",
-    "java/res/values-ro/components_strings.xml",
-    "java/res/values-ru/components_strings.xml",
-    "java/res/values-sk/components_strings.xml",
-    "java/res/values-sl/components_strings.xml",
-    "java/res/values-sr/components_strings.xml",
-    "java/res/values-sv/components_strings.xml",
-    "java/res/values-sw/components_strings.xml",
-    "java/res/values-th/components_strings.xml",
-    "java/res/values-tl/components_strings.xml",
-    "java/res/values-tr/components_strings.xml",
-    "java/res/values-uk/components_strings.xml",
-    "java/res/values-vi/components_strings.xml",
-    "java/res/values-zh-rCN/components_strings.xml",
-    "java/res/values-zh-rTW/components_strings.xml",
-    "java/res/values/components_strings.xml",
-  ]
-  foreach(_locale, locales_with_fake_bidi) {
-    outputs += [ "components_strings_${_locale}.pak" ]
-  }
-}
-
-source_set("webview_entry_point") {
-  deps = [
-    ":common",
-  ]
-  sources = [
-    "lib/main/webview_entry_point.cc",
-  ]
-}
-
-shared_library("libwebviewchromium") {
-  deps = [
-    ":webview_entry_point",
-  ]
-  configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
-  configs += [ "//build/config/android:hide_all_but_jni" ]
-}
-
-if (android_64bit_target_cpu) {
-  android_assets("v8_snapshot_secondary_abi_assets") {
-    _secondary_abi_out_dir =
-        get_label_info("//v8($android_secondary_abi_toolchain)", "root_out_dir")
-    assert(android_64bit_target_cpu,
-           "32-bit targets shouldn't have secondary abi")
-    arch_suffix = "32"
-    renaming_sources = [ "$_secondary_abi_out_dir/snapshot_blob.bin" ]
-    renaming_destinations = [ "snapshot_blob_$arch_suffix.bin" ]
-    disable_compression = true
-    deps = [
-      "//v8($android_secondary_abi_toolchain)",
-    ]
-  }
-
-  shared_library("monochrome") {
-    deps = [
-      ":webview_entry_point",
-    ]
-    configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
-    configs += [ "//build/config/android:hide_all_but_jni" ]
-  }
-}
-
-if (enable_resource_whitelist_generation) {
-  generate_resource_whitelist("system_webview_pak_whitelist") {
-    deps = [
-      ":libwebviewchromium",
-    ]
-    input = "$root_out_dir/libwebviewchromium$shlib_extension.whitelist"
-    output = system_webview_pak_whitelist
-  }
-}
-
-source_set("common") {
-  sources = [
-    "browser/aw_browser_context.cc",
-    "browser/aw_browser_context.h",
-    "browser/aw_browser_main_parts.cc",
-    "browser/aw_browser_main_parts.h",
-    "browser/aw_browser_permission_request_delegate.h",
-    "browser/aw_browser_policy_connector.cc",
-    "browser/aw_browser_policy_connector.h",
-    "browser/aw_browser_terminator.cc",
-    "browser/aw_browser_terminator.h",
-    "browser/aw_content_browser_client.cc",
-    "browser/aw_content_browser_client.h",
-    "browser/aw_contents_client_bridge_base.cc",
-    "browser/aw_contents_client_bridge_base.h",
-    "browser/aw_contents_io_thread_client.h",
-    "browser/aw_cookie_access_policy.cc",
-    "browser/aw_cookie_access_policy.h",
-    "browser/aw_devtools_manager_delegate.cc",
-    "browser/aw_devtools_manager_delegate.h",
-    "browser/aw_download_manager_delegate.cc",
-    "browser/aw_download_manager_delegate.h",
-    "browser/aw_form_database_service.cc",
-    "browser/aw_form_database_service.h",
-    "browser/aw_gl_surface.cc",
-    "browser/aw_gl_surface.h",
-    "browser/aw_http_auth_handler_base.cc",
-    "browser/aw_http_auth_handler_base.h",
-    "browser/aw_javascript_dialog_manager.cc",
-    "browser/aw_javascript_dialog_manager.h",
-    "browser/aw_locale_manager.h",
-    "browser/aw_login_delegate.cc",
-    "browser/aw_login_delegate.h",
-    "browser/aw_metrics_service_client.cc",
-    "browser/aw_metrics_service_client.h",
-    "browser/aw_permission_manager.cc",
-    "browser/aw_permission_manager.h",
-    "browser/aw_print_manager.cc",
-    "browser/aw_print_manager.h",
-    "browser/aw_printing_message_filter.cc",
-    "browser/aw_printing_message_filter.h",
-    "browser/aw_quota_manager_bridge.cc",
-    "browser/aw_quota_manager_bridge.h",
-    "browser/aw_quota_permission_context.cc",
-    "browser/aw_quota_permission_context.h",
-    "browser/aw_render_process_gone_delegate.h",
-    "browser/aw_render_thread_context_provider.cc",
-    "browser/aw_render_thread_context_provider.h",
-    "browser/aw_resource_context.cc",
-    "browser/aw_resource_context.h",
-    "browser/aw_result_codes.h",
-    "browser/aw_safe_browsing_config_helper.cc",
-    "browser/aw_safe_browsing_config_helper.h",
-    "browser/aw_safe_browsing_resource_throttle.cc",
-    "browser/aw_safe_browsing_resource_throttle.h",
-    "browser/aw_safe_browsing_ui_manager.cc",
-    "browser/aw_safe_browsing_ui_manager.h",
-    "browser/aw_ssl_host_state_delegate.cc",
-    "browser/aw_ssl_host_state_delegate.h",
-    "browser/aw_web_preferences_populater.cc",
-    "browser/aw_web_preferences_populater.h",
-    "browser/browser_view_renderer.cc",
-    "browser/browser_view_renderer.h",
-    "browser/browser_view_renderer_client.h",
-    "browser/child_frame.cc",
-    "browser/child_frame.h",
-    "browser/command_line_helper.cc",
-    "browser/command_line_helper.h",
-    "browser/compositor_id.cc",
-    "browser/compositor_id.h",
-    "browser/deferred_gpu_command_service.cc",
-    "browser/deferred_gpu_command_service.h",
-    "browser/find_helper.cc",
-    "browser/find_helper.h",
-    "browser/gl_view_renderer_manager.cc",
-    "browser/gl_view_renderer_manager.h",
-    "browser/hardware_renderer.cc",
-    "browser/hardware_renderer.h",
-    "browser/icon_helper.cc",
-    "browser/icon_helper.h",
-    "browser/input_stream.h",
-    "browser/jni_dependency_factory.h",
-    "browser/net/android_stream_reader_url_request_job.cc",
-    "browser/net/android_stream_reader_url_request_job.h",
-    "browser/net/aw_cookie_store_wrapper.cc",
-    "browser/net/aw_cookie_store_wrapper.h",
-    "browser/net/aw_http_user_agent_settings.cc",
-    "browser/net/aw_http_user_agent_settings.h",
-    "browser/net/aw_network_change_notifier.cc",
-    "browser/net/aw_network_change_notifier.h",
-    "browser/net/aw_network_change_notifier_factory.cc",
-    "browser/net/aw_network_change_notifier_factory.h",
-    "browser/net/aw_network_delegate.cc",
-    "browser/net/aw_network_delegate.h",
-    "browser/net/aw_request_interceptor.cc",
-    "browser/net/aw_request_interceptor.h",
-    "browser/net/aw_url_request_context_getter.cc",
-    "browser/net/aw_url_request_context_getter.h",
-    "browser/net/aw_url_request_job_factory.cc",
-    "browser/net/aw_url_request_job_factory.h",
-    "browser/net/aw_web_resource_request.cc",
-    "browser/net/aw_web_resource_request.h",
-    "browser/net/aw_web_resource_response.h",
-    "browser/net/init_native_callback.h",
-    "browser/net/input_stream_reader.cc",
-    "browser/net/input_stream_reader.h",
-    "browser/net/token_binding_manager.cc",
-    "browser/net/token_binding_manager.h",
-    "browser/net_disk_cache_remover.cc",
-    "browser/net_disk_cache_remover.h",
-    "browser/parent_compositor_draw_constraints.cc",
-    "browser/parent_compositor_draw_constraints.h",
-    "browser/parent_output_surface.cc",
-    "browser/parent_output_surface.h",
-    "browser/render_thread_manager.cc",
-    "browser/render_thread_manager.h",
-    "browser/renderer_host/auto_login_parser.cc",
-    "browser/renderer_host/auto_login_parser.h",
-    "browser/renderer_host/aw_render_view_host_ext.cc",
-    "browser/renderer_host/aw_render_view_host_ext.h",
-    "browser/renderer_host/aw_resource_dispatcher_host_delegate.cc",
-    "browser/renderer_host/aw_resource_dispatcher_host_delegate.h",
-    "browser/scoped_allow_wait_for_legacy_web_view_api.h",
-    "browser/scoped_app_gl_state_restore.cc",
-    "browser/scoped_app_gl_state_restore.h",
-    "browser/surfaces_instance.cc",
-    "browser/surfaces_instance.h",
-    "browser/tracing/aw_tracing_delegate.cc",
-    "browser/tracing/aw_tracing_delegate.h",
-    "common/android_webview_message_generator.cc",
-    "common/android_webview_message_generator.h",
-    "common/aw_content_client.cc",
-    "common/aw_content_client.h",
-    "common/aw_descriptors.h",
-    "common/aw_hit_test_data.cc",
-    "common/aw_hit_test_data.h",
-    "common/aw_media_client_android.cc",
-    "common/aw_media_client_android.h",
-    "common/aw_paths.cc",
-    "common/aw_paths.h",
-    "common/aw_resource.h",
-    "common/aw_switches.cc",
-    "common/aw_switches.h",
-    "common/crash_reporter/aw_microdump_crash_reporter.cc",
-    "common/crash_reporter/aw_microdump_crash_reporter.h",
-    "common/crash_reporter/crash_keys.cc",
-    "common/crash_reporter/crash_keys.h",
-    "common/devtools_instrumentation.h",
-    "common/render_view_messages.cc",
-    "common/render_view_messages.h",
-    "common/url_constants.cc",
-    "common/url_constants.h",
-    "gpu/aw_content_gpu_client.cc",
-    "gpu/aw_content_gpu_client.h",
-    "lib/main/aw_main_delegate.cc",
-    "lib/main/aw_main_delegate.h",
-    "lib/main/webview_jni_onload.cc",
-    "lib/main/webview_jni_onload.h",
-    "public/browser/draw_gl.h",
-    "renderer/aw_content_renderer_client.cc",
-    "renderer/aw_content_renderer_client.h",
-    "renderer/aw_content_settings_client.cc",
-    "renderer/aw_content_settings_client.h",
-    "renderer/aw_key_systems.cc",
-    "renderer/aw_key_systems.h",
-    "renderer/aw_print_web_view_helper_delegate.cc",
-    "renderer/aw_print_web_view_helper_delegate.h",
-    "renderer/aw_render_frame_ext.cc",
-    "renderer/aw_render_frame_ext.h",
-    "renderer/aw_render_thread_observer.cc",
-    "renderer/aw_render_thread_observer.h",
-    "renderer/aw_render_view_ext.cc",
-    "renderer/aw_render_view_ext.h",
-    "renderer/print_render_frame_observer.cc",
-    "renderer/print_render_frame_observer.h",
-  ]
-
-  deps = [
-    ":generate_aw_resources",
-    ":generate_aw_strings",
-    ":generate_components_strings",
-    "//android_webview/common:version",
-    "//android_webview/native:native",
-    "//cc/surfaces",
-    "//components/autofill/content/browser",
-    "//components/autofill/content/renderer",
-    "//components/cdm/browser",
-    "//components/cdm/renderer",
-    "//components/crash/content/app",
-    "//components/crash/content/browser",
-    "//components/metrics",
-    "//components/metrics:gpu",
-    "//components/metrics:net",
-    "//components/metrics:profiler",
-    "//components/metrics:ui",
-    "//components/navigation_interception",
-    "//components/policy:generated",
-    "//components/policy/core/browser",
-    "//components/prefs",
-    "//components/printing/browser",
-    "//components/printing/common",
-    "//components/printing/renderer",
-    "//components/safe_browsing",
-    "//components/safe_browsing_db:safe_browsing_db_mobile",
-    "//components/spellcheck:build_features",
-    "//components/supervised_user_error_page",
-    "//components/supervised_user_error_page:gin",
-    "//components/version_info",
-    "//components/visitedlink/browser",
-    "//components/visitedlink/renderer",
-    "//components/web_contents_delegate_android:web_contents_delegate_android",
-    "//components/web_restrictions:browser",
-    "//content",
-    "//content/public/app:both",
-    "//content/public/browser",
-    "//content/public/common:content_descriptor_keys",
-    "//content/public/common:service_names",
-    "//crypto",
-    "//gin",
-    "//gpu/command_buffer/client:gles2_c_lib",
-    "//gpu/command_buffer/client:gles2_implementation",
-    "//gpu/command_buffer/common:gles2_utils",
-    "//gpu/command_buffer/service",
-    "//gpu/ipc:gl_in_process_context",
-    "//gpu/skia_bindings",
-    "//media",
-    "//media/midi",
-    "//net:extras",
-    "//printing",
-    "//services/service_manager/public/cpp",
-    "//skia",
-    "//third_party/WebKit/public:blink",
-    "//ui/events:gesture_detection",
-    "//ui/gl",
-    "//ui/gl/init",
-    "//ui/shell_dialogs",
-    "//v8",
-  ]
-
-  if (enable_spellcheck) {
-    deps += [
-      "//components/spellcheck/browser",
-      "//components/spellcheck/renderer",
-    ]
-  }
-
-  configs += [ "//v8:external_startup_data" ]
-}
-
-android_library("android_webview_java") {
-  java_files = [
-    "java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
-    "java/src/org/chromium/android_webview/AwActionModeCallback.java",
-    "java/src/org/chromium/android_webview/AwAutofillClient.java",
-    "java/src/org/chromium/android_webview/AwBrowserContext.java",
-    "java/src/org/chromium/android_webview/AwBrowserProcess.java",
-    "java/src/org/chromium/android_webview/AwContentVideoViewEmbedder.java",
-    "java/src/org/chromium/android_webview/AwContentViewClient.java",
-    "java/src/org/chromium/android_webview/AwContents.java",
-    "java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
-    "java/src/org/chromium/android_webview/AwContentsClient.java",
-    "java/src/org/chromium/android_webview/AwContentsClientBridge.java",
-    "java/src/org/chromium/android_webview/AwContentsClientCallbackHelper.java",
-    "java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
-    "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
-    "java/src/org/chromium/android_webview/AwContentsStatics.java",
-    "java/src/org/chromium/android_webview/AwCookieManager.java",
-    "java/src/org/chromium/android_webview/AwDebug.java",
-    "java/src/org/chromium/android_webview/AwDevToolsServer.java",
-    "java/src/org/chromium/android_webview/AwFormDatabase.java",
-    "java/src/org/chromium/android_webview/AwGeolocationPermissions.java",
-    "java/src/org/chromium/android_webview/AwGLFunctor.java",
-    "java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
-    "java/src/org/chromium/android_webview/AwLayoutSizer.java",
-    "java/src/org/chromium/android_webview/AwMetricsServiceClient.java",
-    "java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java",
-    "java/src/org/chromium/android_webview/AwPdfExporter.java",
-    "java/src/org/chromium/android_webview/AwPicture.java",
-    "java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java",
-    "java/src/org/chromium/android_webview/AwSafeBrowsingConfigHelper.java",
-    "java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
-    "java/src/org/chromium/android_webview/AwRendererPriorityManager.java",
-    "java/src/org/chromium/android_webview/AwRenderProcessGoneDetail.java",
-    "java/src/org/chromium/android_webview/AwResource.java",
-    "java/src/org/chromium/android_webview/AwScrollOffsetManager.java",
-    "java/src/org/chromium/android_webview/AwServiceWorkerClient.java",
-    "java/src/org/chromium/android_webview/AwServiceWorkerController.java",
-    "java/src/org/chromium/android_webview/AwServiceWorkerSettings.java",
-    "java/src/org/chromium/android_webview/AwSettings.java",
-    "java/src/org/chromium/android_webview/AwSwitches.java",
-    "java/src/org/chromium/android_webview/AwTokenBindingManager.java",
-    "java/src/org/chromium/android_webview/AwViewMethods.java",
-    "java/src/org/chromium/android_webview/AwViewAndroidDelegate.java",
-    "java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
-    "java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java",
-    "java/src/org/chromium/android_webview/AwWebContentsObserver.java",
-    "java/src/org/chromium/android_webview/AwWebResourceResponse.java",
-    "java/src/org/chromium/android_webview/AwZoomControls.java",
-    "java/src/org/chromium/android_webview/CleanupReference.java",
-    "java/src/org/chromium/android_webview/ClientCertLookupTable.java",
-    "java/src/org/chromium/android_webview/DefaultVideoPosterRequestHandler.java",
-    "java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java",
-    "java/src/org/chromium/android_webview/FullScreenView.java",
-    "java/src/org/chromium/android_webview/HttpAuthDatabase.java",
-    "java/src/org/chromium/android_webview/InputStreamUtil.java",
-    "java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java",
-    "java/src/org/chromium/android_webview/JsPromptResultReceiver.java",
-    "java/src/org/chromium/android_webview/JsResultHandler.java",
-    "java/src/org/chromium/android_webview/JsResultReceiver.java",
-    "java/src/org/chromium/android_webview/NullAwViewMethods.java",
-    "java/src/org/chromium/android_webview/OverScrollGlow.java",
-    "java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
-    "java/src/org/chromium/android_webview/ResourcesContextWrapperFactory.java",
-    "java/src/org/chromium/android_webview/ScrollAccessibilityHelper.java",
-    "java/src/org/chromium/android_webview/SslUtil.java",
-    "java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java",
-    "java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
-    "java/src/org/chromium/android_webview/policy/AwPolicyProvider.java",
-  ]
-  deps = [
-    ":android_webview_crash_services_java",
-    ":android_webview_platform_services_java",
-    ":resources",
-    ":strings_grd",
-    "//base:base_java",
-    "//components/autofill/android:autofill_java",
-    "//components/minidump_uploader:minidump_uploader_java",
-    "//components/navigation_interception/android:navigation_interception_java",
-    "//components/policy/android:policy_java",
-    "//components/safe_browsing_db/android:safe_browsing_java",
-    "//components/web_contents_delegate_android:web_contents_delegate_android_java",
-    "//components/web_restrictions:web_restrictions_java",
-    "//content/public/android:content_java",
-    "//device/geolocation:geolocation_java",
-    "//net/android:net_java",
-    "//third_party/android_tools:android_support_annotations_java",
-    "//ui/android:ui_java",
-  ]
-
-  if (enable_spellcheck) {
-    deps += [ "//components/spellcheck/browser/android:java" ]
-  }
-
-  srcjar_deps = [
-    "//android_webview/native:aw_permission_request_resource",
-    "//android_webview/native:aw_renderer_priority_manager_renderer_priority",
-  ]
-}
-
-java_strings_grd("strings_grd") {
-  grd_file = "java/strings/android_webview_strings.grd"
-  outputs = [
-    "values-am/android_webview_strings.xml",
-    "values-ar/android_webview_strings.xml",
-    "values-bg/android_webview_strings.xml",
-    "values-ca/android_webview_strings.xml",
-    "values-cs/android_webview_strings.xml",
-    "values-da/android_webview_strings.xml",
-    "values-de/android_webview_strings.xml",
-    "values-el/android_webview_strings.xml",
-    "values-en-rGB/android_webview_strings.xml",
-    "values-es-rUS/android_webview_strings.xml",
-    "values-es/android_webview_strings.xml",
-    "values-fa/android_webview_strings.xml",
-    "values-fi/android_webview_strings.xml",
-    "values-fr/android_webview_strings.xml",
-    "values-hi/android_webview_strings.xml",
-    "values-hr/android_webview_strings.xml",
-    "values-hu/android_webview_strings.xml",
-    "values-in/android_webview_strings.xml",
-    "values-it/android_webview_strings.xml",
-    "values-iw/android_webview_strings.xml",
-    "values-ja/android_webview_strings.xml",
-    "values-ko/android_webview_strings.xml",
-    "values-lt/android_webview_strings.xml",
-    "values-lv/android_webview_strings.xml",
-    "values-nb/android_webview_strings.xml",
-    "values-nl/android_webview_strings.xml",
-    "values-pl/android_webview_strings.xml",
-    "values-pt-rBR/android_webview_strings.xml",
-    "values-pt-rPT/android_webview_strings.xml",
-    "values-ro/android_webview_strings.xml",
-    "values-ru/android_webview_strings.xml",
-    "values-sk/android_webview_strings.xml",
-    "values-sl/android_webview_strings.xml",
-    "values-sr/android_webview_strings.xml",
-    "values-sv/android_webview_strings.xml",
-    "values-sw/android_webview_strings.xml",
-    "values-th/android_webview_strings.xml",
-    "values-tl/android_webview_strings.xml",
-    "values-tr/android_webview_strings.xml",
-    "values-uk/android_webview_strings.xml",
-    "values-vi/android_webview_strings.xml",
-    "values-zh-rCN/android_webview_strings.xml",
-    "values-zh-rTW/android_webview_strings.xml",
-    "values/android_webview_strings.xml",
-  ]
-}
-
-# Separate target to allow for a dependency on GmsCore without pulling in all of
-# android_webview_java.
-android_library("android_webview_platform_services_java") {
-  java_files =
-      [ "java/src/org/chromium/android_webview/PlatformServiceBridge.java" ]
-
-  deps = [
-    "//base:base_java",
-  ]
-}
-
-android_library("android_webview_commandline_java") {
-  java_files = [ "java/src/org/chromium/android_webview/command_line/CommandLineUtil.java" ]
-
-  deps = [
-    "//base:base_java",
-  ]
-}
-
-# Keep crash services separate from other WebView code to keep their deps clean
-# (and make them easy to move).
-android_library("android_webview_crash_services_java") {
-  java_files = [
-    "java/src/org/chromium/android_webview/crash/AwMinidumpUploadJobService.java",
-    "java/src/org/chromium/android_webview/crash/AwMinidumpUploaderDelegate.java",
-    "java/src/org/chromium/android_webview/crash/CrashReceiverService.java",
-  ]
-  deps = [
-    ":android_webview_commandline_java",
-    ":android_webview_platform_services_java",
-    "//base:base_java",
-    "//components/background_task_scheduler:background_task_scheduler_java",
-    "//components/minidump_uploader:minidump_uploader_java",
-  ]
-
-  srcjar_deps = [ ":crash_receiver_aidl" ]
-}
-
-android_aidl("crash_receiver_aidl") {
-  import_include = "java/src"
-  sources = [
-    "java/src/org/chromium/android_webview/crash/ICrashReceiverService.aidl",
-  ]
-}
-
-if (!use_webview_internal_framework) {
-  system_webview_apk_tmpl("system_webview_apk") {
-    android_manifest = system_webview_android_manifest
-    android_manifest_dep = ":system_webview_manifest"
-    deps = [
-      ":system_webview_resources",
-      "//android_webview/glue",
-    ]
-    apk_name = "SystemWebView"
-  }
-}
diff --git a/android_webview/DEPS b/android_webview/DEPS
deleted file mode 100644
index 1c7b5e1..0000000
--- a/android_webview/DEPS
+++ /dev/null
@@ -1,30 +0,0 @@
-# Please include torne@ and (erikwright@) on the review for any changes
-# to DEPS files under android_webview/
-
-# Do not add any includes under chrome/ anywhere in android_webview.
-
-include_rules = [
-  # lib is the top-level target, and must remain a leaf in the dependency tree.
-  "-android_webview/lib",
-
-  "+components/metrics",
-  "+components/prefs",
-  "+components/version_info",
-  # Only allow this header in spellchecking since allowing all of spellchecking
-  # would include both browser and renderer components.
-  "+components/spellcheck/spellcheck_build_features.h",
-  "+components/supervised_user_error_page",
-  "+components/web_restrictions",
-  "+content/public/common",
-  "+crypto",
-  "+gpu",
-  "+jni",
-  # Only this one header in media which doesn't depend on anything else.
-  "+media/media_features.h",
-  "+net",
-  "+skia",
-  "+third_party/skia/include",
-  "+ui/android",
-  "+ui/base",
-  "+ui/gfx",
-]
diff --git a/android_webview/OWNERS b/android_webview/OWNERS
deleted file mode 100644
index 02610d0..0000000
--- a/android_webview/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-boliu@chromium.org
-michaelbai@chromium.org
-sgurun@chromium.org
-tobiasjs@chromium.org
-torne@chromium.org
diff --git a/android_webview/apk/java/AndroidManifest.xml b/android_webview/apk/java/AndroidManifest.xml
deleted file mode 100644
index 399e0a5..0000000
--- a/android_webview/apk/java/AndroidManifest.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (c) 2012 The Chromium Authors. All rights reserved.  Use of this
-  source code is governed by a BSD-style license that can be found in the
-  LICENSE file.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    package="{{package|default('com.android.webview')}}">
-    <uses-sdk android:minSdkVersion="{{minsdk|default(21)}}"
-              android:targetSdkVersion="{{targetsdk|default(24)}}">
-    </uses-sdk>
-
-    <uses-feature android:name="android.hardware.touchscreen"
-                  android:required="false"/>
-
-    <uses-permission android:name="android.permission.INTERNET"/>
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-
-    <application android:label="Android System WebView"
-                 android:icon="@drawable/icon_webview"
-                 android:multiArch="true"
-                 android:use32bitAbi="true">
-        {# This part is shared between stand-alone WebView and Monochrome #}
-        {% macro common(manifest_package, webview_lib) %}
-            <meta-data android:name="com.android.webview.WebViewLibrary"
-                       android:value="{{ webview_lib }}" />
-            <activity android:name="com.android.webview.chromium.LicenseActivity"
-                      android:label="@string/license_activity_title">
-                <intent-filter>
-                    <action android:name="android.settings.WEBVIEW_LICENSE" />
-                    <category android:name="android.intent.category.DEFAULT" />
-                </intent-filter>
-                <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
-                           android:value="true" />
-            </activity>
-            <provider android:name="com.android.webview.chromium.LicenseContentProvider"
-                      android:exported="true"
-                      android:authorities="{{ manifest_package }}.LicenseContentProvider" />
-            {% if donor_package is not defined %}
-                <service android:name="org.chromium.android_webview.crash.CrashReceiverService"
-                         android:exported="true"
-                         android:process=":crash_receiver_service"/>
-                <service android:name="org.chromium.android_webview.crash.AwMinidumpUploadJobService"
-                         android:permission="android.permission.BIND_JOB_SERVICE"
-                         android:exported="true"
-                         android:process=":crash_receiver_service"/>
-            {% endif %}
-        {% endmacro %}
-        {{ common(package|default('com.android.webview'), library|default('libwebviewchromium.so')) }}
-        {% if donor_package is defined %}
-            <meta-data android:name="com.android.webview.WebViewDonorPackage"
-                       android:value="{{ donor_package }}" />
-        {% endif %}
-        {% set num_sandboxed_services = 20 %}
-        <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
-                   android:value="{{ num_sandboxed_services }}"/>
-        {% for i in range(num_sandboxed_services) %}
-            <service android:name="org.chromium.content.app.SandboxedProcessService{{ i }}"
-                     android:process=":sandboxed_process{{ i }}"
-                     android:isolatedProcess="true"
-                     android:exported="true"
-                     android:externalService="true"
-                     tools:ignore="ExportedService"
-                     {{sandboxed_service_extra_flags|default('')}} />
-        {% endfor %}
-        <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
-                   android:value="0"/>
-    </application>
-</manifest>
diff --git a/android_webview/apk/java/proguard.flags b/android_webview/apk/java/proguard.flags
deleted file mode 100644
index 827c7c4..0000000
--- a/android_webview/apk/java/proguard.flags
+++ /dev/null
@@ -1,84 +0,0 @@
-# Don't rename anything, it makes stack traces unintelligible. We only allow the
-# obfuscation pass to run so that we can discard attributes like local variable
-# tables. However, we don't want to lose out on optimizations, so although they
-# can occasionally make the stack trace a bit stranger with inlining, it won't
-# make a big difference for the users seeing the stacktraces. We can always use
-# build/android/stacktrace/java_deobfuscate.py to fix the stacktrace up for us.
--keepnames,allowoptimization class *** { *; }
-
--keepclassmembers class org.chromium.android_webview.AwPdfExporter {
-    android.view.ViewGroup mContainerView;
-}
-
-# Keep the factory and its public members; it's the main entry point used by the
-# framework.
--keep class com.android.webview.chromium.WebViewChromiumFactoryProvider {
-    public *;
-}
-
--keep class com.android.webview.chromium.ContentSettingsAdapter {
-    public *;
-}
-
--keep class com.android.webview.chromium.WebViewChromiumFactoryProviderFor* {
-    public *;
-}
-
--keep class com.android.webview.chromium.WebViewDatabaseAdapter {
-  public *;
-}
-
-# This is the main entry point for APIs. It is kept to make developing with
-# unreleased Android easier.
--keep class com.android.webview.chromium.WebViewChromium {
-  public *;
-}
-
-# Linker dynamically casts to $TestRunner when running tests. We don't run these
-# tests in WebView.
--dontnote org.chromium.base.library_loader.Linker$TestRunner
-
-# Don't note about the API 21 compatibility code which references various
-# hidden APIs via reflection.
--dontnote com.android.webview.chromium.WebViewDelegateFactory$Api21CompatibilityDelegate
-
-# DefaultAndroidKeyStore uses reflection to access internal OpenSSL state.
--dontnote org.chromium.net.DefaultAndroidKeyStore
-
-# MediaPlayerBridge uses reflection to access internal metadata.
--dontnote org.chromium.media.MediaPlayerBridge
-
-# ProxyChangeListener$ProxyReceiver uses reflection to access internal
-# android.net.ProxyProperties.
--dontnote org.chromium.net.ProxyChangeListener$ProxyReceiver
-
-# Silence warnings about reflection used to check for onShow/HideCustomView.
-# This class is not really kept since it's in a library jar.
--keep class android.webkit.WebChromeClient {
-  void onShowCustomView(...);
-  void onHideCustomView();
-}
-
--keep class org.chromium.android_webview.AwBrowserProcess {
-    java.nio.channels.FileLock sExclusiveFileLock;
-}
-
-# Accessed via reflection but not present in all builds
--keep class com.android.webview.chromium.PlatformServiceBridgeGoogle {
-  void setMetricsSettingListener(...);
-  PlatformServiceBridgeGoogle(...);
-}
--dontnote com.android.webview.chromium.PlatformServiceBridgeGoogle
--keep class com.android.webview.chromium.AwSafeBrowsingApiHandler {
-  AwSafeBrowsingApiHandler(...);
-}
--dontnote com.android.webview.chromium.AwSafeBrowsingApiHandler
-
-#TODO(hush): remove after N release. crbug.com/546762
--keep class com.android.webview.chromium.ContentSettingsAdapter {
-  public void setDisabledActionModeMenuItems(int);
-  public int getDisabledActionModeMenuItems();
-}
-
-# We strip some unused resources when preprocessing the GMS client libs.
--dontwarn com.google.android.gms.R**
diff --git a/android_webview/apk/java/res/drawable-hdpi/icon_webview.png b/android_webview/apk/java/res/drawable-hdpi/icon_webview.png
deleted file mode 100644
index 4f9377f..0000000
--- a/android_webview/apk/java/res/drawable-hdpi/icon_webview.png
+++ /dev/null
Binary files differ
diff --git a/android_webview/apk/java/res/drawable-mdpi/icon_webview.png b/android_webview/apk/java/res/drawable-mdpi/icon_webview.png
deleted file mode 100644
index 9bc6817c..0000000
--- a/android_webview/apk/java/res/drawable-mdpi/icon_webview.png
+++ /dev/null
Binary files differ
diff --git a/android_webview/apk/java/res/drawable-xhdpi/icon_webview.png b/android_webview/apk/java/res/drawable-xhdpi/icon_webview.png
deleted file mode 100644
index 9412fbe..0000000
--- a/android_webview/apk/java/res/drawable-xhdpi/icon_webview.png
+++ /dev/null
Binary files differ
diff --git a/android_webview/apk/java/res/drawable-xxhdpi/icon_webview.png b/android_webview/apk/java/res/drawable-xxhdpi/icon_webview.png
deleted file mode 100644
index bd8c447..0000000
--- a/android_webview/apk/java/res/drawable-xxhdpi/icon_webview.png
+++ /dev/null
Binary files differ
diff --git a/android_webview/browser/DEPS b/android_webview/browser/DEPS
deleted file mode 100644
index 645a61e..0000000
--- a/android_webview/browser/DEPS
+++ /dev/null
@@ -1,63 +0,0 @@
-include_rules = [
-  "-android_webview",
-  "+android_webview/browser",
-  "+android_webview/common",
-  "+android_webview/grit",
-  "+android_webview/native/public",
-  "+android_webview/public/browser",
-
-  "+cc",
-  "-cc/blink",
-
-  "+components/autofill/content/browser",
-  "+components/autofill/core/browser",
-  "+components/autofill/core/common",
-  "+components/cdm/browser",
-  "+components/crash/content/browser",
-  "+components/navigation_interception",
-  "+components/policy/core/browser",
-  "+components/policy/core/common",
-  "+components/pref_registry",
-  "+components/printing/browser",
-  "+components/printing/common",
-  "+components/safe_browsing",
-  "+components/safe_browsing_db",
-  "+components/security_interstitials/content",
-  "+components/spellcheck/browser",
-  "+components/spellcheck/common",
-  "+components/url_formatter",
-  "+components/user_prefs",
-  "+components/visitedlink/browser",
-  "+components/webdata/common",
-
-  "+content/public/browser",
-  "+content/public/test",
-
-  "+device/geolocation",
-
-  # Explicitly disallow using SyncMessageFilter to prevent browser from
-  # sending synchronous IPC messages on non-UI threads.
-  "-ipc/ipc_sync_message_filter.h",
-
-  "+media/base/android",
-
-  "+components/policy/policy_constants.h",
-
-  "+printing",
-
-  "+services/service_manager/public/cpp",
-
-  "+storage/browser/quota",
-
-  "+ui/gfx",
-  "+ui/gl",
-
-  # Temporary until we bundle our own favicon. See
-  # AwContentBrowserClient::GetDefaultFavicon
-  "!ui/resources/grit/ui_resources.h",
-
-  # POD structure required by the find-in-page IPC messages.
-  "+third_party/WebKit/public/web/WebFindOptions.h",
-  # Interface required for in-process input event handling.
-  "+third_party/WebKit/public/web/WebCompositorInputHandler.h"
-]
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc
deleted file mode 100644
index 5117a07..0000000
--- a/android_webview/browser/aw_browser_context.cc
+++ /dev/null
@@ -1,410 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_browser_context.h"
-
-#include <utility>
-
-#include "android_webview/browser/aw_browser_policy_connector.h"
-#include "android_webview/browser/aw_form_database_service.h"
-#include "android_webview/browser/aw_metrics_service_client.h"
-#include "android_webview/browser/aw_permission_manager.h"
-#include "android_webview/browser/aw_quota_manager_bridge.h"
-#include "android_webview/browser/aw_resource_context.h"
-#include "android_webview/browser/jni_dependency_factory.h"
-#include "android_webview/browser/net/aw_url_request_context_getter.h"
-#include "android_webview/common/aw_content_client.h"
-#include "base/base_paths_android.h"
-#include "base/bind.h"
-#include "base/files/file_util.h"
-#include "base/path_service.h"
-#include "components/autofill/core/common/autofill_pref_names.h"
-#include "components/metrics/metrics_service.h"
-#include "components/policy/core/browser/browser_policy_connector_base.h"
-#include "components/policy/core/browser/configuration_policy_pref_store.h"
-#include "components/policy/core/browser/url_blacklist_manager.h"
-#include "components/pref_registry/pref_registry_syncable.h"
-#include "components/prefs/in_memory_pref_store.h"
-#include "components/prefs/pref_service.h"
-#include "components/prefs/pref_service_factory.h"
-#include "components/url_formatter/url_fixer.h"
-#include "components/user_prefs/user_prefs.h"
-#include "components/visitedlink/browser/visitedlink_master.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/ssl_host_state_delegate.h"
-#include "content/public/browser/storage_partition.h"
-#include "content/public/browser/web_contents.h"
-#include "net/proxy/proxy_config_service_android.h"
-#include "net/proxy/proxy_service.h"
-
-using base::FilePath;
-using content::BrowserThread;
-
-namespace android_webview {
-
-namespace prefs {
-
-// String that specifies the Android account type to use for Negotiate
-// authentication.
-const char kAuthAndroidNegotiateAccountType[] =
-    "auth.android_negotiate_account_type";
-
-// Whitelist containing servers for which Integrated Authentication is enabled.
-const char kAuthServerWhitelist[] = "auth.server_whitelist";
-
-const char kWebRestrictionsAuthority[] = "web_restrictions_authority";
-
-}  // namespace prefs
-
-namespace {
-
-// Shows notifications which correspond to PersistentPrefStore's reading errors.
-void HandleReadError(PersistentPrefStore::PrefReadError error) {
-}
-
-void DeleteDirRecursively(const base::FilePath& path) {
-  if (!base::DeleteFile(path, true)) {
-    // Deleting a non-existent file is considered successful, so this will
-    // trigger only in case of real errors.
-    LOG(WARNING) << "Failed to delete " << path.AsUTF8Unsafe();
-  }
-}
-
-AwBrowserContext* g_browser_context = NULL;
-
-std::unique_ptr<net::ProxyConfigService> CreateProxyConfigService() {
-  std::unique_ptr<net::ProxyConfigService> config_service =
-      net::ProxyService::CreateSystemProxyConfigService(
-          BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
-          nullptr /* Ignored on Android */);
-
-  // TODO(csharrison) Architect the wrapper better so we don't need a cast for
-  // android ProxyConfigServices.
-  net::ProxyConfigServiceAndroid* android_config_service =
-      static_cast<net::ProxyConfigServiceAndroid*>(config_service.get());
-  android_config_service->set_exclude_pac_url(true);
-  return config_service;
-}
-
-bool OverrideBlacklistForURL(const GURL& url, bool* block, int* reason) {
-  // We don't have URLs that should never be blacklisted here.
-  return false;
-}
-
-policy::URLBlacklistManager* CreateURLBlackListManager(
-    PrefService* pref_service) {
-  base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool();
-  scoped_refptr<base::SequencedTaskRunner> background_task_runner =
-      pool->GetSequencedTaskRunner(pool->GetSequenceToken());
-  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner =
-      BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
-
-  return new policy::URLBlacklistManager(pref_service, background_task_runner,
-                                         io_task_runner,
-                                         base::Bind(OverrideBlacklistForURL));
-}
-
-}  // namespace
-
-// Delete the legacy cache dir (in the app data dir) in 10 seconds after init.
-int AwBrowserContext::legacy_cache_removal_delay_ms_ = 10000;
-
-AwBrowserContext::AwBrowserContext(
-    const FilePath path,
-    JniDependencyFactory* native_factory)
-    : context_storage_path_(path),
-      native_factory_(native_factory) {
-  DCHECK(!g_browser_context);
-  g_browser_context = this;
-  BrowserContext::Initialize(this, path);
-
-  // This constructor is entered during the creation of ContentBrowserClient,
-  // before browser threads are created. Therefore any checks to enforce
-  // threading (such as BrowserThread::CurrentlyOn()) will fail here.
-}
-
-AwBrowserContext::~AwBrowserContext() {
-  DCHECK_EQ(this, g_browser_context);
-  g_browser_context = NULL;
-}
-
-// static
-AwBrowserContext* AwBrowserContext::GetDefault() {
-  // TODO(joth): rather than store in a global here, lookup this instance
-  // from the Java-side peer.
-  return g_browser_context;
-}
-
-// static
-AwBrowserContext* AwBrowserContext::FromWebContents(
-    content::WebContents* web_contents) {
-  // This is safe; this is the only implementation of the browser context.
-  return static_cast<AwBrowserContext*>(web_contents->GetBrowserContext());
-}
-
-// static
-void AwBrowserContext::SetLegacyCacheRemovalDelayForTest(int delay_ms) {
-  legacy_cache_removal_delay_ms_ = delay_ms;
-}
-
-void AwBrowserContext::PreMainMessageLoopRun() {
-  FilePath cache_path;
-  const FilePath fallback_cache_dir =
-      GetPath().Append(FILE_PATH_LITERAL("Cache"));
-  if (PathService::Get(base::DIR_CACHE, &cache_path)) {
-    cache_path = cache_path.Append(
-        FILE_PATH_LITERAL("org.chromium.android_webview"));
-    // Delay the legacy dir removal to not impact startup performance.
-    BrowserThread::PostDelayedTask(
-        BrowserThread::FILE, FROM_HERE,
-        base::Bind(&DeleteDirRecursively, fallback_cache_dir),
-        base::TimeDelta::FromMilliseconds(legacy_cache_removal_delay_ms_));
-  } else {
-    cache_path = fallback_cache_dir;
-    LOG(WARNING) << "Failed to get cache directory for Android WebView. "
-                 << "Using app data directory as a fallback.";
-  }
-
-  browser_policy_connector_.reset(new AwBrowserPolicyConnector());
-
-  InitUserPrefService();
-
-  url_request_context_getter_ = new AwURLRequestContextGetter(
-      cache_path, CreateProxyConfigService(), user_pref_service_.get());
-
-  base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool();
-  scoped_refptr<base::SequencedTaskRunner> db_task_runner =
-      pool->GetSequencedTaskRunnerWithShutdownBehavior(
-          pool->GetSequenceToken(),
-          base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
-  visitedlink_master_.reset(
-      new visitedlink::VisitedLinkMaster(this, this, false));
-  visitedlink_master_->Init();
-
-  form_database_service_.reset(
-      new AwFormDatabaseService(context_storage_path_));
-
-  EnsureResourceContextInitialized(this);
-
-  blacklist_manager_.reset(CreateURLBlackListManager(user_pref_service_.get()));
-
-  // UMA uses randomly-generated GUIDs (globally unique identifiers) to
-  // anonymously identify logs. Every WebView-using app on every device
-  // is given a GUID, stored in this file in the app's data directory.
-  const FilePath guid_file_path =
-      GetPath().Append(FILE_PATH_LITERAL("metrics_guid"));
-  AwMetricsServiceClient::GetInstance()->Initialize(
-      user_pref_service_.get(),
-      content::BrowserContext::GetDefaultStoragePartition(this)->
-          GetURLRequestContext(),
-      guid_file_path);
-
-  web_restriction_provider_.reset(
-      new web_restrictions::WebRestrictionsClient());
-  pref_change_registrar_.Add(
-      prefs::kWebRestrictionsAuthority,
-      base::Bind(&AwBrowserContext::OnWebRestrictionsAuthorityChanged,
-                 base::Unretained(this)));
-  web_restriction_provider_->SetAuthority(
-      user_pref_service_->GetString(prefs::kWebRestrictionsAuthority));
-
-  safe_browsing_ui_manager_ = new AwSafeBrowsingUIManager();
-  safe_browsing_db_manager_ =
-      new safe_browsing::RemoteSafeBrowsingDatabaseManager();
-}
-
-void AwBrowserContext::OnWebRestrictionsAuthorityChanged() {
-  web_restriction_provider_->SetAuthority(
-      user_pref_service_->GetString(prefs::kWebRestrictionsAuthority));
-}
-
-void AwBrowserContext::AddVisitedURLs(const std::vector<GURL>& urls) {
-  DCHECK(visitedlink_master_);
-  visitedlink_master_->AddURLs(urls);
-}
-
-AwQuotaManagerBridge* AwBrowserContext::GetQuotaManagerBridge() {
-  if (!quota_manager_bridge_.get()) {
-    quota_manager_bridge_ = native_factory_->CreateAwQuotaManagerBridge(this);
-  }
-  return quota_manager_bridge_.get();
-}
-
-AwFormDatabaseService* AwBrowserContext::GetFormDatabaseService() {
-  return form_database_service_.get();
-}
-
-AwURLRequestContextGetter* AwBrowserContext::GetAwURLRequestContext() {
-  return url_request_context_getter_.get();
-}
-
-// Create user pref service
-void AwBrowserContext::InitUserPrefService() {
-  user_prefs::PrefRegistrySyncable* pref_registry =
-      new user_prefs::PrefRegistrySyncable();
-  // We only use the autocomplete feature of Autofill, which is controlled via
-  // the manager_delegate. We don't use the rest of Autofill, which is why it is
-  // hardcoded as disabled here.
-  pref_registry->RegisterBooleanPref(autofill::prefs::kAutofillEnabled, false);
-  policy::URLBlacklistManager::RegisterProfilePrefs(pref_registry);
-
-  pref_registry->RegisterStringPref(prefs::kAuthServerWhitelist, std::string());
-  pref_registry->RegisterStringPref(prefs::kAuthAndroidNegotiateAccountType,
-                                    std::string());
-  pref_registry->RegisterStringPref(prefs::kWebRestrictionsAuthority,
-                                    std::string());
-
-  metrics::MetricsService::RegisterPrefs(pref_registry);
-
-  PrefServiceFactory pref_service_factory;
-  pref_service_factory.set_user_prefs(make_scoped_refptr(
-      new InMemoryPrefStore()));
-  pref_service_factory.set_managed_prefs(
-      make_scoped_refptr(new policy::ConfigurationPolicyPrefStore(
-          browser_policy_connector_->GetPolicyService(),
-          browser_policy_connector_->GetHandlerList(),
-          policy::POLICY_LEVEL_MANDATORY)));
-  pref_service_factory.set_read_error_callback(base::Bind(&HandleReadError));
-  user_pref_service_ = pref_service_factory.Create(pref_registry);
-  pref_change_registrar_.Init(user_pref_service_.get());
-
-  user_prefs::UserPrefs::Set(this, user_pref_service_.get());
-}
-
-std::unique_ptr<content::ZoomLevelDelegate>
-AwBrowserContext::CreateZoomLevelDelegate(
-    const base::FilePath& partition_path) {
-  return nullptr;
-}
-
-base::FilePath AwBrowserContext::GetPath() const {
-  return context_storage_path_;
-}
-
-bool AwBrowserContext::IsOffTheRecord() const {
-  // Android WebView does not support off the record profile yet.
-  return false;
-}
-
-content::ResourceContext* AwBrowserContext::GetResourceContext() {
-  if (!resource_context_) {
-    resource_context_.reset(
-        new AwResourceContext(url_request_context_getter_.get()));
-  }
-  return resource_context_.get();
-}
-
-content::DownloadManagerDelegate*
-AwBrowserContext::GetDownloadManagerDelegate() {
-  return &download_manager_delegate_;
-}
-
-content::BrowserPluginGuestManager* AwBrowserContext::GetGuestManager() {
-  return NULL;
-}
-
-storage::SpecialStoragePolicy* AwBrowserContext::GetSpecialStoragePolicy() {
-  // Intentionally returning NULL as 'Extensions' and 'Apps' not supported.
-  return NULL;
-}
-
-content::PushMessagingService* AwBrowserContext::GetPushMessagingService() {
-  // TODO(johnme): Support push messaging in WebView.
-  return NULL;
-}
-
-content::SSLHostStateDelegate* AwBrowserContext::GetSSLHostStateDelegate() {
-  if (!ssl_host_state_delegate_.get()) {
-    ssl_host_state_delegate_.reset(new AwSSLHostStateDelegate());
-  }
-  return ssl_host_state_delegate_.get();
-}
-
-content::PermissionManager* AwBrowserContext::GetPermissionManager() {
-  if (!permission_manager_.get())
-    permission_manager_.reset(new AwPermissionManager());
-  return permission_manager_.get();
-}
-
-content::BackgroundSyncController*
-AwBrowserContext::GetBackgroundSyncController() {
-  return nullptr;
-}
-
-net::URLRequestContextGetter* AwBrowserContext::CreateRequestContext(
-    content::ProtocolHandlerMap* protocol_handlers,
-    content::URLRequestInterceptorScopedVector request_interceptors) {
-  // This function cannot actually create the request context because
-  // there is a reentrant dependency on GetResourceContext() via
-  // content::StoragePartitionImplMap::Create(). This is not fixable
-  // until http://crbug.com/159193. Until then, assert that the context
-  // has already been allocated and just handle setting the protocol_handlers.
-  DCHECK(url_request_context_getter_.get());
-  url_request_context_getter_->SetHandlersAndInterceptors(
-      protocol_handlers, std::move(request_interceptors));
-  return url_request_context_getter_.get();
-}
-
-net::URLRequestContextGetter*
-AwBrowserContext::CreateRequestContextForStoragePartition(
-    const base::FilePath& partition_path,
-    bool in_memory,
-    content::ProtocolHandlerMap* protocol_handlers,
-    content::URLRequestInterceptorScopedVector request_interceptors) {
-  NOTREACHED();
-  return NULL;
-}
-
-net::URLRequestContextGetter* AwBrowserContext::CreateMediaRequestContext() {
-  return url_request_context_getter_.get();
-}
-
-net::URLRequestContextGetter*
-AwBrowserContext::CreateMediaRequestContextForStoragePartition(
-    const base::FilePath& partition_path,
-    bool in_memory) {
-  NOTREACHED();
-  return NULL;
-}
-
-policy::URLBlacklistManager* AwBrowserContext::GetURLBlacklistManager() {
-  // Should not be called until the end of PreMainMessageLoopRun, where
-  // blacklist_manager_ is initialized.
-  DCHECK(blacklist_manager_);
-  return blacklist_manager_.get();
-}
-
-web_restrictions::WebRestrictionsClient*
-AwBrowserContext::GetWebRestrictionProvider() {
-  DCHECK(web_restriction_provider_);
-  return web_restriction_provider_.get();
-}
-
-AwSafeBrowsingUIManager* AwBrowserContext::GetSafeBrowsingUIManager() {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  return safe_browsing_ui_manager_.get();
-}
-
-safe_browsing::RemoteSafeBrowsingDatabaseManager*
-AwBrowserContext::GetSafeBrowsingDBManager() {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  if (!safe_browsing_db_manager_started_) {
-    // V4ProtocolConfig is not used. Just create one with empty values..
-    safe_browsing::V4ProtocolConfig config("", false, "", "");
-    safe_browsing_db_manager_->StartOnIOThread(
-        url_request_context_getter_.get(), config);
-    safe_browsing_db_manager_started_ = true;
-  }
-  return safe_browsing_db_manager_.get();
-}
-
-void AwBrowserContext::RebuildTable(
-    const scoped_refptr<URLEnumerator>& enumerator) {
-  // Android WebView rebuilds from WebChromeClient.getVisitedHistory. The client
-  // can change in the lifetime of this WebView and may not yet be set here.
-  // Therefore this initialization path is not used.
-  enumerator->OnComplete(true);
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_browser_context.h b/android_webview/browser/aw_browser_context.h
deleted file mode 100644
index c2a4bc2..0000000
--- a/android_webview/browser/aw_browser_context.h
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_BROWSER_CONTEXT_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_CONTEXT_H_
-
-#include <memory>
-#include <vector>
-
-#include "android_webview/browser/aw_download_manager_delegate.h"
-#include "android_webview/browser/aw_safe_browsing_ui_manager.h"
-#include "android_webview/browser/aw_ssl_host_state_delegate.h"
-#include "base/compiler_specific.h"
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "components/prefs/pref_change_registrar.h"
-#include "components/safe_browsing_db/remote_database_manager.h"
-#include "components/visitedlink/browser/visitedlink_delegate.h"
-#include "components/web_restrictions/browser/web_restrictions_client.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/content_browser_client.h"
-#include "net/url_request/url_request_job_factory.h"
-
-class GURL;
-class PrefService;
-
-namespace content {
-class PermissionManager;
-class ResourceContext;
-class SSLHostStateDelegate;
-class WebContents;
-}
-
-namespace policy {
-class URLBlacklistManager;
-class BrowserPolicyConnectorBase;
-}
-
-namespace visitedlink {
-class VisitedLinkMaster;
-}
-
-namespace android_webview {
-
-class AwFormDatabaseService;
-class AwQuotaManagerBridge;
-class AwURLRequestContextGetter;
-class JniDependencyFactory;
-
-namespace prefs {
-
-// Used for Kerberos authentication.
-extern const char kAuthAndroidNegotiateAccountType[];
-extern const char kAuthServerWhitelist[];
-extern const char kWebRestrictionsAuthority[];
-
-}  // namespace prefs
-
-class AwBrowserContext : public content::BrowserContext,
-                         public visitedlink::VisitedLinkDelegate {
- public:
-
-  AwBrowserContext(const base::FilePath path,
-                   JniDependencyFactory* native_factory);
-  ~AwBrowserContext() override;
-
-  // Currently only one instance per process is supported.
-  static AwBrowserContext* GetDefault();
-
-  // Convenience method to returns the AwBrowserContext corresponding to the
-  // given WebContents.
-  static AwBrowserContext* FromWebContents(
-      content::WebContents* web_contents);
-
-  static void SetLegacyCacheRemovalDelayForTest(int delay_ms);
-
-  // Maps to BrowserMainParts::PreMainMessageLoopRun.
-  void PreMainMessageLoopRun();
-
-  // These methods map to Add methods in visitedlink::VisitedLinkMaster.
-  void AddVisitedURLs(const std::vector<GURL>& urls);
-
-  AwQuotaManagerBridge* GetQuotaManagerBridge();
-  AwFormDatabaseService* GetFormDatabaseService();
-  AwURLRequestContextGetter* GetAwURLRequestContext();
-
-  policy::URLBlacklistManager* GetURLBlacklistManager();
-  web_restrictions::WebRestrictionsClient* GetWebRestrictionProvider();
-
-  // content::BrowserContext implementation.
-  std::unique_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate(
-      const base::FilePath& partition_path) override;
-  base::FilePath GetPath() const override;
-  bool IsOffTheRecord() const override;
-  content::ResourceContext* GetResourceContext() override;
-  content::DownloadManagerDelegate* GetDownloadManagerDelegate() override;
-  content::BrowserPluginGuestManager* GetGuestManager() override;
-  storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override;
-  content::PushMessagingService* GetPushMessagingService() override;
-  content::SSLHostStateDelegate* GetSSLHostStateDelegate() override;
-  content::PermissionManager* GetPermissionManager() override;
-  content::BackgroundSyncController* GetBackgroundSyncController() override;
-  net::URLRequestContextGetter* CreateRequestContext(
-      content::ProtocolHandlerMap* protocol_handlers,
-      content::URLRequestInterceptorScopedVector request_interceptors) override;
-  net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
-      const base::FilePath& partition_path,
-      bool in_memory,
-      content::ProtocolHandlerMap* protocol_handlers,
-      content::URLRequestInterceptorScopedVector request_interceptors) override;
-  net::URLRequestContextGetter* CreateMediaRequestContext() override;
-  net::URLRequestContextGetter* CreateMediaRequestContextForStoragePartition(
-      const base::FilePath& partition_path,
-      bool in_memory) override;
-
-  // visitedlink::VisitedLinkDelegate implementation.
-  void RebuildTable(const scoped_refptr<URLEnumerator>& enumerator) override;
-
-  AwSafeBrowsingUIManager* GetSafeBrowsingUIManager();
-  safe_browsing::RemoteSafeBrowsingDatabaseManager* GetSafeBrowsingDBManager();
-
- private:
-  void InitUserPrefService();
-  void OnWebRestrictionsAuthorityChanged();
-
-
-  // Delay, in milliseconds, before removing the legacy cache dir.
-  // This is non-const for testing purposes.
-  static int legacy_cache_removal_delay_ms_;
-
-  // The file path where data for this context is persisted.
-  base::FilePath context_storage_path_;
-
-  JniDependencyFactory* native_factory_;
-  scoped_refptr<AwURLRequestContextGetter> url_request_context_getter_;
-  scoped_refptr<AwQuotaManagerBridge> quota_manager_bridge_;
-  std::unique_ptr<AwFormDatabaseService> form_database_service_;
-
-  AwDownloadManagerDelegate download_manager_delegate_;
-
-  std::unique_ptr<visitedlink::VisitedLinkMaster> visitedlink_master_;
-  std::unique_ptr<content::ResourceContext> resource_context_;
-
-  std::unique_ptr<PrefService> user_pref_service_;
-  std::unique_ptr<policy::BrowserPolicyConnectorBase> browser_policy_connector_;
-  std::unique_ptr<policy::URLBlacklistManager> blacklist_manager_;
-
-  std::unique_ptr<AwSSLHostStateDelegate> ssl_host_state_delegate_;
-  std::unique_ptr<content::PermissionManager> permission_manager_;
-  std::unique_ptr<web_restrictions::WebRestrictionsClient>
-      web_restriction_provider_;
-  PrefChangeRegistrar pref_change_registrar_;
-
-  scoped_refptr<AwSafeBrowsingUIManager> safe_browsing_ui_manager_;
-  scoped_refptr<safe_browsing::RemoteSafeBrowsingDatabaseManager>
-      safe_browsing_db_manager_;
-  bool safe_browsing_db_manager_started_ = false;
-
-  DISALLOW_COPY_AND_ASSIGN(AwBrowserContext);
-};
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_CONTEXT_H_
diff --git a/android_webview/browser/aw_browser_main_parts.cc b/android_webview/browser/aw_browser_main_parts.cc
deleted file mode 100644
index 753466b3..0000000
--- a/android_webview/browser/aw_browser_main_parts.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_browser_main_parts.h"
-
-#include "android_webview/browser/aw_browser_context.h"
-#include "android_webview/browser/aw_browser_terminator.h"
-#include "android_webview/browser/aw_content_browser_client.h"
-#include "android_webview/browser/aw_result_codes.h"
-#include "android_webview/browser/deferred_gpu_command_service.h"
-#include "android_webview/browser/net/aw_network_change_notifier_factory.h"
-#include "android_webview/common/aw_descriptors.h"
-#include "android_webview/common/aw_paths.h"
-#include "android_webview/common/aw_resource.h"
-#include "android_webview/common/aw_switches.h"
-#include "android_webview/common/crash_reporter/aw_microdump_crash_reporter.h"
-#include "base/android/apk_assets.h"
-#include "base/android/build_info.h"
-#include "base/android/locale_utils.h"
-#include "base/android/memory_pressure_listener_android.h"
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/i18n/rtl.h"
-#include "base/path_service.h"
-#include "components/crash/content/browser/crash_dump_manager_android.h"
-#include "components/crash/content/browser/crash_dump_observer_android.h"
-#include "content/public/browser/android/synchronous_compositor.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/common/content_client.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/result_codes.h"
-#include "device/geolocation/access_token_store.h"
-#include "device/geolocation/geolocation_delegate.h"
-#include "device/geolocation/geolocation_provider.h"
-#include "net/android/network_change_notifier_factory_android.h"
-#include "net/base/network_change_notifier.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/layout.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/resource/resource_bundle_android.h"
-#include "ui/base/ui_base_paths.h"
-#include "ui/gl/gl_surface.h"
-
-namespace android_webview {
-namespace {
-
-class AwAccessTokenStore : public device::AccessTokenStore {
- public:
-  AwAccessTokenStore() { }
-
-  // device::AccessTokenStore implementation
-  void LoadAccessTokens(const LoadAccessTokensCallback& request) override {
-    AccessTokenStore::AccessTokenMap access_token_map;
-    // AccessTokenMap and net::URLRequestContextGetter not used on Android,
-    // but Run needs to be called to finish the geolocation setup.
-    request.Run(access_token_map, NULL);
-  }
-  void SaveAccessToken(const GURL& server_url,
-                       const base::string16& access_token) override {}
-
- private:
-  ~AwAccessTokenStore() override {}
-
-  DISALLOW_COPY_AND_ASSIGN(AwAccessTokenStore);
-};
-
-// A provider of Geolocation services to override AccessTokenStore.
-class AwGeolocationDelegate : public device::GeolocationDelegate {
- public:
-  AwGeolocationDelegate() = default;
-
-  scoped_refptr<device::AccessTokenStore> CreateAccessTokenStore() final {
-    return new AwAccessTokenStore();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(AwGeolocationDelegate);
-};
-
-}  // anonymous namespace
-
-AwBrowserMainParts::AwBrowserMainParts(AwContentBrowserClient* browser_client)
-    : browser_client_(browser_client) {
-}
-
-AwBrowserMainParts::~AwBrowserMainParts() {
-}
-
-void AwBrowserMainParts::PreEarlyInitialization() {
-  net::NetworkChangeNotifier::SetFactory(new AwNetworkChangeNotifierFactory());
-
-  // Android WebView does not use default MessageLoop. It has its own
-  // Android specific MessageLoop. Also see MainMessageLoopRun.
-  DCHECK(!main_message_loop_.get());
-  main_message_loop_.reset(new base::MessageLoopForUI);
-  base::MessageLoopForUI::current()->Start();
-}
-
-int AwBrowserMainParts::PreCreateThreads() {
-  ui::SetLocalePaksStoredInApk(true);
-  std::string locale = ui::ResourceBundle::InitSharedInstanceWithLocale(
-      base::android::GetDefaultLocaleString(), NULL,
-      ui::ResourceBundle::LOAD_COMMON_RESOURCES);
-  if (locale.empty()) {
-    LOG(WARNING) << "Failed to load locale .pak from the apk. "
-        "Bringing up WebView without any locale";
-  }
-  base::i18n::SetICUDefaultLocale(locale);
-
-  // Try to directly mmap the resources.pak from the apk. Fall back to load
-  // from file, using PATH_SERVICE, otherwise.
-  base::FilePath pak_file_path;
-  PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_file_path);
-  pak_file_path = pak_file_path.AppendASCII("resources.pak");
-  ui::LoadMainAndroidPackFile("assets/resources.pak", pak_file_path);
-
-  base::android::MemoryPressureListenerAndroid::RegisterSystemCallback(
-      base::android::AttachCurrentThread());
-  DeferredGpuCommandService::SetInstance();
-  breakpad::CrashDumpObserver::Create();
-
-  if (crash_reporter::IsCrashReporterEnabled()) {
-    base::FilePath crash_dir;
-    if (PathService::Get(android_webview::DIR_CRASH_DUMPS, &crash_dir)) {
-      if (!base::PathExists(crash_dir))
-        base::CreateDirectory(crash_dir);
-      breakpad::CrashDumpObserver::GetInstance()->RegisterClient(
-          base::MakeUnique<breakpad::CrashDumpManager>(
-              crash_dir, kAndroidMinidumpDescriptor));
-    }
-  }
-
-  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kSingleProcess)) {
-    // Create the renderers crash manager on the UI thread.
-    breakpad::CrashDumpObserver::GetInstance()->RegisterClient(
-        base::MakeUnique<AwBrowserTerminator>());
-  }
-
-  return content::RESULT_CODE_NORMAL_EXIT;
-}
-
-void AwBrowserMainParts::PreMainMessageLoopRun() {
-  browser_client_->InitBrowserContext()->PreMainMessageLoopRun();
-
-  device::GeolocationProvider::SetGeolocationDelegate(
-      new AwGeolocationDelegate());
-
-  content::RenderFrameHost::AllowInjectingJavaScriptForAndroidWebView();
-}
-
-bool AwBrowserMainParts::MainMessageLoopRun(int* result_code) {
-  // Android WebView does not use default MessageLoop. It has its own
-  // Android specific MessageLoop.
-  return true;
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_browser_main_parts.h b/android_webview/browser/aw_browser_main_parts.h
deleted file mode 100644
index 1c6b173..0000000
--- a/android_webview/browser/aw_browser_main_parts.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_BROWSER_MAIN_PARTS_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_MAIN_PARTS_H_
-
-#include <memory>
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "content/public/browser/browser_main_parts.h"
-
-namespace base {
-class MessageLoop;
-}
-
-namespace android_webview {
-
-class AwContentBrowserClient;
-
-class AwBrowserMainParts : public content::BrowserMainParts {
- public:
-  explicit AwBrowserMainParts(AwContentBrowserClient* browser_client);
-  ~AwBrowserMainParts() override;
-
-  // Overriding methods from content::BrowserMainParts.
-  void PreEarlyInitialization() override;
-  int PreCreateThreads() override;
-  void PreMainMessageLoopRun() override;
-  bool MainMessageLoopRun(int* result_code) override;
-
- private:
-  // Android specific UI MessageLoop.
-  std::unique_ptr<base::MessageLoop> main_message_loop_;
-
-  AwContentBrowserClient* browser_client_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwBrowserMainParts);
-};
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_MAIN_PARTS_H_
diff --git a/android_webview/browser/aw_browser_manifest_overlay.json b/android_webview/browser/aw_browser_manifest_overlay.json
deleted file mode 100644
index a138c9d..0000000
--- a/android_webview/browser/aw_browser_manifest_overlay.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "name": "content_browser",
-  "interface_provider_specs": {
-    "navigation:frame": {
-      "provides": {
-        "renderer": [
-          "autofill::mojom::AutofillDriver",
-          "autofill::mojom::PasswordManagerDriver",
-          "web_restrictions::mojom::WebRestrictions"
-        ]
-      }
-    }
-  }
-}
diff --git a/android_webview/browser/aw_browser_permission_request_delegate.h b/android_webview/browser/aw_browser_permission_request_delegate.h
deleted file mode 100644
index a0144a1..0000000
--- a/android_webview/browser/aw_browser_permission_request_delegate.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PERMISSION_REQUEST_DELEGATE_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PERMISSION_REQUEST_DELEGATE_H_
-
-#include "base/callback_forward.h"
-#include "url/gurl.h"
-
-namespace android_webview {
-
-// Delegate interface to handle the permission requests from |BrowserContext|.
-class AwBrowserPermissionRequestDelegate {
- public:
-  // Returns the AwBrowserPermissionRequestDelegate instance associated with
-  // the given render_process_id and render_frame_id, or NULL.
-  static AwBrowserPermissionRequestDelegate* FromID(int render_process_id,
-                                                    int render_frame_id);
-
-  virtual void RequestProtectedMediaIdentifierPermission(
-      const GURL& origin,
-      const base::Callback<void(bool)>& callback) = 0;
-
-  virtual void CancelProtectedMediaIdentifierPermissionRequests(
-      const GURL& origin) = 0;
-
-  virtual void RequestGeolocationPermission(
-      const GURL& origin,
-      const base::Callback<void(bool)>& callback) = 0;
-
-  virtual void CancelGeolocationPermissionRequests(const GURL& origin) = 0;
-
-  virtual void RequestMIDISysexPermission(
-      const GURL& origin,
-      const base::Callback<void(bool)>& callback) = 0;
-
-  virtual void CancelMIDISysexPermissionRequests(const GURL& origin) = 0;
-
- protected:
-  AwBrowserPermissionRequestDelegate() {}
-};
-
-}  // namespace android_webview
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PERMISSION_REQUEST_DELEGATE_H_
diff --git a/android_webview/browser/aw_browser_policy_connector.cc b/android_webview/browser/aw_browser_policy_connector.cc
deleted file mode 100644
index bcd497b..0000000
--- a/android_webview/browser/aw_browser_policy_connector.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_browser_policy_connector.h"
-
-#include "android_webview/browser/aw_browser_context.h"
-#include "base/bind.h"
-#include "base/memory/ptr_util.h"
-#include "components/policy/core/browser/android/android_combined_policy_provider.h"
-#include "components/policy/core/browser/configuration_policy_handler_list.h"
-#include "components/policy/core/browser/url_blacklist_policy_handler.h"
-#include "components/policy/core/common/policy_pref_names.h"
-#include "components/policy/policy_constants.h"
-#include "net/url_request/url_request_context_getter.h"
-
-namespace android_webview {
-
-namespace {
-
-// Callback only used in ChromeOS. No-op here.
-void PopulatePolicyHandlerParameters(
-    policy::PolicyHandlerParameters* parameters) {}
-
-// Used to check if a policy is deprecated. Currently bypasses that check.
-const policy::PolicyDetails* GetChromePolicyDetails(const std::string& policy) {
-  return nullptr;
-}
-
-// Factory for the handlers that will be responsible for converting the policies
-// to the associated preferences.
-std::unique_ptr<policy::ConfigurationPolicyHandlerList> BuildHandlerList(
-    const policy::Schema& chrome_schema) {
-  std::unique_ptr<policy::ConfigurationPolicyHandlerList> handlers(
-      new policy::ConfigurationPolicyHandlerList(
-          base::Bind(&PopulatePolicyHandlerParameters),
-          base::Bind(&GetChromePolicyDetails)));
-
-  // URL Filtering
-  handlers->AddHandler(base::MakeUnique<policy::SimplePolicyHandler>(
-      policy::key::kURLWhitelist, policy::policy_prefs::kUrlWhitelist,
-      base::Value::Type::LIST));
-  handlers->AddHandler(base::MakeUnique<policy::URLBlacklistPolicyHandler>());
-
-  // HTTP Negotiate authentication
-  handlers->AddHandler(base::MakeUnique<policy::SimplePolicyHandler>(
-      policy::key::kAuthServerWhitelist, prefs::kAuthServerWhitelist,
-      base::Value::Type::STRING));
-  handlers->AddHandler(base::MakeUnique<policy::SimplePolicyHandler>(
-      policy::key::kAuthAndroidNegotiateAccountType,
-      prefs::kAuthAndroidNegotiateAccountType, base::Value::Type::STRING));
-
-  // Web restrictions
-  handlers->AddHandler(base::WrapUnique(new policy::SimplePolicyHandler(
-      policy::key::kWebRestrictionsAuthority, prefs::kWebRestrictionsAuthority,
-      base::Value::Type::STRING)));
-
-  return handlers;
-}
-
-}  // namespace
-
-AwBrowserPolicyConnector::AwBrowserPolicyConnector()
-   : BrowserPolicyConnectorBase(base::Bind(&BuildHandlerList)) {
-  SetPlatformPolicyProvider(
-      base::MakeUnique<policy::android::AndroidCombinedPolicyProvider>(
-          GetSchemaRegistry()));
-  InitPolicyProviders();
-}
-
-AwBrowserPolicyConnector::~AwBrowserPolicyConnector() {}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_browser_policy_connector.h b/android_webview/browser/aw_browser_policy_connector.h
deleted file mode 100644
index 4530657..0000000
--- a/android_webview/browser/aw_browser_policy_connector.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_BROWSER_POLICY_CONNECTOR_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_POLICY_CONNECTOR_H_
-
-#include "base/macros.h"
-#include "components/policy/core/browser/browser_policy_connector_base.h"
-
-namespace android_webview {
-
-// Sets up and keeps the browser-global policy objects such as the PolicyService
-// and the platform-specific PolicyProvider.
-class AwBrowserPolicyConnector : public policy::BrowserPolicyConnectorBase {
-public:
- AwBrowserPolicyConnector();
- ~AwBrowserPolicyConnector() override;
-
-private:
- DISALLOW_COPY_AND_ASSIGN(AwBrowserPolicyConnector);
-};
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_POLICY_CONNECTOR_H_
diff --git a/android_webview/browser/aw_browser_terminator.cc b/android_webview/browser/aw_browser_terminator.cc
deleted file mode 100644
index 0088138..0000000
--- a/android_webview/browser/aw_browser_terminator.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_browser_terminator.h"
-
-#include <unistd.h>
-
-#include "android_webview/browser/aw_render_process_gone_delegate.h"
-#include "android_webview/common/aw_descriptors.h"
-#include "android_webview/common/crash_reporter/aw_microdump_crash_reporter.h"
-#include "base/bind.h"
-#include "base/logging.h"
-#include "base/stl_util.h"
-#include "base/sync_socket.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/child_process_data.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/render_widget_host.h"
-#include "content/public/browser/render_widget_host_iterator.h"
-#include "content/public/browser/web_contents.h"
-
-using content::BrowserThread;
-
-namespace android_webview {
-
-namespace {
-
-void GetAwRenderProcessGoneDelegatesForRenderProcess(
-    int render_process_id,
-    std::vector<AwRenderProcessGoneDelegate*>* delegates) {
-  content::RenderProcessHost* rph =
-      content::RenderProcessHost::FromID(render_process_id);
-  if (!rph)
-    return;
-
-  std::unique_ptr<content::RenderWidgetHostIterator> widgets(
-      content::RenderWidgetHost::GetRenderWidgetHosts());
-  while (content::RenderWidgetHost* widget = widgets->GetNextHost()) {
-    content::RenderViewHost* view = content::RenderViewHost::From(widget);
-    if (view && rph == view->GetProcess()) {
-      content::WebContents* wc = content::WebContents::FromRenderViewHost(view);
-      if (wc) {
-        AwRenderProcessGoneDelegate* delegate =
-            AwRenderProcessGoneDelegate::FromWebContents(wc);
-        if (delegate)
-          delegates->push_back(delegate);
-      }
-    }
-  }
-}
-
-void OnRenderProcessGone(int child_process_id) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  std::vector<AwRenderProcessGoneDelegate*> delegates;
-  GetAwRenderProcessGoneDelegatesForRenderProcess(child_process_id, &delegates);
-  for (auto* delegate : delegates)
-    delegate->OnRenderProcessGone(child_process_id);
-}
-
-void OnRenderProcessGoneDetail(int child_process_id,
-                               base::ProcessHandle child_process_pid,
-                               bool crashed) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  std::vector<AwRenderProcessGoneDelegate*> delegates;
-  GetAwRenderProcessGoneDelegatesForRenderProcess(child_process_id, &delegates);
-  for (auto* delegate : delegates) {
-    if (!delegate->OnRenderProcessGoneDetail(child_process_pid, crashed)) {
-      if (crashed) {
-        // Keeps this log unchanged, CTS test uses it to detect crash.
-        LOG(FATAL) << "Render process (" << child_process_pid << ")'s crash"
-                   << " wasn't handled by all associated  webviews, triggering"
-                   << " application crash.";
-      } else {
-        // The render process was most likely killed for OOM or switching
-        // WebView provider, to make WebView backward compatible, kills the
-        // browser process instead of triggering crash.
-        LOG(ERROR) << "Render process (" << child_process_pid << ") kill (OOM"
-                   << " or update) wasn't handed by all associated webviews,"
-                   << " killing application.";
-        kill(getpid(), SIGKILL);
-      }
-    }
-  }
-}
-
-}  // namespace
-
-AwBrowserTerminator::AwBrowserTerminator() {}
-
-AwBrowserTerminator::~AwBrowserTerminator() {}
-
-void AwBrowserTerminator::OnChildStart(int child_process_id,
-                                       content::FileDescriptorInfo* mappings) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::PROCESS_LAUNCHER);
-
-  base::AutoLock auto_lock(child_process_id_to_pipe_lock_);
-  DCHECK(!ContainsKey(child_process_id_to_pipe_, child_process_id));
-
-  auto local_pipe = base::MakeUnique<base::SyncSocket>();
-  auto child_pipe = base::MakeUnique<base::SyncSocket>();
-  if (base::SyncSocket::CreatePair(local_pipe.get(), child_pipe.get())) {
-    child_process_id_to_pipe_[child_process_id] = std::move(local_pipe);
-    mappings->Transfer(kAndroidWebViewCrashSignalDescriptor,
-                       base::ScopedFD(dup(child_pipe->handle())));
-  }
-}
-
-void AwBrowserTerminator::ProcessTerminationStatus(
-    int child_process_id,
-    base::ProcessHandle pid,
-    std::unique_ptr<base::SyncSocket> pipe) {
-  bool crashed = false;
-
-  // If the child process hasn't written anything into the pipe. This implies
-  // that it was terminated via SIGKILL by the low memory killer.
-  if (pipe->Peek() >= sizeof(int)) {
-    int exit_code;
-    pipe->Receive(&exit_code, sizeof(exit_code));
-    crash_reporter::SuppressDumpGeneration();
-    LOG(ERROR) << "Renderer process (" << pid << ") crash detected (code "
-               << exit_code << ").";
-    crashed = true;
-  }
-
-  BrowserThread::PostTask(
-      BrowserThread::UI, FROM_HERE,
-      base::Bind(&OnRenderProcessGoneDetail, child_process_id, pid, crashed));
-}
-
-void AwBrowserTerminator::OnChildExit(
-    int child_process_id,
-    base::ProcessHandle pid,
-    content::ProcessType process_type,
-    base::TerminationStatus termination_status,
-    base::android::ApplicationState app_state) {
-  std::unique_ptr<base::SyncSocket> pipe;
-
-  {
-    base::AutoLock auto_lock(child_process_id_to_pipe_lock_);
-    const auto& iter = child_process_id_to_pipe_.find(child_process_id);
-    if (iter == child_process_id_to_pipe_.end()) {
-      // We might get a NOTIFICATION_RENDERER_PROCESS_TERMINATED and a
-      // NOTIFICATION_RENDERER_PROCESS_CLOSED.
-      return;
-    }
-    pipe = std::move(iter->second);
-    child_process_id_to_pipe_.erase(iter);
-  }
-  if (termination_status == base::TERMINATION_STATUS_NORMAL_TERMINATION)
-    return;
-  OnRenderProcessGone(child_process_id);
-  DCHECK(pipe->handle() != base::SyncSocket::kInvalidHandle);
-  BrowserThread::PostTask(
-      BrowserThread::FILE, FROM_HERE,
-      base::Bind(&AwBrowserTerminator::ProcessTerminationStatus,
-                 child_process_id, pid, base::Passed(std::move(pipe))));
-}
-
-}  // namespace breakpad
diff --git a/android_webview/browser/aw_browser_terminator.h b/android_webview/browser/aw_browser_terminator.h
deleted file mode 100644
index 074b171..0000000
--- a/android_webview/browser/aw_browser_terminator.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CRASH_CONTENT_BROWSER_CRASH_DUMP_BROWSER_TERMINATOR_H_
-#define COMPONENTS_CRASH_CONTENT_BROWSER_CRASH_DUMP_BROWSER_TERMINATOR_H_
-
-#include <map>
-
-#include "base/synchronization/lock.h"
-#include "components/crash/content/browser/crash_dump_observer_android.h"
-
-namespace base {
-class SyncSocket;
-}
-
-namespace android_webview {
-
-// This class manages behavior of the browser on renderer crashes when
-// microdumps are used for capturing the crash stack.  Normally, in this case
-// the browser doesn't need to do much, because a microdump is written into
-// Android log by the renderer process itself.  However, the browser may need to
-// crash itself on a renderer crash.  Since on Android renderers are not child
-// processes of the browser, it can't access the exit code. Instead, the browser
-// uses a dedicated pipe in order to receive the information about the renderer
-// crash status.
-class AwBrowserTerminator : public breakpad::CrashDumpObserver::Client {
- public:
-  AwBrowserTerminator();
-  ~AwBrowserTerminator() override;
-
-  // breakpad::CrashDumpObserver::Client implementation.
-  void OnChildStart(int child_process_id,
-                    content::FileDescriptorInfo* mappings) override;
-  void OnChildExit(int child_process_id,
-                   base::ProcessHandle pid,
-                   content::ProcessType process_type,
-                   base::TerminationStatus termination_status,
-                   base::android::ApplicationState app_state) override;
-
- private:
-  static void ProcessTerminationStatus(int child_process_id,
-                                       base::ProcessHandle pid,
-                                       std::unique_ptr<base::SyncSocket> pipe);
-
-  // This map should only be accessed with its lock aquired as it is accessed
-  // from the PROCESS_LAUNCHER, FILE, and UI threads.
-  base::Lock child_process_id_to_pipe_lock_;
-  std::map<int, std::unique_ptr<base::SyncSocket>> child_process_id_to_pipe_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwBrowserTerminator);
-};
-
-}  // namespace breakpad
-
-#endif  // COMPONENTS_CRASH_CONTENT_BROWSER_CRASH_DUMP_BROWSER_TERMINATOR_H_
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
deleted file mode 100644
index 45ab2d0..0000000
--- a/android_webview/browser/aw_content_browser_client.cc
+++ /dev/null
@@ -1,572 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_content_browser_client.h"
-
-#include <utility>
-
-#include "android_webview/browser/aw_browser_context.h"
-#include "android_webview/browser/aw_browser_main_parts.h"
-#include "android_webview/browser/aw_contents_client_bridge_base.h"
-#include "android_webview/browser/aw_contents_io_thread_client.h"
-#include "android_webview/browser/aw_cookie_access_policy.h"
-#include "android_webview/browser/aw_devtools_manager_delegate.h"
-#include "android_webview/browser/aw_locale_manager.h"
-#include "android_webview/browser/aw_printing_message_filter.h"
-#include "android_webview/browser/aw_quota_permission_context.h"
-#include "android_webview/browser/aw_web_preferences_populater.h"
-#include "android_webview/browser/jni_dependency_factory.h"
-#include "android_webview/browser/net/aw_url_request_context_getter.h"
-#include "android_webview/browser/net_disk_cache_remover.h"
-#include "android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.h"
-#include "android_webview/browser/tracing/aw_tracing_delegate.h"
-#include "android_webview/common/aw_descriptors.h"
-#include "android_webview/common/aw_switches.h"
-#include "android_webview/common/crash_reporter/aw_microdump_crash_reporter.h"
-#include "android_webview/common/render_view_messages.h"
-#include "android_webview/common/url_constants.h"
-#include "android_webview/grit/aw_resources.h"
-#include "base/android/locale_utils.h"
-#include "base/base_paths_android.h"
-#include "base/base_switches.h"
-#include "base/command_line.h"
-#include "base/files/scoped_file.h"
-#include "base/json/json_reader.h"
-#include "base/memory/ptr_util.h"
-#include "base/path_service.h"
-#include "components/autofill/content/browser/content_autofill_driver_factory.h"
-#include "components/cdm/browser/cdm_message_filter_android.h"
-#include "components/crash/content/browser/crash_dump_observer_android.h"
-#include "components/navigation_interception/intercept_navigation_delegate.h"
-#include "components/spellcheck/spellcheck_build_features.h"
-#include "content/public/browser/browser_message_filter.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/child_process_security_policy.h"
-#include "content/public/browser/client_certificate_delegate.h"
-#include "content/public/browser/navigation_handle.h"
-#include "content/public/browser/navigation_throttle.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/storage_partition.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/service_names.mojom.h"
-#include "content/public/common/url_constants.h"
-#include "content/public/common/web_preferences.h"
-#include "device/geolocation/access_token_store.h"
-#include "device/geolocation/geolocation_delegate.h"
-#include "net/android/network_library.h"
-#include "net/ssl/ssl_cert_request_info.h"
-#include "net/ssl/ssl_info.h"
-#include "services/service_manager/public/cpp/interface_registry.h"
-#include "storage/browser/quota/quota_settings.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/resource/resource_bundle_android.h"
-#include "ui/resources/grit/ui_resources.h"
-
-#if BUILDFLAG(ENABLE_SPELLCHECK)
-#include "components/spellcheck/browser/spellcheck_message_filter_platform.h"
-#include "components/spellcheck/common/spellcheck_switches.h"
-#endif
-
-using content::BrowserThread;
-using content::ResourceType;
-
-namespace android_webview {
-namespace {
-
-// TODO(sgurun) move this to its own file.
-// This class filters out incoming aw_contents related IPC messages for the
-// renderer process on the IPC thread.
-class AwContentsMessageFilter : public content::BrowserMessageFilter {
-public:
-  explicit AwContentsMessageFilter(int process_id);
-
-  // BrowserMessageFilter methods.
-  void OverrideThreadForMessage(const IPC::Message& message,
-                                BrowserThread::ID* thread) override;
-  bool OnMessageReceived(const IPC::Message& message) override;
-
-  void OnShouldOverrideUrlLoading(int routing_id,
-                                  const base::string16& url,
-                                  bool has_user_gesture,
-                                  bool is_redirect,
-                                  bool is_main_frame,
-                                  bool* ignore_navigation);
-  void OnSubFrameCreated(int parent_render_frame_id, int child_render_frame_id);
-
-private:
- ~AwContentsMessageFilter() override;
-
-  int process_id_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwContentsMessageFilter);
-};
-
-AwContentsMessageFilter::AwContentsMessageFilter(int process_id)
-    : BrowserMessageFilter(AndroidWebViewMsgStart),
-      process_id_(process_id) {
-}
-
-AwContentsMessageFilter::~AwContentsMessageFilter() {
-}
-
-void AwContentsMessageFilter::OverrideThreadForMessage(
-    const IPC::Message& message,
-    BrowserThread::ID* thread) {
-  if (message.type() == AwViewHostMsg_ShouldOverrideUrlLoading::ID) {
-    *thread = BrowserThread::UI;
-  }
-}
-
-bool AwContentsMessageFilter::OnMessageReceived(const IPC::Message& message) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(AwContentsMessageFilter, message)
-    IPC_MESSAGE_HANDLER(AwViewHostMsg_ShouldOverrideUrlLoading,
-                        OnShouldOverrideUrlLoading)
-    IPC_MESSAGE_HANDLER(AwViewHostMsg_SubFrameCreated, OnSubFrameCreated)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  return handled;
-}
-
-void AwContentsMessageFilter::OnShouldOverrideUrlLoading(
-    int render_frame_id,
-    const base::string16& url,
-    bool has_user_gesture,
-    bool is_redirect,
-    bool is_main_frame,
-    bool* ignore_navigation) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  *ignore_navigation = false;
-  AwContentsClientBridgeBase* client =
-      AwContentsClientBridgeBase::FromID(process_id_, render_frame_id);
-  if (client) {
-    *ignore_navigation = client->ShouldOverrideUrlLoading(
-        url, has_user_gesture, is_redirect, is_main_frame);
-    // If the shouldOverrideUrlLoading call caused a java exception we should
-    // always return immediately here!
-  } else {
-    LOG(WARNING) << "Failed to find the associated render view host for url: "
-                 << url;
-  }
-}
-
-void AwContentsMessageFilter::OnSubFrameCreated(int parent_render_frame_id,
-                                                int child_render_frame_id) {
-  AwContentsIoThreadClient::SubFrameCreated(
-      process_id_, parent_render_frame_id, child_render_frame_id);
-}
-
-AwLocaleManager* g_locale_manager = NULL;
-
-// A dummy binder for mojo interface autofill::mojom::PasswordManagerDriver.
-void DummyBindPasswordManagerDriver(
-    autofill::mojom::PasswordManagerDriverRequest request) {}
-
-}  // anonymous namespace
-
-// TODO(yirui): can use similar logic as in PrependToAcceptLanguagesIfNecessary
-// in chrome/browser/android/preferences/pref_service_bridge.cc
-// static
-std::string AwContentBrowserClient::GetAcceptLangsImpl() {
-  // Start with the current locale(s) in BCP47 format.
-  std::string locales_string = g_locale_manager->GetLocaleList();
-
-  // If accept languages do not contain en-US, add in en-US which will be
-  // used with a lower q-value.
-  if (locales_string.find("en-US") == std::string::npos)
-    locales_string += ",en-US";
-  return locales_string;
-}
-
-// static
-AwBrowserContext* AwContentBrowserClient::GetAwBrowserContext() {
-  return AwBrowserContext::GetDefault();
-}
-
-AwContentBrowserClient::AwContentBrowserClient(
-    JniDependencyFactory* native_factory)
-    : native_factory_(native_factory) {
-  g_locale_manager = native_factory->CreateAwLocaleManager();
-}
-
-AwContentBrowserClient::~AwContentBrowserClient() {
-  delete g_locale_manager;
-  g_locale_manager = NULL;
-}
-
-AwBrowserContext* AwContentBrowserClient::InitBrowserContext() {
-  base::FilePath user_data_dir;
-  if (!PathService::Get(base::DIR_ANDROID_APP_DATA, &user_data_dir)) {
-    NOTREACHED() << "Failed to get app data directory for Android WebView";
-  }
-  browser_context_.reset(
-      new AwBrowserContext(user_data_dir, native_factory_));
-  return browser_context_.get();
-}
-
-content::BrowserMainParts* AwContentBrowserClient::CreateBrowserMainParts(
-    const content::MainFunctionParams& parameters) {
-  return new AwBrowserMainParts(this);
-}
-
-content::WebContentsViewDelegate*
-AwContentBrowserClient::GetWebContentsViewDelegate(
-    content::WebContents* web_contents) {
-  return native_factory_->CreateViewDelegate(web_contents);
-}
-
-void AwContentBrowserClient::RenderProcessWillLaunch(
-    content::RenderProcessHost* host) {
-  // Grant content: scheme access to the whole renderer process, since we impose
-  // per-view access checks, and access is granted by default (see
-  // AwSettings.mAllowContentUrlAccess).
-  content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme(
-      host->GetID(), url::kContentScheme);
-
-  host->AddFilter(new AwContentsMessageFilter(host->GetID()));
-  host->AddFilter(new cdm::CdmMessageFilterAndroid());
-  host->AddFilter(new AwPrintingMessageFilter(host->GetID()));
-
-#if BUILDFLAG(ENABLE_SPELLCHECK)
-  host->AddFilter(new SpellCheckMessageFilterPlatform(host->GetID()));
-#endif
-}
-
-bool AwContentBrowserClient::IsHandledURL(const GURL& url) {
-  if (!url.is_valid()) {
-    // We handle error cases.
-    return true;
-  }
-
-  const std::string scheme = url.scheme();
-  DCHECK_EQ(scheme, base::ToLowerASCII(scheme));
-  // See CreateJobFactory in aw_url_request_context_getter.cc for the
-  // list of protocols that are handled.
-  // TODO(mnaganov): Make this automatic.
-  static const char* const kProtocolList[] = {
-    url::kDataScheme,
-    url::kBlobScheme,
-    url::kFileSystemScheme,
-    content::kChromeUIScheme,
-    content::kChromeDevToolsScheme,
-    url::kContentScheme,
-  };
-  if (scheme == url::kFileScheme) {
-    // Return false for the "special" file URLs, so they can be loaded
-    // even if access to file: scheme is not granted to the child process.
-    return !IsAndroidSpecialFileUrl(url);
-  }
-  for (size_t i = 0; i < arraysize(kProtocolList); ++i) {
-    if (scheme == kProtocolList[i])
-      return true;
-  }
-  return net::URLRequest::IsHandledProtocol(scheme);
-}
-
-void AwContentBrowserClient::AppendExtraCommandLineSwitches(
-    base::CommandLine* command_line,
-    int child_process_id) {
-  if (command_line->HasSwitch(switches::kSingleProcess)) {
-    NOTREACHED() << "Android WebView does not support multi-process yet";
-  } else {
-    // The only kind of a child process WebView can have is renderer.
-    DCHECK_EQ(switches::kRendererProcess,
-              command_line->GetSwitchValueASCII(switches::kProcessType));
-    // Pass crash reporter enabled state to renderer processes.
-    if (crash_reporter::IsCrashReporterEnabled()) {
-      command_line->AppendSwitch(::switches::kEnableCrashReporter);
-    }
-  }
-}
-
-std::string AwContentBrowserClient::GetApplicationLocale() {
-  return base::android::GetDefaultLocaleString();
-}
-
-std::string AwContentBrowserClient::GetAcceptLangs(
-    content::BrowserContext* context) {
-  return GetAcceptLangsImpl();
-}
-
-const gfx::ImageSkia* AwContentBrowserClient::GetDefaultFavicon() {
-  ResourceBundle& rb = ResourceBundle::GetSharedInstance();
-  // TODO(boliu): Bundle our own default favicon?
-  return rb.GetImageSkiaNamed(IDR_DEFAULT_FAVICON);
-}
-
-bool AwContentBrowserClient::AllowAppCache(const GURL& manifest_url,
-                           const GURL& first_party,
-                           content::ResourceContext* context) {
-  // WebView doesn't have a per-site policy for locally stored data,
-  // instead AppCache can be disabled for individual WebViews.
-  return true;
-}
-
-
-bool AwContentBrowserClient::AllowGetCookie(const GURL& url,
-                                            const GURL& first_party,
-                                            const net::CookieList& cookie_list,
-                                            content::ResourceContext* context,
-                                            int render_process_id,
-                                            int render_frame_id) {
-  return AwCookieAccessPolicy::GetInstance()->AllowGetCookie(url,
-                                                             first_party,
-                                                             cookie_list,
-                                                             context,
-                                                             render_process_id,
-                                                             render_frame_id);
-}
-
-bool AwContentBrowserClient::AllowSetCookie(const GURL& url,
-                                            const GURL& first_party,
-                                            const std::string& cookie_line,
-                                            content::ResourceContext* context,
-                                            int render_process_id,
-                                            int render_frame_id,
-                                            const net::CookieOptions& options) {
-  return AwCookieAccessPolicy::GetInstance()->AllowSetCookie(url,
-                                                             first_party,
-                                                             cookie_line,
-                                                             context,
-                                                             render_process_id,
-                                                             render_frame_id,
-                                                             options);
-}
-
-void AwContentBrowserClient::AllowWorkerFileSystem(
-    const GURL& url,
-    content::ResourceContext* context,
-    const std::vector<std::pair<int, int> >& render_frames,
-    base::Callback<void(bool)> callback) {
-  // Android WebView does not yet support web workers.
-  callback.Run(false);
-}
-
-bool AwContentBrowserClient::AllowWorkerIndexedDB(
-    const GURL& url,
-    const base::string16& name,
-    content::ResourceContext* context,
-    const std::vector<std::pair<int, int> >& render_frames) {
-  // Android WebView does not yet support web workers.
-  return false;
-}
-
-content::QuotaPermissionContext*
-AwContentBrowserClient::CreateQuotaPermissionContext() {
-  return new AwQuotaPermissionContext;
-}
-
-void AwContentBrowserClient::GetQuotaSettings(
-    content::BrowserContext* context,
-    content::StoragePartition* partition,
-    const storage::OptionalQuotaSettingsCallback& callback) {
-  content::BrowserThread::PostTaskAndReplyWithResult(
-      content::BrowserThread::FILE, FROM_HERE,
-      base::Bind(&storage::CalculateNominalDynamicSettings,
-                 partition->GetPath(), context->IsOffTheRecord()),
-      callback);
-}
-
-void AwContentBrowserClient::AllowCertificateError(
-    content::WebContents* web_contents,
-    int cert_error,
-    const net::SSLInfo& ssl_info,
-    const GURL& request_url,
-    ResourceType resource_type,
-    bool overridable,
-    bool strict_enforcement,
-    bool expired_previous_decision,
-    const base::Callback<void(content::CertificateRequestResultType)>&
-        callback) {
-  AwContentsClientBridgeBase* client =
-      AwContentsClientBridgeBase::FromWebContents(web_contents);
-  bool cancel_request = true;
-  if (client)
-    client->AllowCertificateError(cert_error,
-                                  ssl_info.cert.get(),
-                                  request_url,
-                                  callback,
-                                  &cancel_request);
-  if (cancel_request)
-    callback.Run(content::CERTIFICATE_REQUEST_RESULT_TYPE_DENY);
-}
-
-void AwContentBrowserClient::SelectClientCertificate(
-    content::WebContents* web_contents,
-    net::SSLCertRequestInfo* cert_request_info,
-    std::unique_ptr<content::ClientCertificateDelegate> delegate) {
-  AwContentsClientBridgeBase* client =
-      AwContentsClientBridgeBase::FromWebContents(web_contents);
-  if (client)
-    client->SelectClientCertificate(cert_request_info, std::move(delegate));
-}
-
-bool AwContentBrowserClient::CanCreateWindow(
-    int opener_render_process_id,
-    int opener_render_frame_id,
-    const GURL& opener_url,
-    const GURL& opener_top_level_frame_url,
-    const GURL& source_origin,
-    content::mojom::WindowContainerType container_type,
-    const GURL& target_url,
-    const content::Referrer& referrer,
-    const std::string& frame_name,
-    WindowOpenDisposition disposition,
-    const blink::mojom::WindowFeatures& features,
-    bool user_gesture,
-    bool opener_suppressed,
-    content::ResourceContext* context,
-    bool* no_javascript_access) {
-  // We unconditionally allow popup windows at this stage and will give
-  // the embedder the opporunity to handle displaying of the popup in
-  // WebContentsDelegate::AddContents (via the
-  // AwContentsClient.onCreateWindow callback).
-  // Note that if the embedder has blocked support for creating popup
-  // windows through AwSettings, then we won't get to this point as
-  // the popup creation will have been blocked at the WebKit level.
-  if (no_javascript_access) {
-    *no_javascript_access = false;
-  }
-  return true;
-}
-
-void AwContentBrowserClient::ResourceDispatcherHostCreated() {
-  AwResourceDispatcherHostDelegate::ResourceDispatcherHostCreated();
-}
-
-net::NetLog* AwContentBrowserClient::GetNetLog() {
-  return browser_context_->GetAwURLRequestContext()->GetNetLog();
-}
-
-void AwContentBrowserClient::ClearCache(content::RenderFrameHost* rfh) {
-  RemoveHttpDiskCache(rfh->GetProcess());
-}
-
-void AwContentBrowserClient::ClearCookies(content::RenderFrameHost* rfh) {
-  // TODO(boliu): Implement.
-  NOTIMPLEMENTED();
-}
-
-base::FilePath AwContentBrowserClient::GetDefaultDownloadDirectory() {
-  // Android WebView does not currently use the Chromium downloads system.
-  // Download requests are cancelled immedately when recognized; see
-  // AwResourceDispatcherHost::CreateResourceHandlerForDownload. However the
-  // download system still tries to start up and calls this before recognizing
-  // the request has been cancelled.
-  return base::FilePath();
-}
-
-std::string AwContentBrowserClient::GetDefaultDownloadName() {
-  NOTREACHED() << "Android WebView does not use chromium downloads";
-  return std::string();
-}
-
-void AwContentBrowserClient::DidCreatePpapiPlugin(
-    content::BrowserPpapiHost* browser_host) {
-  NOTREACHED() << "Android WebView does not support plugins";
-}
-
-bool AwContentBrowserClient::AllowPepperSocketAPI(
-    content::BrowserContext* browser_context,
-    const GURL& url,
-    bool private_api,
-    const content::SocketPermissionRequest* params) {
-  NOTREACHED() << "Android WebView does not support plugins";
-  return false;
-}
-
-bool AwContentBrowserClient::IsPepperVpnProviderAPIAllowed(
-    content::BrowserContext* browser_context,
-    const GURL& url) {
-  NOTREACHED() << "Android WebView does not support plugins";
-  return false;
-}
-
-content::TracingDelegate* AwContentBrowserClient::GetTracingDelegate() {
-  return new AwTracingDelegate();
-}
-
-void AwContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
-      const base::CommandLine& command_line,
-      int child_process_id,
-      content::FileDescriptorInfo* mappings) {
-  base::MemoryMappedFile::Region region;
-  int fd = ui::GetMainAndroidPackFd(&region);
-  mappings->ShareWithRegion(kAndroidWebViewMainPakDescriptor, fd, region);
-
-  fd = ui::GetCommonResourcesPackFd(&region);
-  mappings->ShareWithRegion(kAndroidWebView100PercentPakDescriptor, fd, region);
-
-  fd = ui::GetLocalePackFd(&region);
-  mappings->ShareWithRegion(kAndroidWebViewLocalePakDescriptor, fd, region);
-
-  breakpad::CrashDumpObserver::GetInstance()->BrowserChildProcessStarted(
-      child_process_id, mappings);
-}
-
-void AwContentBrowserClient::OverrideWebkitPrefs(
-    content::RenderViewHost* rvh,
-    content::WebPreferences* web_prefs) {
-  if (!preferences_populater_.get()) {
-    preferences_populater_ =
-        base::WrapUnique(native_factory_->CreateWebPreferencesPopulater());
-  }
-  preferences_populater_->PopulateFor(
-      content::WebContents::FromRenderViewHost(rvh), web_prefs);
-}
-
-std::vector<std::unique_ptr<content::NavigationThrottle>>
-AwContentBrowserClient::CreateThrottlesForNavigation(
-    content::NavigationHandle* navigation_handle) {
-  std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
-  // We allow intercepting only navigations within main frames. This
-  // is used to post onPageStarted. We handle shouldOverrideUrlLoading
-  // via a sync IPC.
-  if (navigation_handle->IsInMainFrame()) {
-    throttles.push_back(
-        navigation_interception::InterceptNavigationDelegate::CreateThrottleFor(
-            navigation_handle));
-  }
-  return throttles;
-}
-
-content::DevToolsManagerDelegate*
-AwContentBrowserClient::GetDevToolsManagerDelegate() {
-  return new AwDevToolsManagerDelegate();
-}
-
-std::unique_ptr<base::Value> AwContentBrowserClient::GetServiceManifestOverlay(
-    base::StringPiece name) {
-  int id = -1;
-  if (name == content::mojom::kBrowserServiceName)
-    id = IDR_AW_BROWSER_MANIFEST_OVERLAY;
-  else if (name == content::mojom::kRendererServiceName)
-    id = IDR_AW_RENDERER_MANIFEST_OVERLAY;
-  if (id == -1)
-    return nullptr;
-
-  base::StringPiece manifest_contents =
-      ui::ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(
-          id, ui::ScaleFactor::SCALE_FACTOR_NONE);
-  return base::JSONReader::Read(manifest_contents);
-}
-
-void AwContentBrowserClient::RegisterRenderFrameMojoInterfaces(
-    service_manager::InterfaceRegistry* registry,
-    content::RenderFrameHost* render_frame_host) {
-  registry->AddInterface(
-      base::Bind(&autofill::ContentAutofillDriverFactory::BindAutofillDriver,
-                 render_frame_host));
-
-  // Although WebView does not support password manager feature, renderer code
-  // could still request this interface, so we register a dummy binder which
-  // just drops the incoming request, to avoid the 'Failed to locate a binder
-  // for interface' error log..
-  registry->AddInterface(base::Bind(&DummyBindPasswordManagerDriver));
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h
deleted file mode 100644
index 8dcff05..0000000
--- a/android_webview/browser/aw_content_browser_client.h
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
-#define ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
-
-#include <stddef.h>
-
-#include <memory>
-
-#include "android_webview/browser/aw_web_preferences_populater.h"
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "content/public/browser/content_browser_client.h"
-
-namespace android_webview {
-
-class AwBrowserContext;
-class JniDependencyFactory;
-
-class AwContentBrowserClient : public content::ContentBrowserClient {
- public:
-  // This is what AwContentBrowserClient::GetAcceptLangs uses.
-  static std::string GetAcceptLangsImpl();
-
-  // Deprecated: use AwBrowserContext::GetDefault() instead.
-  static AwBrowserContext* GetAwBrowserContext();
-
-  AwContentBrowserClient(JniDependencyFactory* native_factory);
-  ~AwContentBrowserClient() override;
-
-  // Allows AwBrowserMainParts to initialize a BrowserContext at the right
-  // moment during startup. AwContentBrowserClient owns the result.
-  AwBrowserContext* InitBrowserContext();
-
-  content::BrowserMainParts* CreateBrowserMainParts(
-      const content::MainFunctionParams& parameters) override;
-  content::WebContentsViewDelegate* GetWebContentsViewDelegate(
-      content::WebContents* web_contents) override;
-  void RenderProcessWillLaunch(content::RenderProcessHost* host) override;
-  bool IsHandledURL(const GURL& url) override;
-  void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
-                                      int child_process_id) override;
-  std::string GetApplicationLocale() override;
-  std::string GetAcceptLangs(content::BrowserContext* context) override;
-  const gfx::ImageSkia* GetDefaultFavicon() override;
-  bool AllowAppCache(const GURL& manifest_url,
-                     const GURL& first_party,
-                     content::ResourceContext* context) override;
-  bool AllowGetCookie(const GURL& url,
-                      const GURL& first_party,
-                      const net::CookieList& cookie_list,
-                      content::ResourceContext* context,
-                      int render_process_id,
-                      int render_frame_id) override;
-  bool AllowSetCookie(const GURL& url,
-                      const GURL& first_party,
-                      const std::string& cookie_line,
-                      content::ResourceContext* context,
-                      int render_process_id,
-                      int render_frame_id,
-                      const net::CookieOptions& options) override;
-  void AllowWorkerFileSystem(
-      const GURL& url,
-      content::ResourceContext* context,
-      const std::vector<std::pair<int, int>>& render_frames,
-      base::Callback<void(bool)> callback) override;
-  bool AllowWorkerIndexedDB(
-      const GURL& url,
-      const base::string16& name,
-      content::ResourceContext* context,
-      const std::vector<std::pair<int, int>>& render_frames) override;
-  content::QuotaPermissionContext* CreateQuotaPermissionContext() override;
-  void GetQuotaSettings(
-      content::BrowserContext* context,
-      content::StoragePartition* partition,
-      const storage::OptionalQuotaSettingsCallback& callback) override;
-  void AllowCertificateError(
-      content::WebContents* web_contents,
-      int cert_error,
-      const net::SSLInfo& ssl_info,
-      const GURL& request_url,
-      content::ResourceType resource_type,
-      bool overridable,
-      bool strict_enforcement,
-      bool expired_previous_decision,
-      const base::Callback<void(content::CertificateRequestResultType)>&
-          callback) override;
-  void SelectClientCertificate(
-      content::WebContents* web_contents,
-      net::SSLCertRequestInfo* cert_request_info,
-      std::unique_ptr<content::ClientCertificateDelegate> delegate) override;
-  bool CanCreateWindow(int opener_render_process_id,
-                       int opener_render_frame_id,
-                       const GURL& opener_url,
-                       const GURL& opener_top_level_frame_url,
-                       const GURL& source_origin,
-                       content::mojom::WindowContainerType container_type,
-                       const GURL& target_url,
-                       const content::Referrer& referrer,
-                       const std::string& frame_name,
-                       WindowOpenDisposition disposition,
-                       const blink::mojom::WindowFeatures& features,
-                       bool user_gesture,
-                       bool opener_suppressed,
-                       content::ResourceContext* context,
-                       bool* no_javascript_access) override;
-  void ResourceDispatcherHostCreated() override;
-  net::NetLog* GetNetLog() override;
-  void ClearCache(content::RenderFrameHost* rfh) override;
-  void ClearCookies(content::RenderFrameHost* rfh) override;
-  base::FilePath GetDefaultDownloadDirectory() override;
-  std::string GetDefaultDownloadName() override;
-  void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override;
-  bool AllowPepperSocketAPI(
-      content::BrowserContext* browser_context,
-      const GURL& url,
-      bool private_api,
-      const content::SocketPermissionRequest* params) override;
-  bool IsPepperVpnProviderAPIAllowed(content::BrowserContext* browser_context,
-                                     const GURL& url) override;
-  content::TracingDelegate* GetTracingDelegate() override;
-  void GetAdditionalMappedFilesForChildProcess(
-      const base::CommandLine& command_line,
-      int child_process_id,
-      content::FileDescriptorInfo* mappings) override;
-  void OverrideWebkitPrefs(content::RenderViewHost* rvh,
-                           content::WebPreferences* web_prefs) override;
-  std::vector<std::unique_ptr<content::NavigationThrottle>>
-  CreateThrottlesForNavigation(
-      content::NavigationHandle* navigation_handle) override;
-  content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
-  std::unique_ptr<base::Value> GetServiceManifestOverlay(
-      base::StringPiece name) override;
-  void RegisterRenderFrameMojoInterfaces(
-      service_manager::InterfaceRegistry* registry,
-      content::RenderFrameHost* render_frame_host) override;
-
- private:
-  // Android WebView currently has a single global (non-off-the-record) browser
-  // context.
-  std::unique_ptr<AwBrowserContext> browser_context_;
-  std::unique_ptr<AwWebPreferencesPopulater> preferences_populater_;
-
-  JniDependencyFactory* native_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwContentBrowserClient);
-};
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
diff --git a/android_webview/browser/aw_contents_client_bridge_base.cc b/android_webview/browser/aw_contents_client_bridge_base.cc
deleted file mode 100644
index 3e96bed..0000000
--- a/android_webview/browser/aw_contents_client_bridge_base.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_contents_client_bridge_base.h"
-
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-
-using content::BrowserThread;
-using content::WebContents;
-
-namespace android_webview {
-
-namespace {
-
-const void* const kAwContentsClientBridgeBase = &kAwContentsClientBridgeBase;
-
-// This class is invented so that the UserData registry that we inject the
-// AwContentsClientBridgeBase object does not own and destroy it.
-class UserData : public base::SupportsUserData::Data {
- public:
-  static AwContentsClientBridgeBase* GetContents(
-      content::WebContents* web_contents) {
-    if (!web_contents)
-      return NULL;
-    UserData* data = static_cast<UserData*>(
-        web_contents->GetUserData(kAwContentsClientBridgeBase));
-    return data ? data->contents_ : NULL;
-  }
-
-  explicit UserData(AwContentsClientBridgeBase* ptr) : contents_(ptr) {}
- private:
-  AwContentsClientBridgeBase* contents_;
-
-  DISALLOW_COPY_AND_ASSIGN(UserData);
-};
-
-}  // namespace
-
-// static
-void AwContentsClientBridgeBase::Associate(
-    WebContents* web_contents,
-    AwContentsClientBridgeBase* handler) {
-  web_contents->SetUserData(kAwContentsClientBridgeBase,
-                            new UserData(handler));
-}
-
-// static
-AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromWebContents(
-    WebContents* web_contents) {
-  return UserData::GetContents(web_contents);
-}
-
-// static
-AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromWebContentsGetter(
-    const content::ResourceRequestInfo::WebContentsGetter&
-        web_contents_getter) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  WebContents* web_contents = web_contents_getter.Run();
-  return UserData::GetContents(web_contents);
-}
-
-// static
-AwContentsClientBridgeBase* AwContentsClientBridgeBase::FromID(
-    int render_process_id,
-    int render_frame_id) {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  content::RenderFrameHost* rfh =
-      content::RenderFrameHost::FromID(render_process_id, render_frame_id);
-  content::WebContents* web_contents =
-      content::WebContents::FromRenderFrameHost(rfh);
-  return UserData::GetContents(web_contents);
-}
-
-AwContentsClientBridgeBase::~AwContentsClientBridgeBase() {
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_contents_client_bridge_base.h b/android_webview/browser/aw_contents_client_bridge_base.h
deleted file mode 100644
index 6eeef82..0000000
--- a/android_webview/browser/aw_contents_client_bridge_base.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
-
-#include <memory>
-
-#include "android_webview/browser/net/aw_web_resource_request.h"
-#include "base/supports_user_data.h"
-#include "content/public/browser/certificate_request_result_type.h"
-#include "content/public/browser/javascript_dialog_manager.h"
-#include "content/public/browser/resource_request_info.h"
-#include "net/http/http_response_headers.h"
-
-class GURL;
-
-namespace content {
-class ClientCertificateDelegate;
-class WebContents;
-}
-
-namespace net {
-class SSLCertRequestInfo;
-class X509Certificate;
-}
-
-namespace android_webview {
-
-// browser/ layer interface for AwContensClientBridge, as DEPS prevents this
-// layer from depending on native/ where the implementation lives. The
-// implementor of the base class plumbs the request to the Java side and
-// eventually to the webviewclient. This layering hides the details of
-// native/ from browser/ layer.
-class AwContentsClientBridgeBase {
- public:
-  // Adds the handler to the UserData registry.
-  static void Associate(content::WebContents* web_contents,
-                        AwContentsClientBridgeBase* handler);
-  static AwContentsClientBridgeBase* FromWebContents(
-      content::WebContents* web_contents);
-  static AwContentsClientBridgeBase* FromWebContentsGetter(
-      const content::ResourceRequestInfo::WebContentsGetter&
-          web_contents_getter);
-  static AwContentsClientBridgeBase* FromID(int render_process_id,
-                                            int render_frame_id);
-
-  virtual ~AwContentsClientBridgeBase();
-
-  virtual void AllowCertificateError(
-      int cert_error,
-      net::X509Certificate* cert,
-      const GURL& request_url,
-      const base::Callback<void(content::CertificateRequestResultType)>&
-          callback,
-      bool* cancel_request) = 0;
-  virtual void SelectClientCertificate(
-      net::SSLCertRequestInfo* cert_request_info,
-      std::unique_ptr<content::ClientCertificateDelegate> delegate) = 0;
-
-  virtual void RunJavaScriptDialog(
-      content::JavaScriptDialogType dialog_type,
-      const GURL& origin_url,
-      const base::string16& message_text,
-      const base::string16& default_prompt_text,
-      const content::JavaScriptDialogManager::DialogClosedCallback&
-          callback) = 0;
-
-  virtual void RunBeforeUnloadDialog(
-      const GURL& origin_url,
-      const content::JavaScriptDialogManager::DialogClosedCallback& callback)
-      = 0;
-
-  virtual bool ShouldOverrideUrlLoading(const base::string16& url,
-                                        bool has_user_gesture,
-                                        bool is_redirect,
-                                        bool is_main_frame) = 0;
-
-  virtual void NewDownload(const GURL& url,
-                           const std::string& user_agent,
-                           const std::string& content_disposition,
-                           const std::string& mime_type,
-                           int64_t content_length) = 0;
-
-  // Called when a new login request is detected. See the documentation for
-  // WebViewClient.onReceivedLoginRequest for arguments. Note that |account|
-  // may be empty.
-  virtual void NewLoginRequest(const std::string& realm,
-                               const std::string& account,
-                               const std::string& args) = 0;
-
-  // Called when a resource loading error has occured (e.g. an I/O error,
-  // host name lookup failure etc.)
-  virtual void OnReceivedError(const AwWebResourceRequest& request,
-                               int error_code) = 0;
-
-  // Called when a response from the server is received with status code >= 400.
-  virtual void OnReceivedHttpError(
-      const AwWebResourceRequest& request,
-      const scoped_refptr<const net::HttpResponseHeaders>&
-          response_headers) = 0;
-};
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_
diff --git a/android_webview/browser/aw_contents_io_thread_client.h b/android_webview/browser/aw_contents_io_thread_client.h
deleted file mode 100644
index 6bb0e32..0000000
--- a/android_webview/browser/aw_contents_io_thread_client.h
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_IO_THREAD_CLIENT_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_IO_THREAD_CLIENT_H_
-
-#include <stdint.h>
-
-#include <memory>
-#include <string>
-
-#include "base/callback_forward.h"
-
-namespace net {
-class URLRequest;
-}
-
-namespace android_webview {
-
-class AwWebResourceResponse;
-
-// This class provides a means of calling Java methods on an instance that has
-// a 1:1 relationship with a WebContents instance directly from the IO thread.
-//
-// Specifically this is used to associate URLRequests with the WebContents that
-// the URLRequest is made for.
-//
-// The native class is intended to be a short-lived handle that pins the
-// Java-side instance. It is preferable to use the static getter methods to
-// obtain a new instance of the class rather than holding on to one for
-// prolonged periods of time (see note for more details).
-//
-// Note: The native AwContentsIoThreadClient instance has a Global ref to
-// the Java object. By keeping the native AwContentsIoThreadClient
-// instance alive you're also prolonging the lifetime of the Java instance, so
-// don't keep a AwContentsIoThreadClient if you don't need to.
-class AwContentsIoThreadClient {
- public:
-  // Corresponds to WebSettings cache mode constants.
-  enum CacheMode {
-    LOAD_DEFAULT = -1,
-    LOAD_NORMAL = 0,
-    LOAD_CACHE_ELSE_NETWORK = 1,
-    LOAD_NO_CACHE = 2,
-    LOAD_CACHE_ONLY = 3,
-  };
-
-  virtual ~AwContentsIoThreadClient() {}
-
-  // Returns whether this is a new pop up that is still waiting for association
-  // with the java counter part.
-  virtual bool PendingAssociation() const = 0;
-
-  // Retrieve CacheMode setting value of this AwContents.
-  // This method is called on the IO thread only.
-  virtual CacheMode GetCacheMode() const = 0;
-
-  // This will attempt to fetch the AwContentsIoThreadClient for the given
-  // |render_process_id|, |render_frame_id| pair.
-  // This method can be called from any thread.
-  // An empty scoped_ptr is a valid return value.
-  static std::unique_ptr<AwContentsIoThreadClient> FromID(int render_process_id,
-                                                          int render_frame_id);
-
-  // Returns the global thread client for service worker related callbacks.
-  // An empty scoped_ptr is a valid return value.
-  static std::unique_ptr<AwContentsIoThreadClient>
-  GetServiceWorkerIoThreadClient();
-
-  // Called on the IO thread when a subframe is created.
-  static void SubFrameCreated(int render_process_id,
-                              int parent_render_frame_id,
-                              int child_render_frame_id);
-
-  // This method is called on the IO thread only.
-  typedef base::Callback<void(std::unique_ptr<AwWebResourceResponse>)>
-      ShouldInterceptRequestResultCallback;
-  virtual void ShouldInterceptRequestAsync(
-      const net::URLRequest* request,
-      const ShouldInterceptRequestResultCallback callback) = 0;
-
-  // Retrieve the AllowContentAccess setting value of this AwContents.
-  // This method is called on the IO thread only.
-  virtual bool ShouldBlockContentUrls() const = 0;
-
-  // Retrieve the AllowFileAccess setting value of this AwContents.
-  // This method is called on the IO thread only.
-  virtual bool ShouldBlockFileUrls() const = 0;
-
-  // Retrieve the BlockNetworkLoads setting value of this AwContents.
-  // This method is called on the IO thread only.
-  virtual bool ShouldBlockNetworkLoads() const = 0;
-
-  // Retrieve the AcceptThirdPartyCookies setting value of this AwContents.
-  virtual bool ShouldAcceptThirdPartyCookies() const = 0;
-
-  // Retrieve the SafeBrowsingEnabled setting value of this AwContents.
-  virtual bool GetSafeBrowsingEnabled() const = 0;
-};
-
-} // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_IO_THREAD_CLIENT_H_
diff --git a/android_webview/browser/aw_cookie_access_policy.cc b/android_webview/browser/aw_cookie_access_policy.cc
deleted file mode 100644
index e0a78cc..0000000
--- a/android_webview/browser/aw_cookie_access_policy.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_cookie_access_policy.h"
-
-#include <memory>
-
-#include "android_webview/browser/aw_contents_io_thread_client.h"
-#include "base/logging.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/resource_request_info.h"
-#include "content/public/browser/websocket_handshake_request_info.h"
-#include "net/base/net_errors.h"
-
-using base::AutoLock;
-using content::BrowserThread;
-using content::ResourceRequestInfo;
-using content::WebSocketHandshakeRequestInfo;
-using net::StaticCookiePolicy;
-
-namespace android_webview {
-
-namespace {
-base::LazyInstance<AwCookieAccessPolicy>::Leaky g_lazy_instance;
-}  // namespace
-
-AwCookieAccessPolicy::~AwCookieAccessPolicy() {
-}
-
-AwCookieAccessPolicy::AwCookieAccessPolicy()
-    : accept_cookies_(true) {
-}
-
-AwCookieAccessPolicy* AwCookieAccessPolicy::GetInstance() {
-  return g_lazy_instance.Pointer();
-}
-
-bool AwCookieAccessPolicy::GetShouldAcceptCookies() {
-  AutoLock lock(lock_);
-  return accept_cookies_;
-}
-
-void AwCookieAccessPolicy::SetShouldAcceptCookies(bool allow) {
-  AutoLock lock(lock_);
-  accept_cookies_ = allow;
-}
-
-bool AwCookieAccessPolicy::GetShouldAcceptThirdPartyCookies(
-    int render_process_id,
-    int render_frame_id) {
-  std::unique_ptr<AwContentsIoThreadClient> io_thread_client =
-      AwContentsIoThreadClient::FromID(render_process_id, render_frame_id);
-  if (!io_thread_client) {
-    return false;
-  }
-  return io_thread_client->ShouldAcceptThirdPartyCookies();
-}
-
-bool AwCookieAccessPolicy::GetShouldAcceptThirdPartyCookies(
-    const net::URLRequest& request) {
-  int child_id = 0;
-  int frame_id = 0;
-  const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(&request);
-  if (info) {
-    child_id = info->GetChildID();
-    frame_id = info->GetRenderFrameID();
-  } else {
-    const WebSocketHandshakeRequestInfo* websocket_info =
-        WebSocketHandshakeRequestInfo::ForRequest(&request);
-    if (!websocket_info)
-      return false;
-    child_id = websocket_info->GetChildId();
-    frame_id = websocket_info->GetRenderFrameId();
-  }
-  return GetShouldAcceptThirdPartyCookies(child_id, frame_id);
-}
-
-bool AwCookieAccessPolicy::OnCanGetCookies(const net::URLRequest& request,
-                                           const net::CookieList& cookie_list) {
-  bool global = GetShouldAcceptCookies();
-  bool thirdParty = GetShouldAcceptThirdPartyCookies(request);
-  return AwStaticCookiePolicy(global, thirdParty)
-      .AllowGet(request.url(), request.first_party_for_cookies());
-}
-
-bool AwCookieAccessPolicy::OnCanSetCookie(const net::URLRequest& request,
-                                          const std::string& cookie_line,
-                                          net::CookieOptions* options) {
-  bool global = GetShouldAcceptCookies();
-  bool thirdParty = GetShouldAcceptThirdPartyCookies(request);
-  return AwStaticCookiePolicy(global, thirdParty)
-      .AllowSet(request.url(), request.first_party_for_cookies());
-}
-
-bool AwCookieAccessPolicy::AllowGetCookie(const GURL& url,
-                                          const GURL& first_party,
-                                          const net::CookieList& cookie_list,
-                                          content::ResourceContext* context,
-                                          int render_process_id,
-                                          int render_frame_id) {
-  bool global = GetShouldAcceptCookies();
-  bool thirdParty =
-      GetShouldAcceptThirdPartyCookies(render_process_id, render_frame_id);
-  return AwStaticCookiePolicy(global, thirdParty).AllowGet(url, first_party);
-}
-
-bool AwCookieAccessPolicy::AllowSetCookie(const GURL& url,
-                                          const GURL& first_party,
-                                          const std::string& cookie_line,
-                                          content::ResourceContext* context,
-                                          int render_process_id,
-                                          int render_frame_id,
-                                          const net::CookieOptions& options) {
-  bool global = GetShouldAcceptCookies();
-  bool thirdParty =
-      GetShouldAcceptThirdPartyCookies(render_process_id, render_frame_id);
-  return AwStaticCookiePolicy(global, thirdParty).AllowSet(url, first_party);
-}
-
-AwStaticCookiePolicy::AwStaticCookiePolicy(bool accept_cookies,
-                                           bool accept_third_party_cookies)
-    : accept_cookies_(accept_cookies),
-      accept_third_party_cookies_(accept_third_party_cookies) {
-}
-
-StaticCookiePolicy::Type AwStaticCookiePolicy::GetPolicy(const GURL& url)
-    const {
-  // File URLs are a special case. We want file URLs to be able to set cookies
-  // but (for the purpose of cookies) Chrome considers different file URLs to
-  // come from different origins so we use the 'allow all' cookie policy for
-  // file URLs.
-  bool isFile = url.SchemeIsFile();
-  if (!accept_cookies()) {
-    return StaticCookiePolicy::BLOCK_ALL_COOKIES;
-  }
-  if (accept_third_party_cookies() || isFile) {
-    return StaticCookiePolicy::ALLOW_ALL_COOKIES;
-  }
-  return StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES;
-}
-
-bool AwStaticCookiePolicy::AllowSet(const GURL& url,
-                                    const GURL& first_party) const {
-  return StaticCookiePolicy(GetPolicy(url))
-             .CanAccessCookies(url, first_party) == net::OK;
-}
-
-bool AwStaticCookiePolicy::AllowGet(const GURL& url,
-                                    const GURL& first_party) const {
-  return StaticCookiePolicy(GetPolicy(url))
-             .CanAccessCookies(url, first_party) == net::OK;
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_cookie_access_policy.h b/android_webview/browser/aw_cookie_access_policy.h
deleted file mode 100644
index 6590d41..0000000
--- a/android_webview/browser/aw_cookie_access_policy.h
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_
-
-#include "base/lazy_instance.h"
-#include "base/macros.h"
-#include "base/synchronization/lock.h"
-#include "net/base/static_cookie_policy.h"
-#include "net/cookies/canonical_cookie.h"
-#include "net/url_request/url_request.h"
-
-namespace content {
-class ResourceContext;
-}
-
-namespace net {
-class CookieOptions;
-}
-
-class GURL;
-
-namespace android_webview {
-
-// Manages the cookie access (both setting and getting) policy for WebView.
-// Currently we don't distinguish between sources (i.e. network vs. JavaScript)
-// or between reading vs. writing cookies.
-class AwCookieAccessPolicy {
- public:
-  static AwCookieAccessPolicy* GetInstance();
-
-  // Can we read/write any cookies?
-  bool GetShouldAcceptCookies();
-  void SetShouldAcceptCookies(bool allow);
-
-  // Can we read/write third party cookies?
-  bool GetShouldAcceptThirdPartyCookies(int render_process_id,
-                                        int render_frame_id);
-  bool GetShouldAcceptThirdPartyCookies(const net::URLRequest& request);
-
-  // These are the functions called when operating over cookies from the
-  // network. See NetworkDelegate for further descriptions.
-  bool OnCanGetCookies(const net::URLRequest& request,
-                       const net::CookieList& cookie_list);
-  bool OnCanSetCookie(const net::URLRequest& request,
-                      const std::string& cookie_line,
-                      net::CookieOptions* options);
-
-  // These are the functions called when operating over cookies from the
-  // renderer. See ContentBrowserClient for further descriptions.
-  bool AllowGetCookie(const GURL& url,
-                      const GURL& first_party,
-                      const net::CookieList& cookie_list,
-                      content::ResourceContext* context,
-                      int render_process_id,
-                      int render_frame_id);
-  bool AllowSetCookie(const GURL& url,
-                      const GURL& first_party,
-                      const std::string& cookie_line,
-                      content::ResourceContext* context,
-                      int render_process_id,
-                      int render_frame_id,
-                      const net::CookieOptions& options);
-
- private:
-  friend struct base::DefaultLazyInstanceTraits<AwCookieAccessPolicy>;
-
-  AwCookieAccessPolicy();
-  ~AwCookieAccessPolicy();
-  bool accept_cookies_;
-  base::Lock lock_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwCookieAccessPolicy);
-};
-
-class AwStaticCookiePolicy {
- public:
-  AwStaticCookiePolicy(bool allow_global_access,
-                       bool allow_third_party_access);
-
-  bool accept_cookies() const {
-    return accept_cookies_;
-  }
-
-  bool accept_third_party_cookies() const {
-    return accept_third_party_cookies_;
-  }
-
-  bool AllowGet(const GURL& url, const GURL& first_party) const;
-  bool AllowSet(const GURL& url, const GURL& first_party) const;
-
- private:
-  const bool accept_cookies_;
-  const bool accept_third_party_cookies_;
-
-  // We have two bits of state but only three different cases:
-  // If !ShouldAcceptCookies
-  //    then reject all cookies.
-  // If ShouldAcceptCookies and !ShouldAcceptThirdPartyCookies
-  //    then reject third party.
-  // If ShouldAcceptCookies and ShouldAcceptThirdPartyCookies
-  //    then allow all cookies.
-  net::StaticCookiePolicy::Type GetPolicy(const GURL& url) const;
-
-  DISALLOW_COPY_AND_ASSIGN(AwStaticCookiePolicy);
-};
-
-}  // namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_BROWSER_AW_COOKIE_ACCESS_POLICY_H_
diff --git a/android_webview/browser/aw_devtools_manager_delegate.cc b/android_webview/browser/aw_devtools_manager_delegate.cc
deleted file mode 100644
index b57931c..0000000
--- a/android_webview/browser/aw_devtools_manager_delegate.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_devtools_manager_delegate.h"
-
-#include "android_webview/browser/browser_view_renderer.h"
-#include "android_webview/common/aw_content_client.h"
-#include "base/json/json_writer.h"
-#include "base/memory/ptr_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "content/public/browser/devtools_agent_host.h"
-#include "content/public/browser/web_contents.h"
-
-using content::DevToolsAgentHost;
-using content::RenderFrameHost;
-
-namespace android_webview {
-
-AwDevToolsManagerDelegate::AwDevToolsManagerDelegate() {
-}
-
-AwDevToolsManagerDelegate::~AwDevToolsManagerDelegate() {
-}
-
-std::string AwDevToolsManagerDelegate::GetTargetDescription(
-    RenderFrameHost* host) {
-  content::WebContents* web_contents =
-      content::WebContents::FromRenderFrameHost(host);
-  android_webview::BrowserViewRenderer* bvr =
-      android_webview::BrowserViewRenderer::FromWebContents(web_contents);
-  if (!bvr)
-    return "";
-  base::DictionaryValue description;
-  description.SetBoolean("attached", bvr->attached_to_window());
-  description.SetBoolean("visible", bvr->IsVisible());
-  gfx::Rect screen_rect = bvr->GetScreenRect();
-  description.SetInteger("screenX", screen_rect.x());
-  description.SetInteger("screenY", screen_rect.y());
-  description.SetBoolean("empty", screen_rect.size().IsEmpty());
-  if (!screen_rect.size().IsEmpty()) {
-    description.SetInteger("width", screen_rect.width());
-    description.SetInteger("height", screen_rect.height());
-  }
-  std::string json;
-  base::JSONWriter::Write(description, &json);
-  return json;
-}
-
-std::string AwDevToolsManagerDelegate::GetDiscoveryPageHTML() {
-  const char html[] =
-      "<html>"
-      "<head><title>WebView remote debugging</title></head>"
-      "<body>Please use <a href=\'chrome://inspect\'>chrome://inspect</a>"
-      "</body>"
-      "</html>";
-  return html;
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_devtools_manager_delegate.h b/android_webview/browser/aw_devtools_manager_delegate.h
deleted file mode 100644
index a5c8fbd..0000000
--- a/android_webview/browser/aw_devtools_manager_delegate.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_NATIVE_AW_DEVTOOLS_MANAGER_DELEGATE_H_
-#define ANDROID_WEBVIEW_NATIVE_AW_DEVTOOLS_MANAGER_DELEGATE_H_
-
-#include <jni.h>
-
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "content/public/browser/devtools_manager_delegate.h"
-
-namespace android_webview {
-
-// Delegate implementation for the devtools http handler for WebView. A new
-// instance of this gets created each time web debugging is enabled.
-class AwDevToolsManagerDelegate : public content::DevToolsManagerDelegate {
- public:
-  AwDevToolsManagerDelegate();
-  ~AwDevToolsManagerDelegate() override;
-
-  // content::DevToolsManagerDelegate implementation.
-  std::string GetTargetDescription(content::RenderFrameHost* host) override;
-  std::string GetDiscoveryPageHTML() override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(AwDevToolsManagerDelegate);
-};
-
-} //  namespace android_webview
-
-#endif  // ANDROID_WEBVIEW_NATIVE_AW_DEVTOOLS_MANAGER_DELEGATE_H_
diff --git a/android_webview/browser/aw_download_manager_delegate.cc b/android_webview/browser/aw_download_manager_delegate.cc
deleted file mode 100644
index e6e3f4f..0000000
--- a/android_webview/browser/aw_download_manager_delegate.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/browser/aw_download_manager_delegate.h"
-
-#include "base/files/file_path.h"
-#include "content/public/browser/download_danger_type.h"
-#include "content/public/browser/download_item.h"
-
-namespace android_webview {
-
-AwDownloadManagerDelegate::~AwDownloadManagerDelegate() {}
-
-bool AwDownloadManagerDelegate::DetermineDownloadTarget(
-    content::DownloadItem* item,
-    const content::DownloadTargetCallback& callback) {
-  // Note this cancel is independent of the URLRequest cancel in
-  // AwResourceDispatcherHostDelegate::DownloadStarting. The request
-  // could have already finished by the time DownloadStarting is called.
-  callback.Run(base::FilePath() /* Empty file path for cancel */,
-               content::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
-               content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
-               base::FilePath());
-  return true;
-}
-
-bool AwDownloadManagerDelegate::ShouldCompleteDownload(
-    content::DownloadItem* item,
-    const base::Closure& complete_callback) {
-  NOTREACHED();
-  return true;
-}
-
-bool AwDownloadManagerDelegate::ShouldOpenDownload(
-    content::DownloadItem* item,
-    const content::DownloadOpenDelayedCallback& callback) {
-  NOTREACHED();
-  return true;
-}
-
-void AwDownloadManagerDelegate::GetNextId(
-    const content::DownloadIdCallback& callback) {
-  static uint32_t next_id = content::DownloadItem::kInvalidId + 1;
-  callback.Run(next_id++);
-}
-
-}  // namespace android_webview
diff --git a/android_webview/browser/aw_download_manager_delegate.h b/android_webview/browser/aw_download_manager_delegate.h
deleted file mode 100644
index 36b3d6b..0000000
--- a/android_webview/browser/aw_download_manager_delegate.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ANDROID_WEBVIEW_BROWSER_AW_DOWNLOAD_MANAGER_DELEGATE_H_
-#define ANDROID_WEBVIEW_BROWSER_AW_DOWNLOAD_MANAGER_DELEGATE_H_
-
-#include "content/public/browser/download_manager_delegate.h"
-
-namespace android_webview {
-
-// Android WebView does not use Chromium downloads, so implement methods here to
-// unconditionally cancel the download.
-class AwDownloadManagerDelegate : public content::DownloadManagerDelegate {
- public:
-  ~AwDownloadManagerDelegate() override;
-
-  // content::DownloadManagerDelegate implementation.
-  bool DetermineDownloadTarget(
-      content::DownloadItem* item,
-      const content::DownloadT