Home | History | Annotate | Download | only in login
      1 // Copyright (c) 2011 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_LOGIN_UI_H_
      6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_LOGIN_UI_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "base/memory/scoped_ptr.h"
     12 #include "chrome/browser/ui/webui/chrome_url_data_manager.h"
     13 #include "content/browser/webui/web_ui.h"
     14 
     15 class Profile;
     16 
     17 namespace chromeos {
     18 
     19 class HTMLOperationsInterface;
     20 
     21 // Boilerplate class that is used to associate the LoginUI code with the URL
     22 // "chrome://login"
     23 class LoginUIHTMLSource : public ChromeURLDataManager::DataSource {
     24  public:
     25   explicit LoginUIHTMLSource(MessageLoop* message_loop);
     26 
     27   virtual void StartDataRequest(const std::string& path,
     28                                 bool is_incognito,
     29                                 int request_id);
     30   virtual std::string GetMimeType(const std::string&) const;
     31 
     32  private:
     33   scoped_ptr<HTMLOperationsInterface> html_operations_;
     34 
     35   DISALLOW_COPY_AND_ASSIGN(LoginUIHTMLSource);
     36 };
     37 
     38 class LoginUIHandler;
     39 class LoginUIHandlerDelegate {
     40  public:
     41   LoginUIHandlerDelegate()
     42       : login_handler_(NULL) { }
     43   // Sign in using |username| and |password| specified.
     44   // Used for both known and new users.
     45   virtual void Login(const std::string& username,
     46                      const std::string& password) = 0;
     47 
     48   // Sign in into Guest session.
     49   virtual void LoginAsGuest() = 0;
     50   // Let the delegate know about the handler it is supposed to be using.
     51   virtual void set_login_handler(LoginUIHandler* login_handler) {
     52     login_handler_ = login_handler;
     53   }
     54  protected:
     55   // Reference to the DOM handling layer for the login screen
     56   LoginUIHandler* login_handler_;
     57 
     58   virtual ~LoginUIHandlerDelegate();
     59 };
     60 
     61 // Main LoginUI handling function. It handles the WebUI hooks that are supplied
     62 // for the login page to use for authentication.
     63 class LoginUIHandler : public WebUIMessageHandler {
     64  public:
     65   LoginUIHandler();
     66 
     67   // WebUIMessageHandler implementation.
     68   virtual WebUIMessageHandler* Attach(WebUI* web_ui);
     69   virtual void RegisterMessages();
     70 
     71   void HandleAuthenticateUser(const ListValue* args);
     72   void HandleLaunchIncognito(const ListValue* args);
     73   void HandleShutdownSystem(const ListValue* args);
     74   void ClearAndEnablePassword();
     75 
     76  protected:
     77   LoginUIHandlerDelegate* delegate_;
     78 
     79  private:
     80   DISALLOW_COPY_AND_ASSIGN(LoginUIHandler);
     81 };
     82 
     83 // Boilerplate class that is used to associate the LoginUI code with the WebUI
     84 // code.
     85 class LoginUI : public WebUI {
     86  public:
     87   explicit LoginUI(TabContents* contents);
     88 
     89   // Return the URL for a given search term.
     90   static const GURL GetLoginURLWithSearchText(const string16& text);
     91 
     92   static RefCountedMemory* GetFaviconResourceBytes();
     93 
     94  private:
     95   DISALLOW_COPY_AND_ASSIGN(LoginUI);
     96 };
     97 
     98 }  // namespace chromeos
     99 
    100 #endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_LOGIN_UI_H_
    101