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_UI_WEBUI_SIGNIN_INLINE_LOGIN_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_SIGNIN_INLINE_LOGIN_HANDLER_H_
7
8#include "content/public/browser/web_ui_message_handler.h"
9
10// The base class handler for the inline login WebUI.
11class InlineLoginHandler : public content::WebUIMessageHandler {
12 public:
13  InlineLoginHandler();
14  virtual ~InlineLoginHandler();
15
16  // content::WebUIMessageHandler overrides:
17  virtual void RegisterMessages() OVERRIDE;
18
19 protected:
20  // Enum for gaia auth mode, must match AuthMode defined in
21  // chrome/browser/resources/gaia_auth_host/gaia_auth_host.js.
22  enum AuthMode {
23    kDefaultAuthMode = 0,
24    kOfflineAuthMode = 1,
25    kDesktopAuthMode = 2
26  };
27
28 private:
29  // JS callback to initialize the gaia auth extension. It calls
30  // |SetExtraInitParams| to set extra init params.
31  void HandleInitializeMessage(const base::ListValue* args);
32  // JS callback to complete login. It calls |CompleteLogin| to do the real
33  // work.
34  void HandleCompleteLoginMessage(const base::ListValue* args);
35
36  // JS callback to switch the UI from a constrainted dialog to a full tab.
37  void HandleSwitchToFullTabMessage(const base::ListValue* args);
38
39  virtual void SetExtraInitParams(base::DictionaryValue& params) {}
40  virtual void CompleteLogin(const base::ListValue* args) = 0;
41
42  DISALLOW_COPY_AND_ASSIGN(InlineLoginHandler);
43};
44
45#endif  // CHROME_BROWSER_UI_WEBUI_SIGNIN_INLINE_LOGIN_HANDLER_H_
46