172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_WEB_PAGE_SCREEN_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_LOGIN_WEB_PAGE_SCREEN_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/timer.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/login/screen_observer.h" 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/tab_contents_delegate.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GURL; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Base class for wizard screen that holds web page. 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WebPageScreen : public TabContentsDelegate { 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit WebPageScreen() {} 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~WebPageScreen() {} 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Exits from the screen with the specified exit code. 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void CloseScreen(ScreenObserver::ExitCodes code) = 0; 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // TabContentsDelegate implementation: 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OpenURLFromTab(TabContents* source, 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL& url, const GURL& referrer, 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WindowOpenDisposition disposition, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PageTransition::Type transition) {} 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void NavigationStateChanged(const TabContents* source, 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch unsigned changed_flags) = 0; 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void AddNewContents(TabContents* source, 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabContents* new_contents, 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WindowOpenDisposition disposition, 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const gfx::Rect& initial_pos, 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool user_gesture) {} 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ActivateContents(TabContents* contents) {} 403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void DeactivateContents(TabContents* contents) {} 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void LoadingStateChanged(TabContents* source) = 0; 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void CloseContents(TabContents* source) {} 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsPopup(TabContents* source) { return false; } 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void UpdateTargetURL(TabContents* source, const GURL& url) {} 453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual bool ShouldAddNavigationToHistory( 463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const history::HistoryAddPageArgs& add_page_args, 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NavigationType::Type navigation_type) { 483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick return false; 493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void MoveContents(TabContents* source, const gfx::Rect& pos) {} 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool HandleContextMenu(const ContextMenuParams& params); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Called by |timeout_timer_|. Stops page fetching and closes screen. 543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void OnNetworkTimeout(); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Start/stop timeout timer. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void StartTimeoutTimer(); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void StopTimeoutTimer(); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Timer used for network response timeout. 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base::OneShotTimer<WebPageScreen> timeout_timer_; 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(WebPageScreen); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_CHROMEOS_LOGIN_WEB_PAGE_SCREEN_H_ 70