Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2012 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_TEST_BASE_TEST_BROWSER_WINDOW_H_
      6 #define CHROME_TEST_BASE_TEST_BROWSER_WINDOW_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/compiler_specific.h"
     10 #include "build/build_config.h"
     11 #include "chrome/browser/download/test_download_shelf.h"
     12 #include "chrome/browser/ui/browser.h"
     13 #include "chrome/browser/ui/browser_window.h"
     14 #include "chrome/browser/ui/omnibox/location_bar.h"
     15 
     16 class LocationBarTesting;
     17 class OmniboxView;
     18 
     19 namespace extensions {
     20 class Extension;
     21 }
     22 
     23 // An implementation of BrowserWindow used for testing. TestBrowserWindow only
     24 // contains a valid LocationBar, all other getters return NULL.
     25 // See BrowserWithTestWindowTest for an example of using this class.
     26 class TestBrowserWindow : public BrowserWindow {
     27  public:
     28   TestBrowserWindow();
     29   virtual ~TestBrowserWindow();
     30 
     31   // BrowserWindow:
     32   virtual void Show() OVERRIDE {}
     33   virtual void ShowInactive() OVERRIDE {}
     34   virtual void Hide() OVERRIDE {}
     35   virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE {}
     36   virtual void Close() OVERRIDE {}
     37   virtual void Activate() OVERRIDE {}
     38   virtual void Deactivate() OVERRIDE {}
     39   virtual bool IsActive() const OVERRIDE;
     40   virtual void FlashFrame(bool flash) OVERRIDE {}
     41   virtual bool IsAlwaysOnTop() const OVERRIDE;
     42   virtual void SetAlwaysOnTop(bool always_on_top) OVERRIDE {}
     43   virtual gfx::NativeWindow GetNativeWindow() OVERRIDE;
     44   virtual BrowserWindowTesting* GetBrowserWindowTesting() OVERRIDE;
     45   virtual StatusBubble* GetStatusBubble() OVERRIDE;
     46   virtual void UpdateTitleBar() OVERRIDE {}
     47   virtual void BookmarkBarStateChanged(
     48       BookmarkBar::AnimateChangeType change_type) OVERRIDE {}
     49   virtual void UpdateDevTools() OVERRIDE {}
     50   virtual void UpdateLoadingAnimations(bool should_animate) OVERRIDE {}
     51   virtual void SetStarredState(bool is_starred) OVERRIDE {}
     52   virtual void SetTranslateIconToggled(bool is_lit) OVERRIDE {}
     53   virtual void OnActiveTabChanged(content::WebContents* old_contents,
     54                                   content::WebContents* new_contents,
     55                                   int index,
     56                                   int reason) OVERRIDE {}
     57   virtual void ZoomChangedForActiveTab(bool can_show_bubble) OVERRIDE {}
     58   virtual gfx::Rect GetRestoredBounds() const OVERRIDE;
     59   virtual ui::WindowShowState GetRestoredState() const OVERRIDE;
     60   virtual gfx::Rect GetBounds() const OVERRIDE;
     61   virtual bool IsMaximized() const OVERRIDE;
     62   virtual bool IsMinimized() const OVERRIDE;
     63   virtual void Maximize() OVERRIDE {}
     64   virtual void Minimize() OVERRIDE {}
     65   virtual void Restore() OVERRIDE {}
     66   virtual void EnterFullscreen(
     67       const GURL& url, FullscreenExitBubbleType type) OVERRIDE {}
     68   virtual void ExitFullscreen() OVERRIDE {}
     69   virtual void UpdateFullscreenExitBubbleContent(
     70       const GURL& url,
     71       FullscreenExitBubbleType bubble_type) OVERRIDE {}
     72   virtual bool ShouldHideUIForFullscreen() const OVERRIDE;
     73   virtual bool IsFullscreen() const OVERRIDE;
     74 #if defined(OS_WIN)
     75   virtual void SetMetroSnapMode(bool enable) OVERRIDE {}
     76   virtual bool IsInMetroSnapMode() const;
     77 #endif
     78   virtual bool IsFullscreenBubbleVisible() const OVERRIDE;
     79   virtual LocationBar* GetLocationBar() const OVERRIDE;
     80   virtual void SetFocusToLocationBar(bool select_all) OVERRIDE {}
     81   virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE {}
     82   virtual void UpdateToolbar(content::WebContents* contents) OVERRIDE {}
     83   virtual void FocusToolbar() OVERRIDE {}
     84   virtual void FocusAppMenu() OVERRIDE {}
     85   virtual void FocusBookmarksToolbar() OVERRIDE {}
     86   virtual void FocusInfobars() OVERRIDE {}
     87   virtual void RotatePaneFocus(bool forwards) OVERRIDE {}
     88   virtual void ShowAppMenu() OVERRIDE {}
     89   virtual bool PreHandleKeyboardEvent(
     90       const content::NativeWebKeyboardEvent& event,
     91       bool* is_keyboard_shortcut) OVERRIDE;
     92   virtual void HandleKeyboardEvent(
     93       const content::NativeWebKeyboardEvent& event) OVERRIDE {}
     94 
     95   virtual bool IsBookmarkBarVisible() const OVERRIDE;
     96   virtual bool IsBookmarkBarAnimating() const OVERRIDE;
     97   virtual bool IsTabStripEditable() const OVERRIDE;
     98   virtual bool IsToolbarVisible() const OVERRIDE;
     99   virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE;
    100   virtual void ConfirmAddSearchProvider(TemplateURL* template_url,
    101                                         Profile* profile) OVERRIDE {}
    102   virtual void ShowUpdateChromeDialog() OVERRIDE {}
    103   virtual void ShowBookmarkBubble(const GURL& url,
    104                                   bool already_bookmarked) OVERRIDE {}
    105   virtual void ShowBookmarkAppBubble(
    106       const WebApplicationInfo& web_app_info,
    107       const std::string& extension_id) OVERRIDE {}
    108   virtual void ShowTranslateBubble(content::WebContents* contents,
    109                                    translate::TranslateStep step,
    110                                    TranslateErrors::Type error_type) OVERRIDE {}
    111 #if defined(ENABLE_ONE_CLICK_SIGNIN)
    112   virtual void ShowOneClickSigninBubble(
    113       OneClickSigninBubbleType type,
    114       const base::string16& email,
    115       const base::string16& error_message,
    116       const StartSyncCallback& start_sync_callback) OVERRIDE {}
    117 #endif
    118   virtual bool IsDownloadShelfVisible() const OVERRIDE;
    119   virtual DownloadShelf* GetDownloadShelf() OVERRIDE;
    120   virtual void ConfirmBrowserCloseWithPendingDownloads(
    121       int download_count,
    122       Browser::DownloadClosePreventionType dialog_type,
    123       bool app_modal,
    124       const base::Callback<void(bool)>& callback) OVERRIDE {}
    125   virtual void UserChangedTheme() OVERRIDE {}
    126   virtual int GetExtraRenderViewHeight() const OVERRIDE;
    127   virtual void WebContentsFocused(content::WebContents* contents) OVERRIDE {}
    128   virtual void ShowWebsiteSettings(Profile* profile,
    129                                    content::WebContents* web_contents,
    130                                    const GURL& url,
    131                                    const content::SSLStatus& ssl) OVERRIDE {}
    132   virtual void Cut() OVERRIDE {}
    133   virtual void Copy() OVERRIDE {}
    134   virtual void Paste() OVERRIDE {}
    135 #if defined(OS_MACOSX)
    136   virtual void EnterFullscreenWithChrome() OVERRIDE {}
    137   virtual bool IsFullscreenWithChrome() OVERRIDE;
    138   virtual bool IsFullscreenWithoutChrome() OVERRIDE;
    139 #endif
    140 
    141   virtual WindowOpenDisposition GetDispositionForPopupBounds(
    142       const gfx::Rect& bounds) OVERRIDE;
    143   virtual FindBar* CreateFindBar() OVERRIDE;
    144   virtual web_modal::WebContentsModalDialogHost*
    145       GetWebContentsModalDialogHost() OVERRIDE;
    146   virtual void ShowAvatarBubble(content::WebContents* web_contents,
    147                                 const gfx::Rect& rect) OVERRIDE {}
    148   virtual void ShowAvatarBubbleFromAvatarButton(AvatarBubbleMode mode,
    149       const signin::ManageAccountsParams& manage_accounts_params) OVERRIDE {}
    150   virtual void ShowPasswordGenerationBubble(
    151       const gfx::Rect& rect,
    152       const autofill::PasswordForm& form,
    153       autofill::PasswordGenerator* generator) OVERRIDE {}
    154   virtual int GetRenderViewHeightInsetWithDetachedBookmarkBar() OVERRIDE;
    155   virtual void ExecuteExtensionCommand(
    156       const extensions::Extension* extension,
    157       const extensions::Command& command) OVERRIDE;
    158   virtual void ShowPageActionPopup(
    159       const extensions::Extension* extension) OVERRIDE;
    160   virtual void ShowBrowserActionPopup(
    161       const extensions::Extension* extension) OVERRIDE;
    162 
    163  protected:
    164   virtual void DestroyBrowser() OVERRIDE {}
    165 
    166  private:
    167   class TestLocationBar : public LocationBar {
    168    public:
    169     TestLocationBar() : LocationBar(NULL) {}
    170     virtual ~TestLocationBar() {}
    171 
    172     // LocationBar:
    173     virtual void ShowFirstRunBubble() OVERRIDE {}
    174     virtual GURL GetDestinationURL() const OVERRIDE;
    175     virtual WindowOpenDisposition GetWindowOpenDisposition() const OVERRIDE;
    176     virtual content::PageTransition GetPageTransition() const OVERRIDE;
    177     virtual void AcceptInput() OVERRIDE {}
    178     virtual void FocusLocation(bool select_all) OVERRIDE {}
    179     virtual void FocusSearch() OVERRIDE {}
    180     virtual void UpdateContentSettingsIcons() OVERRIDE {}
    181     virtual void UpdateManagePasswordsIconAndBubble() OVERRIDE {}
    182     virtual void UpdatePageActions() OVERRIDE {}
    183     virtual void InvalidatePageActions() OVERRIDE {}
    184     virtual void UpdateOpenPDFInReaderPrompt() OVERRIDE {}
    185     virtual void UpdateGeneratedCreditCardView() OVERRIDE {}
    186     virtual void SaveStateToContents(content::WebContents* contents) OVERRIDE {}
    187     virtual void Revert() OVERRIDE {}
    188     virtual const OmniboxView* GetOmniboxView() const OVERRIDE;
    189     virtual OmniboxView* GetOmniboxView() OVERRIDE;
    190     virtual LocationBarTesting* GetLocationBarForTesting() OVERRIDE;
    191 
    192    private:
    193     DISALLOW_COPY_AND_ASSIGN(TestLocationBar);
    194   };
    195 
    196   TestDownloadShelf download_shelf_;
    197   TestLocationBar location_bar_;
    198 
    199   DISALLOW_COPY_AND_ASSIGN(TestBrowserWindow);
    200 };
    201 
    202 namespace chrome {
    203 
    204 // Helper that handle the lifetime of TestBrowserWindow instances.
    205 Browser* CreateBrowserWithTestWindowForParams(Browser::CreateParams* params);
    206 
    207 }  // namespace chrome
    208 
    209 #endif  // CHROME_TEST_BASE_TEST_BROWSER_WINDOW_H_
    210