• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_WEB_PAGE_SCREEN_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_WEB_PAGE_SCREEN_H_
7 #pragma once
8 
9 #include "base/timer.h"
10 #include "chrome/browser/chromeos/login/screen_observer.h"
11 #include "content/browser/tab_contents/tab_contents_delegate.h"
12 
13 class GURL;
14 
15 namespace chromeos {
16 
17 // Base class for wizard screen that holds web page.
18 class WebPageScreen : public TabContentsDelegate {
19  public:
WebPageScreen()20   explicit WebPageScreen() {}
~WebPageScreen()21   virtual ~WebPageScreen() {}
22 
23   // Exits from the screen with the specified exit code.
24   virtual void CloseScreen(ScreenObserver::ExitCodes code) = 0;
25 
26  protected:
27   // TabContentsDelegate implementation:
OpenURLFromTab(TabContents * source,const GURL & url,const GURL & referrer,WindowOpenDisposition disposition,PageTransition::Type transition)28   virtual void OpenURLFromTab(TabContents* source,
29                               const GURL& url, const GURL& referrer,
30                               WindowOpenDisposition disposition,
31                               PageTransition::Type transition) {}
32   virtual void NavigationStateChanged(const TabContents* source,
33                                       unsigned changed_flags) = 0;
AddNewContents(TabContents * source,TabContents * new_contents,WindowOpenDisposition disposition,const gfx::Rect & initial_pos,bool user_gesture)34   virtual void AddNewContents(TabContents* source,
35                               TabContents* new_contents,
36                               WindowOpenDisposition disposition,
37                               const gfx::Rect& initial_pos,
38                               bool user_gesture) {}
ActivateContents(TabContents * contents)39   virtual void ActivateContents(TabContents* contents) {}
DeactivateContents(TabContents * contents)40   virtual void DeactivateContents(TabContents* contents) {}
41   virtual void LoadingStateChanged(TabContents* source) = 0;
CloseContents(TabContents * source)42   virtual void CloseContents(TabContents* source) {}
IsPopup(TabContents * source)43   virtual bool IsPopup(TabContents* source) { return false; }
UpdateTargetURL(TabContents * source,const GURL & url)44   virtual void UpdateTargetURL(TabContents* source, const GURL& url) {}
ShouldAddNavigationToHistory(const history::HistoryAddPageArgs & add_page_args,NavigationType::Type navigation_type)45   virtual bool ShouldAddNavigationToHistory(
46       const history::HistoryAddPageArgs& add_page_args,
47       NavigationType::Type navigation_type) {
48     return false;
49   }
MoveContents(TabContents * source,const gfx::Rect & pos)50   virtual void MoveContents(TabContents* source, const gfx::Rect& pos) {}
51   virtual bool HandleContextMenu(const ContextMenuParams& params);
52 
53   // Called by |timeout_timer_|. Stops page fetching and closes screen.
54   virtual void OnNetworkTimeout();
55 
56   // Start/stop timeout timer.
57   void StartTimeoutTimer();
58   void StopTimeoutTimer();
59 
60  private:
61   // Timer used for network response timeout.
62   base::OneShotTimer<WebPageScreen> timeout_timer_;
63 
64   DISALLOW_COPY_AND_ASSIGN(WebPageScreen);
65 };
66 
67 }  // namespace chromeos
68 
69 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_WEB_PAGE_SCREEN_H_
70