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_CHROMEOS_LOGIN_HTML_PAGE_SCREEN_H_
      6 #define CHROME_BROWSER_CHROMEOS_LOGIN_HTML_PAGE_SCREEN_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "base/memory/scoped_ptr.h"
     12 #include "chrome/browser/chromeos/login/screen_observer.h"
     13 #include "chrome/browser/chromeos/login/view_screen.h"
     14 #include "chrome/browser/chromeos/login/web_page_screen.h"
     15 #include "chrome/browser/chromeos/login/web_page_view.h"
     16 
     17 class WizardScreenDelegate;
     18 
     19 namespace chromeos {
     20 
     21 class HTMLPageDomView : public WebPageDomView {
     22  public:
     23   HTMLPageDomView() {}
     24 
     25  protected:
     26   // Overriden from DOMView:
     27   virtual TabContents* CreateTabContents(Profile* profile,
     28                                          SiteInstance* instance);
     29 
     30  private:
     31   DISALLOW_COPY_AND_ASSIGN(HTMLPageDomView);
     32 };
     33 
     34 class HTMLPageView : public WebPageView {
     35  public:
     36   HTMLPageView();
     37 
     38  protected:
     39   virtual WebPageDomView* dom_view() { return dom_view_; }
     40 
     41  private:
     42   // View that renders page.
     43   HTMLPageDomView* dom_view_;
     44 
     45   DISALLOW_COPY_AND_ASSIGN(HTMLPageView);
     46 };
     47 
     48 // HTMLPageScreen is used to show arbitrary HTML page. It is used to show
     49 // simple screens like recover.
     50 class HTMLPageScreen : public ViewScreen<HTMLPageView>,
     51                        public WebPageScreen,
     52                        public WebPageDelegate {
     53  public:
     54   HTMLPageScreen(WizardScreenDelegate* delegate, const std::string& url);
     55 
     56   // WebPageDelegate implementation:
     57   virtual void OnPageLoaded();
     58   virtual void OnPageLoadFailed(const std::string& url);
     59 
     60  protected:
     61   // Overrides WebPageScreen:
     62   virtual void OnNetworkTimeout();
     63 
     64  private:
     65   // ViewScreen implementation:
     66   virtual void CreateView();
     67   virtual void Refresh();
     68   virtual HTMLPageView* AllocateView();
     69 
     70   virtual void LoadingStateChanged(TabContents* source);
     71   virtual void NavigationStateChanged(const TabContents* source,
     72                                       unsigned changed_flags);
     73   virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
     74 
     75   // WebPageScreen implementation:
     76   virtual void CloseScreen(ScreenObserver::ExitCodes code);
     77 
     78   // URL to navigate.
     79   std::string url_;
     80 
     81   DISALLOW_COPY_AND_ASSIGN(HTMLPageScreen);
     82 };
     83 
     84 }  // namespace chromeos
     85 
     86 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_HTML_PAGE_SCREEN_H_
     87