Chromium Code Reviews| Index: chrome/browser/ui/startup/bad_flags_prompt.cc |
| diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc |
| index 4b594970f396c902004353f393e31a3fd483e758..217a59d13cdc21dc40d1befef3f578caef9701fd 100644 |
| --- a/chrome/browser/ui/startup/bad_flags_prompt.cc |
| +++ b/chrome/browser/ui/startup/bad_flags_prompt.cc |
| @@ -27,6 +27,10 @@ |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +#if defined(OS_WIN) |
|
jam
2015/01/22 17:00:15
nit: here and in other places, you don't need the
|
| +#include "ui/gfx/switches.h" |
| +#endif |
| + |
| namespace chrome { |
| void ShowBadFlagsPrompt(Browser* browser) { |
| @@ -36,9 +40,11 @@ void ShowBadFlagsPrompt(Browser* browser) { |
| return; |
| // Unsupported flags for which to display a warning that "stability and |
| - // security will suffer". |
| + // security will suffer". In reverse order of severity - most serious |
| + // switches should be nearer the top. |
| static const char* kBadFlags[] = { |
| // These flags disable sandbox-related security. |
| + switches::kNoSandbox, |
| switches::kDisableGpuSandbox, |
| switches::kDisableSeccompFilterSandbox, |
| switches::kDisableSetuidSandbox, |
| @@ -46,7 +52,6 @@ void ShowBadFlagsPrompt(Browser* browser) { |
| #if !defined(DISABLE_NACL) |
| switches::kNaClDangerousNoSandboxNonSfi, |
| #endif |
| - switches::kNoSandbox, |
| switches::kSingleProcess, |
| // These flags disable or undermine the Same Origin Policy. |
| @@ -77,18 +82,34 @@ void ShowBadFlagsPrompt(Browser* browser) { |
| NULL |
| }; |
| + std::string warning_switch; |
| + |
| + base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
| + |
| +#if defined(OS_WIN) |
| + if (switches::IsWin32kRendererLockdownEnabled(true) && |
| + cmd_line->HasSwitch(switches::kDisableDirectWrite)) { |
| + warning_switch = switches::kDisableDirectWrite; |
| + } |
| +#endif |
| + |
| for (const char** flag = kBadFlags; *flag; ++flag) { |
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch(*flag)) { |
| - SimpleAlertInfoBarDelegate::Create( |
| - InfoBarService::FromWebContents(web_contents), |
| - infobars::InfoBarDelegate::kNoIconID, |
| - l10n_util::GetStringFUTF16(IDS_BAD_FLAGS_WARNING_MESSAGE, |
| - base::UTF8ToUTF16( |
| - std::string("--") + *flag)), |
| - false); |
| - return; |
| + if (cmd_line->HasSwitch(*flag)) { |
| + warning_switch = *flag; |
| + break; |
| } |
| } |
| + |
| + if (warning_switch.empty()) |
| + return; |
| + |
| + SimpleAlertInfoBarDelegate::Create( |
| + InfoBarService::FromWebContents(web_contents), |
| + infobars::InfoBarDelegate::kNoIconID, |
| + l10n_util::GetStringFUTF16( |
| + IDS_BAD_FLAGS_WARNING_MESSAGE, |
| + base::UTF8ToUTF16(std::string("--") + warning_switch)), |
| + false); |
| } |
| void MaybeShowInvalidUserDataDirWarningDialog() { |