Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Unified Diff: chrome/browser/safe_browsing/srt_global_error_win.cc

Issue 2846333003: Chrome cleaner: move Chrome Cleaner files to their own directory (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/safe_browsing/srt_global_error_win.h ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/safe_browsing/srt_global_error_win.cc
diff --git a/chrome/browser/safe_browsing/srt_global_error_win.cc b/chrome/browser/safe_browsing/srt_global_error_win.cc
deleted file mode 100644
index ae8deddfa8c088b42b296563ece7fcf6628cdab4..0000000000000000000000000000000000000000
--- a/chrome/browser/safe_browsing/srt_global_error_win.cc
+++ /dev/null
@@ -1,273 +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.
-
-#include "chrome/browser/safe_browsing/srt_global_error_win.h"
-
-#include "base/base_paths.h"
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/callback.h"
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/path_service.h"
-#include "base/process/launch.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/task_scheduler/post_task.h"
-#include "chrome/app/chrome_command_ids.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
-#include "chrome/browser/safe_browsing/srt_client_info_win.h"
-#include "chrome/browser/safe_browsing/srt_field_trial_win.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "chrome/browser/ui/global_error/global_error_service.h"
-#include "chrome/common/channel_info.h"
-#include "chrome/grit/chromium_strings.h"
-#include "chrome/grit/generated_resources.h"
-#include "chrome/installer/util/install_util.h"
-#include "components/chrome_cleaner/public/constants/constants.h"
-#include "components/component_updater/pref_names.h"
-#include "components/prefs/pref_service.h"
-#include "components/version_info/version_info.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace safe_browsing {
-
-namespace {
-
-// Used as a backup plan in case the SRT executable was not successfully
-// downloaded or run.
-const char kSRTDownloadURL[] =
- "https://www.google.com/chrome/srt/?chrome-prompt=1";
-
-// The extension to use to replace the temporary one created when the SRT was
-// downloaded.
-const base::FilePath::CharType kExecutableExtension[] = L"exe";
-
-bool MaybeExecuteSRTFromBlockingPool(
- const base::FilePath& downloaded_path,
- bool metrics_enabled,
- bool sber_enabled,
- chrome_cleaner::ChromePromptValue prompt_value) {
- DCHECK(!downloaded_path.empty());
-
- if (base::PathExists(downloaded_path)) {
- base::FilePath executable_path(
- downloaded_path.ReplaceExtension(kExecutableExtension));
- if (base::ReplaceFile(downloaded_path, executable_path, nullptr)) {
- base::CommandLine srt_command_line(executable_path);
- srt_command_line.AppendSwitchASCII(
- chrome_cleaner::kChromePromptSwitch,
- base::IntToString(static_cast<int>(prompt_value)));
- srt_command_line.AppendSwitchASCII(chrome_cleaner::kChromeVersionSwitch,
- version_info::GetVersionNumber());
- srt_command_line.AppendSwitchASCII(chrome_cleaner::kChromeChannelSwitch,
- base::IntToString(ChannelAsInt()));
-
- base::FilePath chrome_exe_path;
- PathService::Get(base::FILE_EXE, &chrome_exe_path);
- srt_command_line.AppendSwitchPath(chrome_cleaner::kChromeExePathSwitch,
- chrome_exe_path);
- if (!InstallUtil::IsPerUserInstall())
- srt_command_line.AppendSwitch(
- chrome_cleaner::kChromeSystemInstallSwitch);
-
- if (metrics_enabled) {
- srt_command_line.AppendSwitch(chrome_cleaner::kUmaUserSwitch);
- srt_command_line.AppendSwitch(
- chrome_cleaner::kEnableCrashReportingSwitch);
- }
-
- if (sber_enabled)
- srt_command_line.AppendSwitch(
- chrome_cleaner::kExtendedSafeBrowsingEnabledSwitch);
-
- base::Process srt_process(
- base::LaunchProcess(srt_command_line, base::LaunchOptions()));
- return srt_process.IsValid();
- }
- }
- return false;
-}
-
-void DeleteFilesFromBlockingPool(const base::FilePath& downloaded_path) {
- base::DeleteFile(downloaded_path, false);
- base::DeleteFile(downloaded_path.ReplaceExtension(kExecutableExtension),
- false);
-}
-
-} // namespace
-
-// SRTGlobalError ------------------------------------------------------------
-
-SRTGlobalError::SRTGlobalError(GlobalErrorService* global_error_service,
- const base::FilePath& downloaded_path)
- : global_error_service_(global_error_service),
- downloaded_path_(downloaded_path) {
- DCHECK(global_error_service_);
-}
-
-SRTGlobalError::~SRTGlobalError() {
- if (!interacted_) {
- base::PostTaskWithTraits(
- FROM_HERE, base::TaskTraits().MayBlock().WithPriority(
- base::TaskPriority::BACKGROUND),
- base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_));
- }
-}
-
-bool SRTGlobalError::HasMenuItem() {
- return true;
-}
-
-int SRTGlobalError::MenuItemCommandID() {
- return IDC_SHOW_SRT_BUBBLE;
-}
-
-base::string16 SRTGlobalError::MenuItemLabel() {
- return l10n_util::GetStringUTF16(IDS_SRT_MENU_ITEM);
-}
-
-void SRTGlobalError::ExecuteMenuItem(Browser* browser) {
- RecordSRTPromptHistogram(SRT_PROMPT_SHOWN_FROM_MENU);
- bubble_shown_from_menu_ = true;
- ShowBubbleView(browser);
-}
-
-void SRTGlobalError::ShowBubbleView(Browser* browser) {
- RecordSRTPromptHistogram(SRT_PROMPT_SHOWN);
- GlobalErrorWithStandardBubble::ShowBubbleView(browser);
-}
-
-bool SRTGlobalError::ShouldShowCloseButton() const {
- return true;
-}
-
-base::string16 SRTGlobalError::GetBubbleViewTitle() {
- return l10n_util::GetStringUTF16(IDS_SRT_BUBBLE_TITLE);
-}
-
-std::vector<base::string16> SRTGlobalError::GetBubbleViewMessages() {
- std::vector<base::string16> messages;
- messages.push_back(l10n_util::GetStringUTF16(IDS_SRT_BUBBLE_TEXT));
- return messages;
-}
-
-base::string16 SRTGlobalError::GetBubbleViewAcceptButtonLabel() {
- return downloaded_path_.empty()
- ? l10n_util::GetStringUTF16(IDS_SRT_BUBBLE_DOWNLOAD_BUTTON_TEXT)
- : l10n_util::GetStringUTF16(IDS_SRT_BUBBLE_RUN_BUTTON_TEXT);
-}
-
-bool SRTGlobalError::ShouldAddElevationIconToAcceptButton() {
- return !downloaded_path_.empty() && SRTPromptNeedsElevationIcon();
-}
-
-base::string16 SRTGlobalError::GetBubbleViewCancelButtonLabel() {
- // Show the dismiss button only if the bubble was shown from the menu.
- return bubble_shown_from_menu_
- ? l10n_util::GetStringUTF16(IDS_SRT_BUBBLE_DISMISS)
- : base::string16();
-}
-
-void SRTGlobalError::OnBubbleViewDidClose(Browser* browser) {
- if (!interacted_) {
- // If user didn't interact with the bubble, it means they used the generic
- // close bubble button.
- RecordSRTPromptHistogram(SRT_PROMPT_CLOSED);
- g_browser_process->local_state()->SetBoolean(
- prefs::kSwReporterPendingPrompt, true);
- }
-}
-
-void SRTGlobalError::BubbleViewAcceptButtonPressed(Browser* browser) {
- OnUserinteractionStarted(SRT_PROMPT_ACCEPTED);
- MaybeExecuteSRT();
-}
-
-void SRTGlobalError::BubbleViewCancelButtonPressed(Browser* browser) {
- OnUserinteractionStarted(SRT_PROMPT_DENIED);
- base::PostTaskWithTraits(
- FROM_HERE, base::TaskTraits().MayBlock().WithPriority(
- base::TaskPriority::BACKGROUND),
- base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_));
- OnUserinteractionDone();
-}
-
-bool SRTGlobalError::ShouldCloseOnDeactivate() const {
- return false;
-}
-
-void SRTGlobalError::MaybeExecuteSRT() {
- if (downloaded_path_.empty()) {
- FallbackToDownloadPage();
- return;
- }
- // At this point, this object owns itself, since ownership has been taken back
- // from the global_error_service_ in the call to OnUserInteractionStarted.
- // This means that it is safe to use base::Unretained here.
- base::PostTaskWithTraitsAndReplyWithResult(
- FROM_HERE,
- base::TaskTraits().MayBlock().WithPriority(
- base::TaskPriority::BACKGROUND),
- base::Bind(
- &MaybeExecuteSRTFromBlockingPool, downloaded_path_,
- ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(),
- SafeBrowsingExtendedReportingEnabled(),
- bubble_shown_from_menu_
- ? chrome_cleaner::ChromePromptValue::kShownFromMenu
- : chrome_cleaner::ChromePromptValue::kPrompted),
- base::Bind(
- [](SRTGlobalError* self, bool success) {
- if (success)
- self->OnUserinteractionDone();
- else
- self->FallbackToDownloadPage();
- },
- base::Unretained(this)));
-}
-
-void SRTGlobalError::FallbackToDownloadPage() {
- RecordSRTPromptHistogram(SRT_PROMPT_FALLBACK);
-
- Browser* browser = chrome::FindLastActive();
- if (browser) {
- browser->OpenURL(
- content::OpenURLParams(GURL(kSRTDownloadURL), content::Referrer(),
- WindowOpenDisposition::NEW_FOREGROUND_TAB,
- ui::PAGE_TRANSITION_LINK, false));
- }
-
- base::PostTaskWithTraits(
- FROM_HERE, base::TaskTraits().MayBlock().WithPriority(
- base::TaskPriority::BACKGROUND),
- base::Bind(&DeleteFilesFromBlockingPool, downloaded_path_));
- OnUserinteractionDone();
-}
-
-void SRTGlobalError::OnUserinteractionStarted(
- SRTPromptHistogramValue histogram_value) {
- // This is for cases where the UI doesn't go away quickly enough and user
- // might click on the button more than once, or more than one button.
- if (interacted_)
- return;
- RecordSRTPromptHistogram(histogram_value);
- interacted_ = true;
- if (global_error_service_) {
- global_error_service_->RemoveGlobalError(this).release();
- global_error_service_ = nullptr;
- }
-}
-
-void SRTGlobalError::OnUserinteractionDone() {
- DCHECK(interacted_);
- // Once the user interacted with the bubble, we can forget about any pending
- // prompt.
- g_browser_process->local_state()->SetBoolean(prefs::kSwReporterPendingPrompt,
- false);
- delete this;
-}
-
-} // namespace safe_browsing
« no previous file with comments | « chrome/browser/safe_browsing/srt_global_error_win.h ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698