1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_RESET_SETTINGS_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_RESET_SETTINGS_HANDLER_H_
#include <memory>
#include <string>
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "build/build_config.h"
#include "chrome/browser/profile_resetter/profile_reset_report.pb.h"
#include "chrome/browser/profile_resetter/profile_resetter.h"
#include "chrome/browser/profile_resetter/resettable_settings_snapshot.h"
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
#include "components/prefs/pref_registry_simple.h"
class Profile;
class ResettableSettingsSnapshot;
namespace settings {
// Handler for
// 1) 'Reset Profile Settings' dialog
// 2) 'Powerwash' dialog (ChromeOS only)
class ResetSettingsHandler : public SettingsPageUIHandler {
public:
#if BUILDFLAG(IS_CHROMEOS)
// Hash used by the Chrome Cleanup Tool when launching chrome with the reset
// profile settings URL.
static const char kCctResetSettingsHash[];
static void RegisterProfilePrefs(PrefRegistrySimple* registry);
#endif // BUILDFLAG(IS_CHROMEOS)
static bool ShouldShowResetProfileBanner(Profile* profile);
explicit ResetSettingsHandler(Profile* profile);
ResetSettingsHandler(const ResetSettingsHandler&) = delete;
ResetSettingsHandler& operator=(const ResetSettingsHandler&) = delete;
~ResetSettingsHandler() override;
// WebUIMessageHandler implementation.
void RegisterMessages() override;
void OnJavascriptAllowed() override {}
void OnJavascriptDisallowed() override;
protected:
// Overridden in tests to substitute with a test version of ProfileResetter.
virtual ProfileResetter* GetResetter();
// Javascript callback to start clearing data.
void HandleResetProfileSettings(const base::Value::List& args);
private:
// Retrieves the settings that will be reported, called from Javascript.
void HandleGetReportedSettings(const base::Value::List& args);
// Called once the settings that will be reported have been retrieved.
void OnGetReportedSettingsDone(std::string callback_id);
// Called when the reset profile dialog is shown.
void OnShowResetProfileDialog(const base::Value::List& args);
// Called when the reset profile dialog is hidden.
void OnHideResetProfileDialog(const base::Value::List& args);
// Called when the reset profile banner is shown.
void OnHideResetProfileBanner(const base::Value::List& args);
// Retrieve the triggered reset tool name, called from Javascript.
void HandleGetTriggeredResetToolName(const base::Value::List& args);
// Resets the settings that are marked in the resettable flags to the default
// value, callback will be called once the reset is complete. The difference
// between this function and |ResetProfile| function is that individual
// settings could be reset with this function.
void ResetSettings(ProfileResetter::ResettableFlags resettable_flags,
base::OnceClosure callback);
// Resets all profile settings to default values. |send_settings| is true if
// user gave their consent to upload broken settings to Google for analysis.
void ResetProfile(
const std::string& callback_id,
bool send_settings,
reset_report::ChromeResetReport::ResetRequestOrigin request_origin);
// Closes the dialog once all requested settings has been reset.
void OnResetProfileSettingsDone(
std::string callback_id,
bool send_feedback,
reset_report::ChromeResetReport::ResetRequestOrigin request_origin);
#if BUILDFLAG(IS_CHROMEOS)
void OnShowSanitizeDialog(const base::Value::List& args);
#endif // BUILDFLAG(IS_CHROMEOS)
const raw_ptr<Profile> profile_;
std::unique_ptr<ProfileResetter> resetter_;
// Snapshot of settings before profile was reseted.
std::unique_ptr<ResettableSettingsSnapshot> setting_snapshot_;
// Used to cancel callbacks when JavaScript becomes disallowed.
base::WeakPtrFactory<ResetSettingsHandler> callback_weak_ptr_factory_{this};
};
} // namespace settings
#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_RESET_SETTINGS_HANDLER_H_
|