blob: 4f8afac0a51a2d0806d08db9a9c42b589223ce48 [file] [log] [blame]
// Copyright (c) 2012 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 "chrome/browser/ui/webui/sync_promo/sync_promo_trial.h"
#include "base/logging.h"
#include "chrome/browser/metrics/metrics_service.h"
#include "chrome/browser/signin/signin_promo.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
namespace {
enum {
UMA_START_PAGE_SHOWN = 0,
UMA_START_PAGE_SIGNED_IN,
UMA_NTP_LINK_SHOWN,
UMA_NTP_LINK_SIGNED_IN,
UMA_MENU_SHOWN,
UMA_MENU_SIGNED_IN,
UMA_SETTINGS_SHOWN,
UMA_SETTINGS_SIGNED_IN,
UMA_EXTENSION_INSTALL_BUBBLE_SHOWN,
UMA_EXTENSION_INSTALL_BUBBLE_SIGNED_IN,
UMA_UNKNOWN_SHOWN,
UMA_UNKNOWN_SIGNED_IN,
UMA_WEBSTORE_INSTALL_SHOWN,
UMA_WEBSTORE_INSTALL_SIGNED_IN,
UMA_APP_LAUNCHER_SHOWN,
UMA_APP_LAUNCHER_SIGNED_IN,
UMA_APPS_PAGE_LINK_SHOWN,
UMA_APPS_PAGE_LINK_SIGNED_IN,
UMA_BOOKMARK_BUBBLE_SHOWN,
UMA_BOOKMARK_BUBBLE_SIGNED_IN,
UMA_MAX,
};
} // namespace
namespace sync_promo_trial {
void RecordUserShownPromo(content::WebUI* web_ui) {
signin::Source source =
signin::GetSourceForPromoURL(web_ui->GetWebContents()->GetURL());
int uma = 0;
switch (source) {
case signin::SOURCE_START_PAGE:
uma = UMA_START_PAGE_SHOWN;
break;
case signin::SOURCE_NTP_LINK:
uma = UMA_NTP_LINK_SHOWN;
break;
case signin::SOURCE_MENU:
uma = UMA_MENU_SHOWN;
break;
case signin::SOURCE_SETTINGS:
uma = UMA_SETTINGS_SHOWN;
break;
case signin::SOURCE_EXTENSION_INSTALL_BUBBLE:
uma = UMA_EXTENSION_INSTALL_BUBBLE_SHOWN;
break;
case signin::SOURCE_WEBSTORE_INSTALL:
uma = UMA_WEBSTORE_INSTALL_SHOWN;
break;
case signin::SOURCE_APP_LAUNCHER:
uma = UMA_APP_LAUNCHER_SHOWN;
break;
case signin::SOURCE_APPS_PAGE_LINK:
uma = UMA_APPS_PAGE_LINK_SHOWN;
break;
case signin::SOURCE_BOOKMARK_BUBBLE:
uma = UMA_BOOKMARK_BUBBLE_SHOWN;
break;
case signin::SOURCE_UNKNOWN:
uma = UMA_UNKNOWN_SHOWN;
break;
default:
// If this assert hits, then the signin::Source enum has
// changed and the UMA enum above, this switch statement and
// histograms.xml all need to be updated to reflect that.
COMPILE_ASSERT(signin::SOURCE_UNKNOWN == 9,
kSourceEnumHasChangedButNotThisSwitchStatement);
NOTREACHED();
break;
}
UMA_HISTOGRAM_ENUMERATION("SyncPromo.ShowAndSignIn", uma, UMA_MAX);
}
void RecordUserSignedIn(content::WebUI* web_ui) {
signin::Source source =
signin::GetSourceForPromoURL(web_ui->GetWebContents()->GetURL());
int uma = 0;
switch (source) {
case signin::SOURCE_START_PAGE:
uma = UMA_START_PAGE_SIGNED_IN;
break;
case signin::SOURCE_NTP_LINK:
uma = UMA_NTP_LINK_SIGNED_IN;
break;
case signin::SOURCE_MENU:
uma = UMA_MENU_SIGNED_IN;
break;
case signin::SOURCE_SETTINGS:
uma = UMA_SETTINGS_SIGNED_IN;
break;
case signin::SOURCE_EXTENSION_INSTALL_BUBBLE:
uma = UMA_EXTENSION_INSTALL_BUBBLE_SIGNED_IN;
break;
case signin::SOURCE_WEBSTORE_INSTALL:
uma = UMA_WEBSTORE_INSTALL_SIGNED_IN;
break;
case signin::SOURCE_APP_LAUNCHER:
uma = UMA_APP_LAUNCHER_SIGNED_IN;
break;
case signin::SOURCE_APPS_PAGE_LINK:
uma = UMA_APPS_PAGE_LINK_SIGNED_IN;
break;
case signin::SOURCE_BOOKMARK_BUBBLE:
uma = UMA_BOOKMARK_BUBBLE_SIGNED_IN;
break;
case signin::SOURCE_UNKNOWN:
uma = UMA_UNKNOWN_SIGNED_IN;
break;
default:
// This switch statement needs to be updated when the enum Source changes.
COMPILE_ASSERT(signin::SOURCE_UNKNOWN == 9,
kSourceEnumHasChangedButNotThisSwitchStatement);
NOTREACHED();
break;
}
UMA_HISTOGRAM_ENUMERATION("SyncPromo.ShowAndSignIn", uma, UMA_MAX);
}
} // namespace sync_promo_trial