Chromium Code Reviews| Index: chrome/browser/chromeos/first_run/step.cc |
| diff --git a/chrome/browser/chromeos/first_run/step.cc b/chrome/browser/chromeos/first_run/step.cc |
| index a26950c8667f72a6ec04dbc19e2e1e63a22e2aa8..3cab16a0faf5894bf956a204712e4b23c1f2b93a 100644 |
| --- a/chrome/browser/chromeos/first_run/step.cc |
| +++ b/chrome/browser/chromeos/first_run/step.cc |
| @@ -4,11 +4,36 @@ |
| #include "chrome/browser/chromeos/first_run/step.h" |
| +#include <cctype> |
| + |
| #include "ash/first_run/first_run_helper.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/metrics/histogram.h" |
| #include "chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h" |
| #include "ui/gfx/size.h" |
| #include "ui/views/widget/widget.h" |
| +namespace { |
| + |
| +// Converts from "with-dashes-names" to "WithDashesNames". |
| +std::string ToCamelCase(const std::string& name) { |
| + std::string result; |
| + bool next_to_upper = true; |
| + for (size_t i = 0; i < name.length(); ++i) { |
| + if (name[i] == '-') { |
| + next_to_upper = true; |
| + } else if (next_to_upper) { |
| + result.push_back(std::toupper(name[i])); |
| + next_to_upper = false; |
| + } else { |
| + result.push_back(name[i]); |
| + } |
| + } |
| + return result; |
| +} |
| + |
| +} // namespace |
| + |
| namespace chromeos { |
| namespace first_run { |
| @@ -20,19 +45,42 @@ Step::Step(const std::string& name, |
| actor_(actor) { |
| } |
| -Step::~Step() {} |
| +Step::~Step() { RecordCompletion(); } |
| + |
| +void Step::Show() { |
| + show_time_ = base::Time::Now(); |
| + DoShow(); |
| +} |
| void Step::OnBeforeHide() { |
| actor()->RemoveBackgroundHoles(); |
| + DoOnBeforeHide(); |
| } |
| void Step::OnAfterHide() { |
| + RecordCompletion(); |
| + DoOnAfterHide(); |
| } |
| gfx::Size Step::GetOverlaySize() const { |
| return shell_helper()->GetOverlayWidget()->GetWindowBoundsInScreen().size(); |
| } |
| +void Step::RecordCompletion() { |
| + if (show_time_.is_null()) |
| + return; |
| + std::string histogram_name = |
| + "CrosFirstRun.TimeSpentOn" + ToCamelCase(name()) + "Step"; |
| + base::HistogramBase* histogram = base::Histogram::FactoryTimeGet( |
|
Alexei Svitkine (slow)
2014/01/15 16:02:38
Nit: Maybe add a comment with an UMA macro declara
dzhioev (left Google)
2014/01/15 22:12:54
Done. Added comment.
|
| + histogram_name, |
| + base::TimeDelta::FromMilliseconds(100), |
| + base::TimeDelta::FromMinutes(3), |
| + 50, |
| + base::HistogramBase::kUmaTargetedHistogramFlag); |
| + histogram->AddTime(base::Time::Now() - show_time_); |
| + show_time_ = base::Time(); |
| +} |
| + |
| } // namespace first_run |
| } // namespace chromeos |