#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
#include <string>
#include "base/memory/scoped_ptr.h"
namespace base {
class DictionaryValue;
}
namespace chromeos {
class FirstRunActor {
 public:
  class Delegate {
   public:
    virtual ~Delegate() {}
    
    virtual void OnActorInitialized() = 0;
    
    virtual void OnNextButtonClicked(const std::string& step_name) = 0;
    
    virtual void OnHelpButtonClicked() = 0;
    
    virtual void OnStepShown(const std::string& step_name) = 0;
    
    virtual void OnStepHidden(const std::string& step_name) = 0;
    
    virtual void OnActorFinalized() = 0;
    
    virtual void OnActorDestroyed() = 0;
  };
  class StepPosition {
   public:
    
    StepPosition();
    
    StepPosition& SetTop(int top);
    StepPosition& SetRight(int right);
    StepPosition& SetBottom(int bottom);
    StepPosition& SetLeft(int left);
    
    scoped_ptr<base::DictionaryValue> AsValue() const;
   private:
    int top_;
    int right_;
    int bottom_;
    int left_;
  };
  FirstRunActor();
  virtual ~FirstRunActor();
  
  
  virtual bool IsInitialized() = 0;
  
  virtual void SetBackgroundVisible(bool visible) = 0;
  
  virtual void AddRectangularHole(int x, int y, int width, int height) = 0;
  
  virtual void AddRoundHole(int x, int y, float radius) = 0;
  
  virtual void RemoveBackgroundHoles() = 0;
  
  virtual void ShowStepPositioned(const std::string& name,
                                  const StepPosition& position) = 0;
  
  virtual void ShowStepPointingTo(const std::string& name,
                                  int x,
                                  int y,
                                  int offset) = 0;
  
  virtual void HideCurrentStep() = 0;
  
  virtual void Finalize() = 0;
  
  virtual bool IsFinalizing() = 0;
  void set_delegate(Delegate* delegate) { delegate_ = delegate; }
  Delegate* delegate() const { return delegate_; }
 private:
  Delegate* delegate_;
};
}  
#endif