Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / chromeos / login / network_screen_handler.h
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_NETWORK_SCREEN_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_NETWORK_SCREEN_HANDLER_H_
7
8 #include <string>
9
10 #include "base/compiler_specific.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/chromeos/login/screens/network_screen_actor.h"
13 #include "chrome/browser/chromeos/settings/cros_settings.h"
14 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
15 #include "chromeos/ime/component_extension_ime_manager.h"
16 #include "chromeos/ime/input_method_manager.h"
17 #include "ui/gfx/point.h"
18
19 namespace chromeos {
20
21 class CoreOobeActor;
22 class IdleDetector;
23
24 struct NetworkScreenHandlerOnLanguageChangedCallbackData;
25
26 // WebUI implementation of NetworkScreenActor. It is used to interact with
27 // the welcome screen (part of the page) of the OOBE.
28 class NetworkScreenHandler : public NetworkScreenActor,
29                              public BaseScreenHandler,
30                              public input_method::InputMethodManager::Observer {
31  public:
32   explicit NetworkScreenHandler(CoreOobeActor* core_oobe_actor);
33   virtual ~NetworkScreenHandler();
34
35   // NetworkScreenActor implementation:
36   virtual void SetDelegate(NetworkScreenActor::Delegate* screen) OVERRIDE;
37   virtual void PrepareToShow() OVERRIDE;
38   virtual void Show() OVERRIDE;
39   virtual void Hide() OVERRIDE;
40   virtual void ShowError(const base::string16& message) OVERRIDE;
41   virtual void ClearErrors() OVERRIDE;
42   virtual void ShowConnectingStatus(bool connecting,
43                                     const base::string16& network_id) OVERRIDE;
44   virtual void EnableContinue(bool enabled) OVERRIDE;
45
46   // BaseScreenHandler implementation:
47   virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
48   virtual void GetAdditionalParameters(base::DictionaryValue* dict) OVERRIDE;
49   virtual void Initialize() OVERRIDE;
50
51   // WebUIMessageHandler implementation:
52   virtual void RegisterMessages() OVERRIDE;
53
54   // InputMethodManager::Observer implementation:
55   virtual void InputMethodChanged(input_method::InputMethodManager* manager,
56                                   bool show_message) OVERRIDE;
57
58   // Reloads localized contents.
59   void ReloadLocalizedContent();
60
61  private:
62   // Handles moving off the screen.
63   void HandleOnExit();
64
65   // Handles change of the language.
66   void HandleOnLanguageChanged(const std::string& locale);
67
68   // Async callback after ReloadResourceBundle(locale) completed.
69   static void OnLanguageChangedCallback(
70       scoped_ptr<NetworkScreenHandlerOnLanguageChangedCallbackData> context,
71       const std::string& requested_locale,
72       const std::string& loaded_locale,
73       const bool success);
74
75   // Handles change of the input method.
76   void HandleOnInputMethodChanged(const std::string& id);
77
78   // Handles change of the time zone
79   void HandleOnTimezoneChanged(const std::string& timezone);
80
81   // Callback when the system timezone settings is changed.
82   void OnSystemTimezoneChanged();
83
84   // Returns available timezones. Caller gets the ownership.
85   static base::ListValue* GetTimezoneList();
86
87   NetworkScreenActor::Delegate* screen_;
88   CoreOobeActor* core_oobe_actor_;
89
90   bool is_continue_enabled_;
91
92   // Keeps whether screen should be shown right after initialization.
93   bool show_on_init_;
94
95   // Position of the network control.
96   gfx::Point network_control_pos_;
97
98   scoped_ptr<CrosSettings::ObserverSubscription> timezone_subscription_;
99
100   // The exact language code selected by user in the menu.
101   std::string selected_language_code_;
102
103   base::WeakPtrFactory<NetworkScreenHandler> weak_ptr_factory_;
104
105   DISALLOW_COPY_AND_ASSIGN(NetworkScreenHandler);
106 };
107
108 }  // namespace chromeos
109
110 #endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_NETWORK_SCREEN_HANDLER_H_