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 40559358..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 a32e00ce..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 c269deec..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 bcd497bc..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(®ion);
- mappings->ShareWithRegion(kAndroidWebViewMainPakDescriptor, fd, region);
-
- fd = ui::GetCommonResourcesPackFd(®ion);
- mappings->ShareWithRegion(kAndroidWebView100PercentPakDescriptor, fd, region);
-
- fd = ui::GetLocalePackFd(®ion);
- 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,