1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_FIRST_RUN_STEP_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_FIRST_RUN_STEP_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/time/time.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace ash { 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class FirstRunHelper; 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace gfx { 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Size; 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace chromeos { 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class FirstRunActor; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace first_run { 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Step { 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Step(const std::string& name, 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ash::FirstRunHelper* shell_helper, 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FirstRunActor* actor); 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~Step(); 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Step shows its content. 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void Show(); 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called before hiding step. 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnBeforeHide(); 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called after step has been hidden. 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnAfterHide(); 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::string& name() const { return name_; } 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected: 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ash::FirstRunHelper* shell_helper() const { return shell_helper_; } 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FirstRunActor* actor() const { return actor_; } 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Size GetOverlaySize() const; 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called from Show method. 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DoShow() = 0; 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called from OnBeforeHide. Step implementation could override this method to 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // react on corresponding event. 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DoOnBeforeHide() {} 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called from OnAfterHide. Step implementation could override this method to 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // react on event. 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DoOnAfterHide() {} 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Records time spent on step to UMA. 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void RecordCompletion(); 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::string name_; 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ash::FirstRunHelper* shell_helper_; 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FirstRunActor* actor_; 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Time show_time_; 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Step); 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace first_run 74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace chromeos 75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_FIRST_RUN_STEP_H_ 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 78