| Index: chrome/browser/interstitials/security_interstitial_uma_helper.h
|
| diff --git a/chrome/browser/interstitials/security_interstitial_uma_helper.h b/chrome/browser/interstitials/security_interstitial_uma_helper.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ffb465d4d6e50fb77348b2a44d28b97b5b092bfc
|
| --- /dev/null
|
| +++ b/chrome/browser/interstitials/security_interstitial_uma_helper.h
|
| @@ -0,0 +1,72 @@
|
| +// Copyright (c) 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.
|
| +
|
| +#ifndef CHROME_BROWSER_INTERSTITIALS_SECURITY_INTERSTITIAL_UMA_HELPER_H_
|
| +#define CHROME_BROWSER_INTERSTITIALS_SECURITY_INTERSTITIAL_UMA_HELPER_H_
|
| +
|
| +#include "base/task/cancelable_task_tracker.h"
|
| +#include "base/time/time.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace content {
|
| +class WebContents;
|
| +}
|
| +
|
| +namespace extensions {
|
| +class ExperienceSamplingEvent;
|
| +}
|
| +
|
| +// Most of the security interstitials share a common layout and set of
|
| +// choices. SecurityInterstitialUmaHelper is intended to help the security
|
| +// interstitials record user choices in a common way via UMA histograms.
|
| +class SecurityInterstitialUmaHelper {
|
| + public:
|
| + // These enums are used for histograms. Don't reorder, delete, or insert
|
| + // elements. New elements should be added at the end (right before the max).
|
| + enum SecurityInterstitialDecision {
|
| + SHOW,
|
| + PROCEED,
|
| + DONT_PROCEED,
|
| + PROCEEDING_DISABLED,
|
| + MAX_DECISION
|
| + };
|
| + enum SecurityInterstitialInteraction {
|
| + TOTAL_VISITS,
|
| + SHOW_ADVANCED,
|
| + SHOW_PRIVACY_POLICY,
|
| + SHOW_DIAGNOSTIC,
|
| + SHOW_LEARN_MORE,
|
| + RELOAD,
|
| + OPEN_TIME_SETTINGS,
|
| + MAX_INTERACTION
|
| + };
|
| +
|
| + SecurityInterstitialUmaHelper(content::WebContents* web_contents,
|
| + const GURL& url,
|
| + const std::string& histogram_prefix,
|
| + const std::string& sampling_event_name);
|
| + ~SecurityInterstitialUmaHelper();
|
| +
|
| + // Record a user decision or interaction to the appropriate UMA histogram.
|
| + void RecordUserDecision(SecurityInterstitialDecision decision);
|
| + void RecordUserInteraction(SecurityInterstitialInteraction interaction);
|
| +
|
| + private:
|
| + // Used to query the HistoryService to see if the URL is in history.
|
| + void OnGotHistoryCount(bool success, int num_visits, base::Time first_visit);
|
| +
|
| + content::WebContents* web_contents_;
|
| + const GURL request_url_;
|
| + const std::string histogram_prefix_;
|
| + const std::string sampling_event_name_;
|
| + int num_visits_;
|
| + base::CancelableTaskTracker request_tracker_;
|
| +#if defined(ENABLE_EXTENSIONS)
|
| + scoped_ptr<extensions::ExperienceSamplingEvent> sampling_event_;
|
| +#endif
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SecurityInterstitialUmaHelper);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_INTERSTITIALS_SECURITY_INTERSTITIAL_UMA_HELPER_H_
|
|
|