1// Copyright (c) 2012 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_UI_WEBUI_CHROMEOS_LOGIN_UPDATE_SCREEN_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_UPDATE_SCREEN_HANDLER_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "chrome/browser/chromeos/login/screens/update_screen_actor.h"
12#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
13#include "chrome/browser/ui/webui/chromeos/login/network_dropdown_handler.h"
14
15namespace chromeos {
16
17class UpdateScreenHandler : public UpdateScreenActor,
18                            public BaseScreenHandler,
19                            public NetworkDropdownHandler::Observer {
20 public:
21  UpdateScreenHandler();
22  virtual ~UpdateScreenHandler();
23
24  // BaseScreenHandler implementation:
25  virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
26  virtual void Initialize() OVERRIDE;
27
28  // UpdateScreenActor implementation:
29  virtual void SetDelegate(UpdateScreenActor::Delegate* screen) OVERRIDE;
30  virtual void Show() OVERRIDE;
31  virtual void Hide() OVERRIDE;
32  virtual void PrepareToShow() OVERRIDE;
33  virtual void ShowManualRebootInfo() OVERRIDE;
34  virtual void SetProgress(int progress) OVERRIDE;
35  virtual void ShowEstimatedTimeLeft(bool visible) OVERRIDE;
36  virtual void SetEstimatedTimeLeft(const base::TimeDelta& time) OVERRIDE;
37  virtual void ShowProgressMessage(bool visible) OVERRIDE;
38  virtual void SetProgressMessage(ProgressMessage message) OVERRIDE;
39  virtual void ShowCurtain(bool visible) OVERRIDE;
40
41  // WebUIMessageHandler implementation:
42  virtual void RegisterMessages() OVERRIDE;
43
44 private:
45  // NetworkDropdownHandler::Observer implementation:
46  virtual void OnConnectToNetworkRequested() OVERRIDE;
47
48#if !defined(OFFICIAL_BUILD)
49  // Called when user presses Escape to cancel update.
50  void HandleUpdateCancel();
51#endif
52
53  UpdateScreenActor::Delegate* screen_;
54
55  // Keeps whether screen should be shown right after initialization.
56  bool show_on_init_;
57
58  DISALLOW_COPY_AND_ASSIGN(UpdateScreenHandler);
59};
60
61}  // namespace chromeos
62
63#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_UPDATE_SCREEN_HANDLER_H_
64