| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_FIRST_RUN_FIRST_RUN_CONTROLLER_H_ |
| #define CHROME_BROWSER_CHROMEOS_FIRST_RUN_FIRST_RUN_CONTROLLER_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "ash/first_run/first_run_helper.h" |
| #include "base/basictypes.h" |
| #include "base/callback.h" |
| #include "base/compiler_specific.h" |
| #include "base/memory/linked_ptr.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/ui/webui/chromeos/first_run/first_run_actor.h" |
| |
| class Profile; |
| |
| namespace content { |
| class WebContents; |
| } |
| |
| namespace chromeos { |
| |
| class FirstRunUIBrowserTest; |
| |
| namespace first_run { |
| class Step; |
| } |
| |
| // FirstRunController creates and manages first-run tutorial. |
| // Object manages its lifetime and deletes itself after completion of the |
| // tutorial. |
| class FirstRunController : public FirstRunActor::Delegate, |
| public ash::FirstRunHelper::Observer { |
| typedef std::vector<linked_ptr<first_run::Step> > Steps; |
| |
| public: |
| virtual ~FirstRunController(); |
| |
| // Creates first-run UI and starts tutorial. |
| static void Start(); |
| |
| // Finalizes first-run tutorial and destroys UI. |
| static void Stop(); |
| |
| private: |
| friend class FirstRunUIBrowserTest; |
| |
| FirstRunController(); |
| void Init(); |
| void Finalize(); |
| |
| static FirstRunController* GetInstanceForTest(); |
| |
| // Overriden from FirstRunActor::Delegate. |
| virtual void OnActorInitialized() OVERRIDE; |
| virtual void OnNextButtonClicked(const std::string& step_name) OVERRIDE; |
| virtual void OnHelpButtonClicked() OVERRIDE; |
| virtual void OnStepShown(const std::string& step_name) OVERRIDE; |
| virtual void OnStepHidden(const std::string& step_name) OVERRIDE; |
| virtual void OnActorFinalized() OVERRIDE; |
| virtual void OnActorDestroyed() OVERRIDE; |
| |
| // Overriden from ash::FirstRunHelper::Observer. |
| virtual void OnCancelled() OVERRIDE; |
| |
| void RegisterSteps(); |
| void ShowNextStep(); |
| void AdvanceStep(); |
| first_run::Step* GetCurrentStep() const; |
| |
| // The object providing interface to UI layer. It's not directly owned by |
| // FirstRunController. |
| FirstRunActor* actor_; |
| |
| // Helper for manipulating and retreiving information from Shell. |
| scoped_ptr<ash::FirstRunHelper> shell_helper_; |
| |
| // List of all tutorial steps. |
| Steps steps_; |
| |
| // Index of step that is currently shown. |
| size_t current_step_index_; |
| |
| // Profile used for webui and help app. |
| Profile* user_profile_; |
| |
| // The work that should be made after actor has been finalized. |
| base::Closure on_actor_finalized_; |
| |
| // Web contents of WebUI. |
| content::WebContents* web_contents_for_tests_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FirstRunController); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_FIRST_RUN_FIRST_RUN_CONTROLLER_H_ |
| |