1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_GAIA_SCREEN_HANDLER_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_GAIA_SCREEN_HANDLER_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <string>
96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/command_line.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/ref_counted.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/login/screens/core_oobe_actor.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "net/base/net_errors.h"
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace policy {
186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class ConsumerManagementService;
196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace chromeos {
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SigninScreenHandler;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// A class that's used to specify the way how Gaia should be loaded.
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct GaiaContext {
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GaiaContext();
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Forces Gaia to reload.
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool force_reload;
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Whether local verison of Gaia is used.
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_local;
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // True if password was changed for the current user.
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool password_changed;
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // True if user pods can be displyed.
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool show_users;
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Whether Gaia should be loaded in offline mode.
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool use_offline;
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // True if user list is non-empty.
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool has_users;
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Email of current user.
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  std::string email;
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Whether consumer management enrollment is in progress.
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  bool is_enrolling_consumer_management;
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// A class that handles WebUI hooks in Gaia screen.
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class GaiaScreenHandler : public BaseScreenHandler {
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  enum FrameState {
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    FRAME_STATE_UNKNOWN = 0,
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    FRAME_STATE_LOADING,
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    FRAME_STATE_LOADED,
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    FRAME_STATE_ERROR
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  };
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  GaiaScreenHandler(
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      CoreOobeActor* core_oobe_actor,
666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      const scoped_refptr<NetworkStateInformer>& network_state_informer,
676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      policy::ConsumerManagementService* consumer_management);
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~GaiaScreenHandler();
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void LoadGaia(const GaiaContext& context);
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void UpdateGaia(const GaiaContext& context);
725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Sends request to reload Gaia. If |force_reload| is true, request
745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // will be sent in any case, otherwise it will be sent only when Gaia is
755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // not loading right now.
765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void ReloadGaia(bool force_reload);
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  FrameState frame_state() const { return frame_state_; }
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  net::Error frame_error() const { return frame_error_; }
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO (ygorshenin@): remove this dependency.
83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  friend class SigninScreenHandler;
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // BaseScreenHandler implementation:
86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void Initialize() OVERRIDE;
88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // WebUIMessageHandler implementation:
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void RegisterMessages() OVERRIDE;
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // WebUI message handlers.
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void HandleFrameLoadingCompleted(int status);
9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void HandleCompleteAuthentication(const std::string& email,
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                    const std::string& password,
9646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                    const std::string& auth_code);
9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void HandleCompleteLogin(const std::string& typed_email,
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           const std::string& password,
9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           bool using_saml);
10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void HandleUsingSAMLAPI();
10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void HandleScrapedPasswordCount(int password_count);
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void HandleScrapedPasswordVerificationFailed();
10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void HandleGaiaUIReady();
10646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1076e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // This is called when ConsumerManagementService::SetOwner() returns.
1086e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  void OnSetOwnerDone(const std::string& typed_email,
1096e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                      const std::string& password,
1106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                      bool using_saml,
1116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                      bool success);
1126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Really handles the complete login message.
1146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  void DoCompleteLogin(const std::string& typed_email,
1156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                       const std::string& password,
1166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                       bool using_saml);
1176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Fill GAIA user name.
11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void PopulateEmail(const std::string& user_id);
12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Mark user as having password changed:
12246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void PasswordChangedFor(const std::string& user_id);
12346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Kick off cookie / local storage cleanup.
12546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void StartClearingCookies(const base::Closure& on_clear_callback);
12646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void OnCookiesCleared(const base::Closure& on_clear_callback);
12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Kick off DNS cache flushing.
12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void StartClearingDnsCache();
13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void OnDnsCleared();
13146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
13246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Show sign-in screen for the given credentials.
13346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void ShowSigninScreenForCreds(const std::string& username,
13446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                        const std::string& password);
13546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Attempts login for test.
13646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void SubmitLoginFormForTest();
13746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
13846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Updates the member variable and UMA histogram indicating whether the
13946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // principals API was used during SAML login.
14046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void SetSAMLPrincipalsAPIUsed(bool api_used);
14146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void ShowGaia(bool is_enrolling_consumer_management);
14346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
14446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Shows signin screen after dns cache and cookie cleanup operations finish.
14546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void ShowGaiaScreenIfReady();
14646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
14746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Decides whether an auth extension should be pre-loaded. If it should,
14846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // pre-loads it.
14946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void MaybePreloadAuthExtension();
15046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
15146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Tells webui to load authentication extension. |force| is used to force the
15246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // extension reloading, if it has already been loaded. |silent_load| is true
15346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // for cases when extension should be loaded in the background and it
15446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // shouldn't grab the focus. |offline| is true when offline version of the
15546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // extension should be used.
15646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void LoadAuthExtension(bool force, bool silent_load, bool offline);
157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO (ygorshenin@): GaiaScreenHandler should implement
159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // NetworkStateInformer::Observer.
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void UpdateState(ErrorScreenActor::ErrorReason reason);
161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO (ygorshenin@): remove this dependency.
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SetSigninScreenHandler(SigninScreenHandler* handler);
164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
16546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  SigninScreenHandlerDelegate* Delegate();
16646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Current state of Gaia frame.
168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  FrameState frame_state_;
169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Latest Gaia frame error.
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  net::Error frame_error_;
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Network state informer used to keep signin screen up.
174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_refptr<NetworkStateInformer> network_state_informer_;
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  // Consumer management service for checking if enrollment is in progress.
1776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  policy::ConsumerManagementService* consumer_management_;
1786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  CoreOobeActor* core_oobe_actor_;
1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
18146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Email to pre-populate with.
18246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::string populated_email_;
18346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
18446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Emails of the users, whose passwords have recently been changed.
18546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::set<std::string> password_changed_for_;
18646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
18746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // True if dns cache cleanup is done.
18846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool dns_cleared_;
18946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
19046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // True if DNS cache task is already running.
19146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool dns_clear_task_running_;
19246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
19346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // True if cookie jar cleanup is done.
19446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool cookies_cleared_;
19546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
19646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Is focus still stolen from Gaia page?
19746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool focus_stolen_;
19846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
19946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Has Gaia page silent load been started for the current sign-in attempt?
20046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool gaia_silent_load_;
20146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
20246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // The active network at the moment when Gaia page was preloaded.
20346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::string gaia_silent_load_network_;
20446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
20546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // If the user authenticated via SAML, this indicates whether the principals
20646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // API was used.
20746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool using_saml_api_;
20846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Whether consumer management enrollment is in progress.
2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  bool is_enrolling_consumer_management_;
2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
21246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Test credentials.
21346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::string test_user_;
21446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::string test_pass_;
21546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool test_expects_complete_login_;
21646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Non-owning ptr to SigninScreenHandler instance. Should not be used
218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // in dtor.
219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO (ygorshenin@): GaiaScreenHandler shouldn't communicate with
220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // signin_screen_handler directly.
221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SigninScreenHandler* signin_screen_handler_;
222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
22346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  base::WeakPtrFactory<GaiaScreenHandler> weak_factory_;
22446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GaiaScreenHandler);
226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace chromeos
229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_GAIA_SCREEN_HANDLER_H_
231