# TODO(zhaoqin): File bugs for those failing browser tests.

# Dr.Memory i#1052: https://github.com/DynamoRIO/drmemory/issues/1052
#
# The list is too long for gtest_filter, so we exclude the whole
# test case if any of its tests failed.
*FLAKY*

# http://crbug.com/450221
ProfileChooserViewExtensionsTest.LockProfileNoBlockOtherProfileExtensions

# it takes too long to run all browser_tests with Dr.Memory,
# and we only select subset to run
# A*
Act*
Ad*
All*
AppA*
AppB*
AppL*
AppW*
Auto*
# B*
BaseD*
Bac*App*.R*
Blue*
Bit*
Bo*sT*
Br*erA*
Br*erC*
Br*erN*
Br*erT*
# C*
Cal*
Cap*
Cas*
Clou*cy
Clear*
Click*
Com*
ChromeA*
ChromeC*
ChromeR*
Col*
Con*UITest.*
Con*.Re*
Con*Se*
Cont*ns
Context*
Coo*
# D*
Dia*E*
Dec*
Dev*
Dns*
DoNot*
Down*Ext*
Down*UI*
Do*adTest.*
Do*tTest.*All
Drive*
# E*
ECK*
Ed*
Enc*
Ep*
Er*
Exe*
Ext*.D*
Ext*.P*
Ext*.N*
Ext*.RS*
Ext*Api*
Ext*Man*
Ext*Se*
Ext*re*
Ext*Re*
Ext*nB*
Ext*Crx*
# F*
FileSys*
Find*
Fl*
Font*gs
Ftp*
# G*
GcdPri*.*Remove
GcdPri*.*Query
Gcm*.R*
GetA*
Ge*Br*
# H*
Hot*
His*
HostR*
Ht*
# I*
IE*
Ide*
Inv*
Insp*
Inl*Safe*
# J*
# K*
# L*
Lan*
Lau*
Laz*
LoadT*
Loc*
Log*hs
# M*
MDn*
Med*B*
Med*Se*
Med*Ge*
Mock*
MSC_C*
MSE*
Man*t.*
# N*
NaCl*lib*
NaCl*Pn*
NaCl*Vc*
NetIn*
Noti*
NoSe*
# O*
Opt*WebUI*
Out*PPAPITe*
# P*
Pag*
Pas*erBro*
Pe*
Plat*Bro*
Policy*H*
Port*
Prefe*
PrefsF*
Print*
Prox*
Prof*ta
Prof*t
Prer*
PPA*ib*
PPA*lT*.*
PPAPIT*.F*
PPAPIT*.W*
PPAPIT*.U*3
# Q*
QU*
# R*
# RangeHistoryWebUITest.*
Ran*
Red*
Ref*
Reg*
Rem*De*
Rem*Ad*
Res*
# RequestContentScriptAPITest.PermissionMatcherAgreementInjection
Req*.Per*ion
# S*
Sa*
Sea*Pr*
# SerialApiTest.SerialFakeHardware_1 (http://crbug.com/372452)
Ser*
Ses*
Set*
Scr*
Soc*
Spe*
SRC*.Pl*
SRC*.Fr*
SSL*ed
Sup*Mo*
Str*
SyncF*
SyncInt*
Sys*Di*
Sys*In*
Sys*Ne*
# T*
Tab*
Tas*
Tran*Bu*
Tran*Up*
Tran*ag
# U*
Us*
Un*.Br*
# V*
# W*
WebViewT*
WebRtcB*
WebUIA*
WebUIBr*
WebC*
WebN*
WebstoreIn*
WebstoreSt*
WebSo*
Win*.Cl*
# X*
# Y*
# Z*
