| Index: chrome/browser/chromeos/first_run/first_run_controller.cc
|
| diff --git a/chrome/browser/chromeos/first_run/first_run_controller.cc b/chrome/browser/chromeos/first_run/first_run_controller.cc
|
| index 65ed426262490cad3ad76a610e7dbaf2ea45b2b7..bda111790fcafc9034e391ba48130f44ab35fe59 100644
|
| --- a/chrome/browser/chromeos/first_run/first_run_controller.cc
|
| +++ b/chrome/browser/chromeos/first_run/first_run_controller.cc
|
| @@ -7,7 +7,9 @@
|
| #include "ash/shell.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop/message_loop.h"
|
| +#include "base/metrics/histogram.h"
|
| #include "chrome/browser/chromeos/first_run/first_run_view.h"
|
| +#include "chrome/browser/chromeos/first_run/metrics.h"
|
| #include "chrome/browser/chromeos/first_run/steps/app_list_step.h"
|
| #include "chrome/browser/chromeos/first_run/steps/help_step.h"
|
| #include "chrome/browser/chromeos/first_run/steps/tray_step.h"
|
| @@ -23,6 +25,12 @@ size_t NONE_STEP_INDEX = std::numeric_limits<size_t>::max();
|
| // running now.
|
| chromeos::FirstRunController* g_instance;
|
|
|
| +void RecordCompletion(chromeos::first_run::TutorialCompletion type) {
|
| + UMA_HISTOGRAM_ENUMERATION("CrosFirstRun.TutorialCompletion",
|
| + type,
|
| + chromeos::first_run::kTutorialCompletionSize);
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace chromeos {
|
| @@ -61,6 +69,7 @@ FirstRunController::FirstRunController()
|
| }
|
|
|
| void FirstRunController::Init() {
|
| + start_time_ = base::Time::Now();
|
| UserManager* user_manager = UserManager::Get();
|
| user_profile_ = user_manager->GetProfileByUser(user_manager->GetActiveUser());
|
|
|
| @@ -81,6 +90,14 @@ void FirstRunController::Init() {
|
| }
|
|
|
| void FirstRunController::Finalize() {
|
| + int furthest_step = current_step_index_ == NONE_STEP_INDEX
|
| + ? steps_.size() - 1
|
| + : current_step_index_;
|
| + UMA_HISTOGRAM_ENUMERATION("CrosFirstRun.FurthestStep",
|
| + furthest_step,
|
| + steps_.size());
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("CrosFirstRun.TimeSpent",
|
| + base::Time::Now() - start_time_);
|
| if (GetCurrentStep())
|
| GetCurrentStep()->OnBeforeHide();
|
| steps_.clear();
|
| @@ -103,6 +120,7 @@ void FirstRunController::OnNextButtonClicked(const std::string& step_name) {
|
| }
|
|
|
| void FirstRunController::OnHelpButtonClicked() {
|
| + RecordCompletion(first_run::kTutorialCompletedWithKeepExploring);
|
| on_actor_finalized_ = base::Bind(chrome::ShowHelpForProfile,
|
| user_profile_,
|
| chrome::HOST_DESKTOP_TYPE_ASH,
|
| @@ -135,6 +153,7 @@ void FirstRunController::OnActorDestroyed() {
|
| }
|
|
|
| void FirstRunController::OnCancelled() {
|
| + RecordCompletion(first_run::kTutorialNotFinished);
|
| Stop();
|
| }
|
|
|
| @@ -149,10 +168,12 @@ void FirstRunController::RegisterSteps() {
|
|
|
| void FirstRunController::ShowNextStep() {
|
| AdvanceStep();
|
| - if (GetCurrentStep())
|
| - GetCurrentStep()->Show();
|
| - else
|
| + if (!GetCurrentStep()) {
|
| actor_->Finalize();
|
| + RecordCompletion(first_run::kTutorialCompletedWithGotIt);
|
| + return;
|
| + }
|
| + GetCurrentStep()->Show();
|
| }
|
|
|
| void FirstRunController::AdvanceStep() {
|
|
|