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

Unified Diff: chrome/browser/profile_resetter/automatic_profile_resetter.h

Issue 271673006: Eliminate all code related to the AutomaticProfileResetter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed nit from dbeam@, using new tracked preference deprecation. Created 6 years, 5 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
Index: chrome/browser/profile_resetter/automatic_profile_resetter.h
diff --git a/chrome/browser/profile_resetter/automatic_profile_resetter.h b/chrome/browser/profile_resetter/automatic_profile_resetter.h
deleted file mode 100644
index 9db561ee9e3211be6a3a54415e5b389856605730..0000000000000000000000000000000000000000
--- a/chrome/browser/profile_resetter/automatic_profile_resetter.h
+++ /dev/null
@@ -1,268 +0,0 @@
-// Copyright 2013 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.
-
-#ifndef CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_
-#define CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/strings/string_piece.h"
-#include "base/task_runner.h"
-#include "chrome/browser/profile_resetter/automatic_profile_resetter_mementos.h"
-#include "components/keyed_service/core/keyed_service.h"
-
-class AutomaticProfileResetterDelegate;
-class Profile;
-
-namespace base {
-class DictionaryValue;
-class ListValue;
-}
-
-// This service is responsible for evaluating whether the criteria for showing
-// the one-time profile reset prompt are satisfied, and for potentially
-// triggering the prompt. To ensure that the prompt only appears at most once
-// for any given profile, a "memento" that the prompt has appeared is written to
-// the profile on disk; see automatic_profile_resetter_mementos.h for details.
-// The service is created automatically with the Profile and is activated right
-// away by its factory. To avoid delaying start-up, however, it will only start
-// working after a short delay.
-// All methods in this class shall be called on the UI thread, except when noted
-// otherwise.
-class AutomaticProfileResetter : public KeyedService {
- public:
- // Enumeration listing the possible outcomes of triggering the profile reset
- // prompt.
- enum PromptResult {
- // The reset prompt was not triggered because only a dry-run was performed,
- // or because it was not supported on the current platform.
- PROMPT_NOT_TRIGGERED,
- // The reset bubble actually got shown. In contrast to the wrench menu item
- // that can always be shown, the bubble might be delayed or might never be
- // shown if another bubble was shown at the time of triggering the prompt.
- // This enumeration value is usually recorded in conjunction with another
- // PromptResult, the absence of which indicates that the prompt was ignored.
- PROMPT_SHOWN_BUBBLE,
- // The user selected "Reset" or "No, thanks" (respectively) directly from
- // within the bubble.
- PROMPT_ACTION_RESET,
- PROMPT_ACTION_NO_RESET,
- // The reset bubble was shown, then dismissed without taking definitive
- // action. Then, however, the user initiated or refrained from doing a reset
- // (respectively) from the conventional, WebUI-based reset dialog.
- PROMPT_FOLLOWED_BY_WEBUI_RESET,
- PROMPT_FOLLOWED_BY_WEBUI_NO_RESET,
- // The reset bubble was suppressed (not shown) because another bubble was
- // already being shown at the time. Regardless, however, the user initiated
- // or refrained from doing a reset (respectively) from the conventional,
- // WebUI-based reset dialog.
- PROMPT_NOT_SHOWN_BUBBLE_BUT_HAD_WEBUI_RESET,
- PROMPT_NOT_SHOWN_BUBBLE_BUT_HAD_WEBUI_NO_RESET,
- PROMPT_RESULT_MAX
- };
-
- explicit AutomaticProfileResetter(Profile* profile);
- virtual ~AutomaticProfileResetter();
-
- // Initializes the service if it is enabled in the field trial. Otherwise,
- // skips the initialization steps, and also permanently disables the service.
- // Called by AutomaticProfileResetterFactory.
- void Initialize();
-
- // Fires up the service by unleashing the asynchronous evaluation flow, unless
- // the service has been already disabled in Initialize() or there is no
- // |program_| to run (in which case the service also gets disabled).
- // Called by the AutomaticProfileResetterFactory.
- void Activate();
-
- // Called in case the user chooses to reset their profile settings from inside
- // the reset bubble. Will trigger the reset, optionally |send_feedback|, and
- // conclude the reset prompt flow.
- void TriggerProfileReset(bool send_feedback);
-
- // Called in case the user chooses from inside the reset bubble that they do
- // not want to reset their profile settings. Will conclude the reset prompt
- // flow without setting off a reset.
- void SkipProfileReset();
-
- // Returns whether or not the profile reset prompt flow is currently active,
- // that is, we have triggered the prompt and are waiting for the user to take
- // definitive action (and we are not yet performing a reset).
- bool IsResetPromptFlowActive() const;
-
- // Returns whether or not the profile reset banner should be shown on the
- // WebUI-based settings page.
- bool ShouldShowResetBanner() const;
-
- // Called to give notice that the reset bubble has actually been shown.
- void NotifyDidShowResetBubble();
-
- // Called to give notice that the conventional, WebUI-based settings reset
- // dialog has been opened. This will dismiss the menu item in the wrench menu.
- // This should always be followed by a corresponding call to
- // NotifyDidCloseWebUIResetDialog().
- void NotifyDidOpenWebUIResetDialog();
-
- // Called to give notice that the conventional, WebUI-based settings reset
- // dialog has been closed, with |performed_reset| indicating whether or not a
- // reset was requested. This is required so that we can record the appropriate
- // PromptResult, dismiss the prompt, and conclude the reset prompt flow early
- // without setting off any resets in the future.
- void NotifyDidCloseWebUIResetDialog(bool performed_reset);
-
- // Called to give notice that reset banner has been dismissed as a result of
- // user action on the WebUI-based settings page itself.
- void NotifyDidCloseWebUIResetBanner();
-
- base::WeakPtr<AutomaticProfileResetter> AsWeakPtr() {
- return weak_ptr_factory_.GetWeakPtr();
- }
-
- // Should be called before Activate().
- void SetProgramForTesting(const std::string& program);
-
- // Should be called before Activate().
- void SetHashSeedForTesting(const std::string& hash_seed);
-
- // Should be called before Activate().
- void SetDelegateForTesting(
- scoped_ptr<AutomaticProfileResetterDelegate> delegate);
-
- // Should be called before Activate(). Sets the task runner to be used to post
- // task |PrepareEvaluationFlow| in a delayed manner.
- void SetTaskRunnerForWaitingForTesting(
- const scoped_refptr<base::TaskRunner>& task_runner);
-
- // KeyedService:
- virtual void Shutdown() OVERRIDE;
-
- private:
- class InputBuilder;
- struct EvaluationResults;
-
- enum State {
- STATE_UNINITIALIZED,
- STATE_INITIALIZED,
- STATE_DISABLED,
- STATE_WAITING_ON_DEPENDENCIES,
- STATE_READY,
- STATE_EVALUATING_CONDITIONS,
- // The reset prompt has been triggered; but the reset bubble has not yet
- // been shown.
- STATE_HAS_TRIGGERED_PROMPT,
- // The reset prompt has been triggered; the reset bubble has been shown, and
- // potentially already dismissed by the user.
- STATE_HAS_SHOWN_BUBBLE,
- STATE_PERFORMING_RESET,
- STATE_DONE
- };
-
- // Prepares the asynchronous evaluation flow by requesting services that it
- // depends on to make themselves ready.
- void PrepareEvaluationFlow();
-
- // Called back by |resetter_delegate_| when the template URL service is ready.
- void OnTemplateURLServiceIsLoaded();
-
- // Called back by |resetter_delegate_| when the loaded modules have been
- // enumerated.
- void OnLoadedModulesAreEnumerated();
-
- // Invoked by the above two methods. Kicks off the actual evaluation flow.
- void OnDependencyIsReady();
-
- // Begins the asynchronous evaluation flow, which will assess whether the
- // criteria for showing the reset prompt are met, whether we have already
- // shown the prompt; and, in the end, will potentially trigger the prompt.
- void BeginEvaluationFlow();
-
- // Called by InputBuilder once it has finished assembling the |program_input|,
- // and will continue with the evaluation flow by triggering the evaluator
- // program on the worker thread.
- void ContinueWithEvaluationFlow(
- scoped_ptr<base::DictionaryValue> program_input);
-
- // Performs the bulk of the work. Invokes the JTL interpreter to run the
- // |program| that will evaluate whether the conditions are met for showing the
- // reset prompt. The program will make this decision based on the state
- // information contained in |input| in the form of key-value pairs. The
- // program will only see hashed keys and values that are produced using
- // |hash_seed| as a key.
- static scoped_ptr<EvaluationResults> EvaluateConditionsOnWorkerPoolThread(
- const std::string& hash_seed,
- const std::string& program,
- scoped_ptr<base::DictionaryValue> program_input);
-
- // Reports the given metrics through UMA. Virtual, so it can be mocked out in
- // tests to verify that the correct value are being reported.
- virtual void ReportStatistics(uint32 satisfied_criteria_mask,
- uint32 combined_status_mask);
-
- // Called back when EvaluateConditionsOnWorkerPoolThread completes executing
- // the program with |results|. Finishes the evaluation flow, and, based on the
- // result, potentially initiates the reset prompt flow.
- void FinishEvaluationFlow(scoped_ptr<EvaluationResults> results);
-
- // Begins the reset prompt flow by triggering the reset prompt, which consists
- // of two parts: (1.) the profile reset (pop-up) bubble, and (2.) a menu item
- // in the wrench menu (provided by a GlobalError).
- // The flow lasts until we receive a clear indication from the user about
- // whether or not they wish to reset their settings. This indication can come
- // in a variety of flavors:
- // * taking definitive action (i.e. selecting either "Reset" or "No, thanks")
- // in the pop-up reset bubble itself,
- // * dismissing the bubble, but then selecting the wrench menu item, which
- // takes them to the WebUI reset dialog in chrome://settings, and then the
- // user can make their choice there,
- // * the user going to the WebUI reset dialog by themself.
- // For the most part, the conclusion of the reset flow coincides with when the
- // reset prompt is dismissed, with the one exception being that the prompt is
- // closed as soon as the WebUI reset dialog is opened, we do not wait until
- // the user actually makes a choice in that dialog.
- void BeginResetPromptFlow();
-
- // Called back by the ProfileResetter once resetting the profile settings has
- // been completed, when requested by the user from inside the reset bubble.
- // Will dismiss the prompt and conclude the reset prompt flow.
- void OnProfileSettingsResetCompleted();
-
- // Reports the result of triggering the prompt through UMA. Virtual, so it can
- // be mocked out in tests to verify that the correct value is being reported.
- virtual void ReportPromptResult(PromptResult result);
-
- // Writes the memento values returned by the evaluation program to disk, and
- // then destroys |evaluation_results_|.
- void PersistMementos();
-
- // Concludes the reset prompt flow.
- void FinishResetPromptFlow();
-
- Profile* profile_;
-
- State state_;
- bool enumeration_of_loaded_modules_ready_;
- bool template_url_service_ready_;
- bool has_already_dismissed_prompt_;
-
- scoped_ptr<InputBuilder> input_builder_;
- std::string hash_seed_;
- std::string program_;
-
- scoped_ptr<EvaluationResults> evaluation_results_;
-
- bool should_show_reset_banner_;
-
- scoped_ptr<AutomaticProfileResetterDelegate> delegate_;
- scoped_refptr<base::TaskRunner> task_runner_for_waiting_;
-
- base::WeakPtrFactory<AutomaticProfileResetter> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(AutomaticProfileResetter);
-};
-
-#endif // CHROME_BROWSER_PROFILE_RESETTER_AUTOMATIC_PROFILE_RESETTER_H_
« no previous file with comments | « chrome/browser/prefs/pref_hash_filter.cc ('k') | chrome/browser/profile_resetter/automatic_profile_resetter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698