# 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*
# PopupBlockerBrowserTest.TapGestureWithCtrlKey
Pop*
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*
# StartupBrowserCreatorTest.ProfilesLaunchedAfterCrash
St*orTest.*
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*
