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_LOGIN_SCREENS_APP_LAUNCH_SPLASH_SCREEN_ACTOR_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_APP_LAUNCH_SPLASH_SCREEN_ACTOR_H_
7
8#include "base/strings/string16.h"
9
10namespace chromeos {
11
12// Interface for UI implemenations of the ApplaunchSplashScreen.
13class AppLaunchSplashScreenActor {
14 public:
15  enum AppLaunchState {
16    APP_LAUNCH_STATE_LOADING_AUTH_FILE,
17    APP_LAUNCH_STATE_LOADING_TOKEN_SERVICE,
18    APP_LAUNCH_STATE_PREPARING_NETWORK,
19    APP_LAUNCH_STATE_INSTALLING_APPLICATION,
20    APP_LAUNCH_STATE_WAITING_APP_WINDOW,
21    APP_LAUNCH_STATE_NETWORK_WAIT_TIMEOUT,
22  };
23
24  class Delegate {
25   public:
26    // Invoked when the configure network control is clicked.
27    virtual void OnConfigureNetwork() = 0;
28
29    // Invoked when the app launch bailout shortcut key is pressed.
30    virtual void OnCancelAppLaunch() = 0;
31
32    // Invoked when the network config shortcut key is pressed.
33    virtual void OnNetworkConfigRequested(bool requested) = 0;
34
35    // Invoked when network state is changed. |online| is true if the device
36    // is connected to the Internet.
37    virtual void OnNetworkStateChanged(bool online) = 0;
38
39   protected:
40    virtual ~Delegate() {}
41  };
42
43  virtual ~AppLaunchSplashScreenActor() {}
44
45  // Sets screen this actor belongs to.
46  virtual void SetDelegate(Delegate* screen) = 0;
47
48  // Prepare the contents to showing.
49  virtual void PrepareToShow() = 0;
50
51  // Shows the contents of the screen.
52  virtual void Show(const std::string& app_id) = 0;
53
54  // Hides the contents of the screen.
55  virtual void Hide() = 0;
56
57  // Set the current app launch state.
58  virtual void UpdateAppLaunchState(AppLaunchState state) = 0;
59
60  // Sets whether configure network control is visible.
61  virtual void ToggleNetworkConfig(bool visible) = 0;
62
63  // Shows the network error and configure UI.
64  virtual void ShowNetworkConfigureUI() = 0;
65
66  // Returns true if the default network has Internet access.
67  virtual bool IsNetworkReady() = 0;
68};
69
70}  // namespace chromeos
71
72#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_APP_LAUNCH_SPLASH_SCREEN_ACTOR_H_
73