summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsdefresne <sdefresne@chromium.org>2015-12-14 05:19:26 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-14 13:20:12 +0000
commite9e69603a1c8904cca2be0849b89b6e61586c0dc (patch)
treec018e826b8b6db644a3092ca531888e0a2757afb
parent6de4b37238c31df5bb7b65adf54fd13378714608 (diff)
downloadchromium_src-e9e69603a1c8904cca2be0849b89b6e61586c0dc.zip
chromium_src-e9e69603a1c8904cca2be0849b89b6e61586c0dc.tar.gz
chromium_src-e9e69603a1c8904cca2be0849b89b6e61586c0dc.tar.bz2
Upstream iOS concrete implementation of MetricsHelper class.
BUG=567727 Review URL: https://codereview.chromium.org/1522843002 Cr-Commit-Position: refs/heads/master@{#365015}
-rw-r--r--ios/chrome/browser/BUILD.gn3
-rw-r--r--ios/chrome/browser/DEPS3
-rw-r--r--ios/chrome/browser/interstitials/ios_chrome_metrics_helper.cc36
-rw-r--r--ios/chrome/browser/interstitials/ios_chrome_metrics_helper.h42
-rw-r--r--ios/chrome/ios_chrome.gyp3
5 files changed, 86 insertions, 1 deletions
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn
index d743e9b..2f51f23 100644
--- a/ios/chrome/browser/BUILD.gn
+++ b/ios/chrome/browser/BUILD.gn
@@ -195,6 +195,8 @@ source_set("browser") {
"install_time_util.mm",
"installation_notifier.h",
"installation_notifier.mm",
+ "interstitials/ios_chrome_metrics_helper.cc",
+ "interstitials/ios_chrome_metrics_helper.h",
"invalidation/ios_chrome_profile_invalidation_provider_factory.cc",
"invalidation/ios_chrome_profile_invalidation_provider_factory.h",
"ios_chrome_field_trials.cc",
@@ -513,6 +515,7 @@ source_set("browser") {
"//components/resources",
"//components/search",
"//components/search_engines",
+ "//components/security_interstitials/core",
"//components/sessions",
"//components/signin/core/browser",
"//components/signin/core/common",
diff --git a/ios/chrome/browser/DEPS b/ios/chrome/browser/DEPS
index 20716e4..d18a618 100644
--- a/ios/chrome/browser/DEPS
+++ b/ios/chrome/browser/DEPS
@@ -48,8 +48,8 @@ include_rules = [
"+components/rlz",
"+components/search",
"+components/search_engines",
+ "+components/security_interstitials",
"+components/sessions",
- "-components/sessions/content",
"+components/signin/core/browser",
"+components/signin/core/common",
"+components/signin/ios/browser",
@@ -83,6 +83,7 @@ include_rules = [
# Those depend on //content; exclude them.
"-components/metrics/gpu",
+ "-components/sessions/content",
# For tests.
"+ios/chrome/test",
diff --git a/ios/chrome/browser/interstitials/ios_chrome_metrics_helper.cc b/ios/chrome/browser/interstitials/ios_chrome_metrics_helper.cc
new file mode 100644
index 0000000..88ffb69
--- /dev/null
+++ b/ios/chrome/browser/interstitials/ios_chrome_metrics_helper.cc
@@ -0,0 +1,36 @@
+// Copyright 2015 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 "ios/chrome/browser/interstitials/ios_chrome_metrics_helper.h"
+
+#include "components/history/core/browser/history_service.h"
+#include "components/keyed_service/core/service_access_type.h"
+#include "components/rappor/rappor_service.h"
+#include "ios/chrome/browser/application_context.h"
+#include "ios/chrome/browser/history/history_service_factory.h"
+#include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/web/public/web_state/web_state.h"
+
+IOSChromeMetricsHelper::IOSChromeMetricsHelper(
+ web::WebState* web_state,
+ const GURL& request_url,
+ const security_interstitials::MetricsHelper::ReportDetails report_details)
+ : security_interstitials::MetricsHelper(
+ request_url,
+ report_details,
+ ios::HistoryServiceFactory::GetForBrowserState(
+ ios::ChromeBrowserState::FromBrowserState(
+ web_state->GetBrowserState()),
+ ServiceAccessType::EXPLICIT_ACCESS),
+ GetApplicationContext()->GetRapporService()) {}
+
+IOSChromeMetricsHelper::~IOSChromeMetricsHelper() {}
+
+void IOSChromeMetricsHelper::RecordExtraUserDecisionMetrics(
+ security_interstitials::MetricsHelper::Decision decision) {}
+
+void IOSChromeMetricsHelper::RecordExtraUserInteractionMetrics(
+ security_interstitials::MetricsHelper::Interaction interaction) {}
+
+void IOSChromeMetricsHelper::RecordExtraShutdownMetrics() {}
diff --git a/ios/chrome/browser/interstitials/ios_chrome_metrics_helper.h b/ios/chrome/browser/interstitials/ios_chrome_metrics_helper.h
new file mode 100644
index 0000000..3bde914
--- /dev/null
+++ b/ios/chrome/browser/interstitials/ios_chrome_metrics_helper.h
@@ -0,0 +1,42 @@
+// Copyright 2015 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 IOS_CHROME_BROWSER_INTERSTITIALS_IOS_CHROME_METRICS_HELPER_H_
+#define IOS_CHROME_BROWSER_INTERSTITIALS_IOS_CHROME_METRICS_HELPER_H_
+
+#include <string>
+
+#include "base/macros.h"
+#include "components/security_interstitials/core/metrics_helper.h"
+#include "url/gurl.h"
+
+namespace web {
+class WebState;
+}
+
+// This class provides a concrete implementation for Chrome on iOS to the
+// security_interstitials::MetricsHelper class. Together, they record UMA,
+// Rappor, and experience sampling metrics.
+class IOSChromeMetricsHelper : public security_interstitials::MetricsHelper {
+ public:
+ IOSChromeMetricsHelper(
+ web::WebState* web_state,
+ const GURL& request_url,
+ const security_interstitials::MetricsHelper::ReportDetails
+ report_details);
+ ~IOSChromeMetricsHelper() override;
+
+ protected:
+ // security_interstitials::MetricsHelper implementation.
+ void RecordExtraUserDecisionMetrics(
+ security_interstitials::MetricsHelper::Decision decision) override;
+ void RecordExtraUserInteractionMetrics(
+ security_interstitials::MetricsHelper::Interaction interaction) override;
+ void RecordExtraShutdownMetrics() override;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(IOSChromeMetricsHelper);
+};
+
+#endif // IOS_CHROME_BROWSER_INTERSTITIALS_IOS_CHROME_METRICS_HELPER_H_
diff --git a/ios/chrome/ios_chrome.gyp b/ios/chrome/ios_chrome.gyp
index 9a05b3f..eac6160 100644
--- a/ios/chrome/ios_chrome.gyp
+++ b/ios/chrome/ios_chrome.gyp
@@ -89,6 +89,7 @@
'../../components/components.gyp:rappor',
'../../components/components.gyp:search',
'../../components/components.gyp:search_engines',
+ '../../components/components.gyp:security_interstitials_core',
'../../components/components.gyp:sessions_ios',
'../../components/components.gyp:signin_core_browser',
'../../components/components.gyp:signin_core_common',
@@ -321,6 +322,8 @@
'browser/install_time_util.mm',
'browser/installation_notifier.h',
'browser/installation_notifier.mm',
+ 'browser/interstitials/ios_chrome_metrics_helper.cc',
+ 'browser/interstitials/ios_chrome_metrics_helper.h',
'browser/invalidation/ios_chrome_profile_invalidation_provider_factory.cc',
'browser/invalidation/ios_chrome_profile_invalidation_provider_factory.h',
'browser/ios_chrome_field_trials.cc',