Skip to content

Commit

Permalink
[iOS] Fix the Activity Metrics provider filter.
Browse files Browse the repository at this point in the history
Moved the Activity Bucket provider filter to a different directory, as well as registering the metrics provider.

(cherry picked from commit 45a1e91)

Bug: 1446085
Change-Id: Ic742f81c71dd367df2ce3c84cc37fc6fd8ce66cf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4601889
Reviewed-by: Sergio Collazos <sczs@chromium.org>
Commit-Queue: Sergio Collazos <sczs@chromium.org>
Auto-Submit: Guillem Perez <guiperez@google.com>
Cr-Original-Commit-Position: refs/heads/main@{#1157857}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4721947
Commit-Queue: Guillem Perez <guiperez@google.com>
Cr-Commit-Position: refs/branch-heads/5790@{#1843}
Cr-Branched-From: 1d71a33-refs/heads/main@{#1148114}
  • Loading branch information
Guillem Perez authored and Chromium LUCI CQ committed Jul 26, 2023
1 parent 0ae27a0 commit 8ad26ff
Show file tree
Hide file tree
Showing 11 changed files with 69 additions and 66 deletions.
3 changes: 3 additions & 0 deletions ios/chrome/browser/metrics/BUILD.gn
Expand Up @@ -49,6 +49,8 @@ source_set("metrics") {
"ios_chrome_signin_and_sync_status_metrics_provider.mm",
"ios_chrome_stability_metrics_provider.h",
"ios_chrome_stability_metrics_provider.mm",
"ios_feed_activity_metrics_provider.h",
"ios_feed_activity_metrics_provider.mm",
"ios_feed_enabled_metrics_provider.h",
"ios_feed_enabled_metrics_provider.mm",
"ios_profile_session_durations_service.h",
Expand Down Expand Up @@ -134,6 +136,7 @@ source_set("unit_tests") {
"ios_chrome_metrics_service_accessor_unittest.mm",
"ios_chrome_metrics_service_client_unittest.mm",
"ios_chrome_stability_metrics_provider_unittest.mm",
"ios_feed_activity_metrics_provider_unittest.mm",
"ios_feed_enabled_metrics_provider_unittest.mm",
"mobile_session_shutdown_metrics_provider_unittest.mm",
"pageload_foreground_duration_tab_helper_unittest.mm",
Expand Down
Expand Up @@ -67,6 +67,7 @@
#import "ios/chrome/browser/metrics/ios_chrome_default_browser_metrics_provider.h"
#import "ios/chrome/browser/metrics/ios_chrome_signin_and_sync_status_metrics_provider.h"
#import "ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.h"
#import "ios/chrome/browser/metrics/ios_feed_activity_metrics_provider.h"
#import "ios/chrome/browser/metrics/ios_feed_enabled_metrics_provider.h"
#import "ios/chrome/browser/metrics/ios_profile_session_metrics_provider.h"
#import "ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.h"
Expand Down Expand Up @@ -350,6 +351,9 @@ void GetNetworkConnectionTrackerAsync(
std::make_unique<metrics::ChromeBrowserStateClient>(),
metrics::MetricsLogUploader::MetricServiceType::UMA));

metrics_service_->RegisterMetricsProvider(
std::make_unique<IOSFeedActivityMetricsProvider>());

metrics_service_->RegisterMetricsProvider(
CreateIOSProfileSessionMetricsProvider());

Expand Down
Expand Up @@ -96,7 +96,7 @@ void SetUp() override {

// This is the number of metrics providers that are registered inside
// IOSChromeMetricsServiceClient::Initialize().
expected_providers += 18;
expected_providers += 19;

std::unique_ptr<IOSChromeMetricsServiceClient> chrome_metrics_service_client =
IOSChromeMetricsServiceClient::Create(metrics_state_manager_.get());
Expand Down
29 changes: 29 additions & 0 deletions ios/chrome/browser/metrics/ios_feed_activity_metrics_provider.h
@@ -0,0 +1,29 @@
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_METRICS_IOS_FEED_ACTIVITY_METRICS_PROVIDER_H_
#define IOS_CHROME_BROWSER_METRICS_IOS_FEED_ACTIVITY_METRICS_PROVIDER_H_

#include "components/metrics/metrics_provider.h"

NSString* const kActivityBucketKey = @"FeedActivityBucket";
const char kAllFeedsActivityBucketsByProviderHistogram[] =
"ContentSuggestions.Feed.AllFeeds.Activity.ByProvider";

class IOSFeedActivityMetricsProvider : public metrics::MetricsProvider {
public:
explicit IOSFeedActivityMetricsProvider();
IOSFeedActivityMetricsProvider(const IOSFeedActivityMetricsProvider&) =
delete;
IOSFeedActivityMetricsProvider& operator=(
const IOSFeedActivityMetricsProvider&) = delete;

~IOSFeedActivityMetricsProvider() override;

// metrics::MetricsProvider
void ProvideCurrentSessionData(
metrics::ChromeUserMetricsExtension* uma_proto) override;
};

#endif // IOS_CHROME_BROWSER_METRICS_IOS_FEED_ACTIVITY_METRICS_PROVIDER_H_
24 changes: 24 additions & 0 deletions ios/chrome/browser/metrics/ios_feed_activity_metrics_provider.mm
@@ -0,0 +1,24 @@
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import "ios/chrome/browser/metrics/ios_feed_activity_metrics_provider.h"
#import "base/mac/foundation_util.h"
#import "base/metrics/histogram_functions.h"

#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif

IOSFeedActivityMetricsProvider::IOSFeedActivityMetricsProvider() {}

IOSFeedActivityMetricsProvider::~IOSFeedActivityMetricsProvider() {}

void IOSFeedActivityMetricsProvider::ProvideCurrentSessionData(
metrics::ChromeUserMetricsExtension* uma_proto) {
// Retrieve activity bucket from storage.
int activityBucket = (int)[[NSUserDefaults standardUserDefaults]
integerForKey:kActivityBucketKey];
base::UmaHistogramExactLinear(kAllFeedsActivityBucketsByProviderHistogram,
activityBucket, 4);
}
Expand Up @@ -2,22 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_provider.h"
#import "ios/chrome/browser/metrics/ios_feed_activity_metrics_provider.h"

#import "base/test/metrics/histogram_tester.h"
#import "ios/chrome/browser/ui/ntp/metrics/feed_metrics_constants.h"
#import "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
#import "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"

#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif

// Tests metrics that are recorded and uploaded by
// FeedMetricsProvider.
class FeedMetricsProviderTest : public PlatformTest {
// IOSFeedActivityMetricsProvider.
class IOSFeedActivityMetricsProviderTest : public PlatformTest {
public:
FeedMetricsProviderTest() {
IOSFeedActivityMetricsProviderTest() {
histogram_tester_.reset(new base::HistogramTester());
}

Expand All @@ -27,8 +27,8 @@
};

// Tests the implementation of ProvideCurrentSessionData
TEST_F(FeedMetricsProviderTest, ProvideCurrentSessionData) {
FeedMetricsProvider provider;
TEST_F(IOSFeedActivityMetricsProviderTest, ProvideCurrentSessionData) {
IOSFeedActivityMetricsProvider provider;
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:1 forKey:kActivityBucketKey];
provider.ProvideCurrentSessionData(nullptr /* uma_proto */);
Expand Down
3 changes: 0 additions & 3 deletions ios/chrome/browser/ui/ntp/metrics/BUILD.gn
Expand Up @@ -7,8 +7,6 @@ source_set("metrics") {
sources = [
"feed_metrics_constants.h",
"feed_metrics_constants.mm",
"feed_metrics_provider.h",
"feed_metrics_provider.mm",
"feed_metrics_recorder+testing.h",
"feed_metrics_recorder.h",
"feed_metrics_recorder.mm",
Expand Down Expand Up @@ -47,7 +45,6 @@ source_set("unit_tests") {
configs += [ "//build/config/compiler:enable_arc" ]
testonly = true
sources = [
"feed_metrics_provider_unittest.mm",
"feed_metrics_recorder_unittest.mm",
"feed_session_recorder_unittest.mm",
]
Expand Down
4 changes: 0 additions & 4 deletions ios/chrome/browser/ui/ntp/metrics/feed_metrics_constants.h
Expand Up @@ -217,7 +217,6 @@ enum class FeedSortType {
kMaxValue = kSortedByLatest,
};

// TODO(crbug.com/1447234): Clean up the kError enum.
// The values for the Feed Activity Buckets metric.
enum class FeedActivityBucket {
// No activity bucket for users active 0/28 days.
Expand Down Expand Up @@ -250,9 +249,6 @@ extern const char kAllFeedsEngagementTypeHistogram[];
// Histogram name for the feed activity bucket metric.
extern const char kAllFeedsActivityBucketsHistogram[];

// Histogram name for the feed activity bucket filter.
extern const char kAllFeedsActivityBucketsByProviderHistogram[];

// Histogram name for a Discover feed card shown at index.
extern const char kDiscoverFeedCardShownAtIndex[];

Expand Down
2 changes: 0 additions & 2 deletions ios/chrome/browser/ui/ntp/metrics/feed_metrics_constants.mm
Expand Up @@ -57,8 +57,6 @@
"ContentSuggestions.Feed.WebFeed.Shown";
const char kAllFeedsActivityBucketsHistogram[] =
"ContentSuggestions.Feed.AllFeeds.Activity";
const char kAllFeedsActivityBucketsByProviderHistogram[] =
"ContentSuggestions.Feed.AllFeeds.Activity.ByProvider";
const char kDiscoverFeedNoticeCardFulfilled[] =
"ContentSuggestions.Feed.NoticeCardFulfilled2";
const char kDiscoverFeedArticlesFetchNetworkDurationSuccess[] =
Expand Down
23 changes: 0 additions & 23 deletions ios/chrome/browser/ui/ntp/metrics/feed_metrics_provider.h

This file was deleted.

25 changes: 0 additions & 25 deletions ios/chrome/browser/ui/ntp/metrics/feed_metrics_provider.mm

This file was deleted.

0 comments on commit 8ad26ff

Please sign in to comment.