# 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*

# 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*
