1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_ACCOUNT_SCREEN_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_LOGIN_ACCOUNT_SCREEN_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/account_creation_view.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/screen_observer.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/view_screen.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/web_page_screen.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/web_page_view.h"
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/tab_contents_delegate.h"
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GURL;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WizardScreenDelegate;
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// AccountScreen is shown when user is creating new Google Account.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AccountScreen : public ViewScreen<AccountCreationView>,
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                      public WebPageScreen,
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                      public WebPageDelegate,
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                      public AccountCreationViewDelegate {
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit AccountScreen(WizardScreenDelegate* delegate);
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~AccountScreen();
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // WebPageDelegate implementation:
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnPageLoaded();
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnPageLoadFailed(const std::string& url);
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AccountCreationViewDelegate implementation:
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnUserCreated(const std::string& username,
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                             const std::string& password);
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Sets the url for account creation. Used in tests.
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static void set_new_account_page_url(const GURL& url);
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Sets the flag forcing to check for HTTPS. Used in tests.
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static void set_check_for_https(bool check) { check_for_https_ = check; }
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // ViewScreen implementation:
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void CreateView();
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Refresh();
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual AccountCreationView* AllocateView();
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // TabContentsDelegate implementation:
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void NavigationStateChanged(const TabContents* source,
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                      unsigned changed_flags);
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void LoadingStateChanged(TabContents* source);
563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // WebPageScreen implementation:
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void CloseScreen(ScreenObserver::ExitCodes code);
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Url of account creation page. Overriden by tests.
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static scoped_ptr<GURL> new_account_page_url_;
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Indicates if we should check for HTTPS scheme. Overriden by tests.
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static bool check_for_https_;
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(AccountScreen);
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace chromeos
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_ACCOUNT_SCREEN_H_
72