step.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_FIRST_RUN_STEP_H_
6#define CHROME_BROWSER_CHROMEOS_FIRST_RUN_STEP_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/time/time.h"
12
13namespace ash {
14class FirstRunHelper;
15}
16
17namespace gfx {
18class Size;
19}
20
21namespace chromeos {
22
23class FirstRunActor;
24
25namespace first_run {
26
27class Step {
28 public:
29  Step(const std::string& name,
30       ash::FirstRunHelper* shell_helper,
31       FirstRunActor* actor);
32  virtual ~Step();
33
34  // Step shows its content.
35  void Show();
36
37  // Called before hiding step.
38  void OnBeforeHide();
39
40  // Called after step has been hidden.
41  void OnAfterHide();
42
43  const std::string& name() const { return name_; }
44
45 protected:
46  ash::FirstRunHelper* shell_helper() const { return shell_helper_; }
47  FirstRunActor* actor() const { return actor_; }
48  gfx::Size GetOverlaySize() const;
49
50  // Called from Show method.
51  virtual void DoShow() = 0;
52
53  // Called from OnBeforeHide. Step implementation could override this method to
54  // react on corresponding event.
55  virtual void DoOnBeforeHide() {}
56
57  // Called from OnAfterHide. Step implementation could override this method to
58  // react on event.
59  virtual void DoOnAfterHide() {}
60
61 private:
62  // Records time spent on step to UMA.
63  void RecordCompletion();
64
65  std::string name_;
66  ash::FirstRunHelper* shell_helper_;
67  FirstRunActor* actor_;
68  base::Time show_time_;
69
70  DISALLOW_COPY_AND_ASSIGN(Step);
71};
72
73}  // namespace first_run
74}  // namespace chromeos
75
76#endif  // CHROME_BROWSER_CHROMEOS_FIRST_RUN_STEP_H_
77
78