browser_window_cocoa.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_ 6#define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_ 7 8#include "base/memory/scoped_nsobject.h" 9#include "base/memory/weak_ptr.h" 10#include "chrome/browser/bookmarks/bookmark_model.h" 11#include "chrome/browser/extensions/extension_keybinding_registry.h" 12#include "chrome/browser/ui/browser_window.h" 13#include "chrome/browser/ui/search/search_model_observer.h" 14#include "ui/base/ui_base_types.h" 15 16class Browser; 17@class BrowserWindowController; 18@class FindBarCocoaController; 19@class NSEvent; 20@class NSMenu; 21@class NSWindow; 22 23namespace extensions { 24class ActiveTabPermissionGranter; 25class Extension; 26} 27 28// An implementation of BrowserWindow for Cocoa. Bridges between C++ and 29// the Cocoa NSWindow. Cross-platform code will interact with this object when 30// it needs to manipulate the window. 31 32class BrowserWindowCocoa : 33 public BrowserWindow, 34 public extensions::ExtensionKeybindingRegistry::Delegate, 35 public SearchModelObserver { 36 public: 37 BrowserWindowCocoa(Browser* browser, 38 BrowserWindowController* controller); 39 virtual ~BrowserWindowCocoa(); 40 41 // Overridden from BrowserWindow 42 virtual void Show() OVERRIDE; 43 virtual void ShowInactive() OVERRIDE; 44 virtual void Hide() OVERRIDE; 45 virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; 46 virtual void Close() OVERRIDE; 47 virtual void Activate() OVERRIDE; 48 virtual void Deactivate() OVERRIDE; 49 virtual bool IsActive() const OVERRIDE; 50 virtual void FlashFrame(bool flash) OVERRIDE; 51 virtual bool IsAlwaysOnTop() const OVERRIDE; 52 virtual gfx::NativeWindow GetNativeWindow() OVERRIDE; 53 virtual BrowserWindowTesting* GetBrowserWindowTesting() OVERRIDE; 54 virtual StatusBubble* GetStatusBubble() OVERRIDE; 55 virtual void UpdateTitleBar() OVERRIDE; 56 virtual void BookmarkBarStateChanged( 57 BookmarkBar::AnimateChangeType change_type) OVERRIDE; 58 virtual void UpdateDevTools() OVERRIDE; 59 virtual void UpdateLoadingAnimations(bool should_animate) OVERRIDE; 60 virtual void SetStarredState(bool is_starred) OVERRIDE; 61 virtual void ZoomChangedForActiveTab(bool can_show_bubble) OVERRIDE; 62 virtual gfx::Rect GetRestoredBounds() const OVERRIDE; 63 virtual gfx::Rect GetBounds() const OVERRIDE; 64 virtual bool IsMaximized() const OVERRIDE; 65 virtual bool IsMinimized() const OVERRIDE; 66 virtual void Maximize() OVERRIDE; 67 virtual void Minimize() OVERRIDE; 68 virtual void Restore() OVERRIDE; 69 virtual void EnterFullscreen( 70 const GURL& url, FullscreenExitBubbleType type) OVERRIDE; 71 virtual void ExitFullscreen() OVERRIDE; 72 virtual void UpdateFullscreenExitBubbleContent( 73 const GURL& url, 74 FullscreenExitBubbleType bubble_type) OVERRIDE; 75 virtual bool ShouldHideUIForFullscreen() const OVERRIDE; 76 virtual bool IsFullscreen() const OVERRIDE; 77 virtual bool IsFullscreenBubbleVisible() const OVERRIDE; 78 virtual LocationBar* GetLocationBar() const OVERRIDE; 79 virtual void SetFocusToLocationBar(bool select_all) OVERRIDE; 80 virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE; 81 virtual void UpdateToolbar(content::WebContents* contents, 82 bool should_restore_state) 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 bool IsBookmarkBarVisible() const OVERRIDE; 89 virtual bool IsBookmarkBarAnimating() const OVERRIDE; 90 virtual bool IsTabStripEditable() const OVERRIDE; 91 virtual bool IsToolbarVisible() const OVERRIDE; 92 virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE; 93 virtual void ConfirmAddSearchProvider(TemplateURL* template_url, 94 Profile* profile) OVERRIDE; 95 virtual void ToggleBookmarkBar() OVERRIDE; 96 virtual void ShowUpdateChromeDialog() OVERRIDE; 97 virtual void ShowBookmarkBubble(const GURL& url, 98 bool already_bookmarked) OVERRIDE; 99 virtual void ShowChromeToMobileBubble() OVERRIDE; 100#if defined(ENABLE_ONE_CLICK_SIGNIN) 101 virtual void ShowOneClickSigninBubble( 102 OneClickSigninBubbleType type, 103 const string16& email, 104 const string16& error_message, 105 const StartSyncCallback& start_sync_callback) OVERRIDE; 106#endif 107 virtual bool IsDownloadShelfVisible() const OVERRIDE; 108 virtual DownloadShelf* GetDownloadShelf() OVERRIDE; 109 virtual void ConfirmBrowserCloseWithPendingDownloads() OVERRIDE; 110 virtual void UserChangedTheme() OVERRIDE; 111 virtual int GetExtraRenderViewHeight() const OVERRIDE; 112 virtual void WebContentsFocused(content::WebContents* contents) OVERRIDE; 113 virtual void ShowWebsiteSettings(Profile* profile, 114 content::WebContents* web_contents, 115 const GURL& url, 116 const content::SSLStatus& ssl, 117 bool show_history) OVERRIDE; 118 virtual void ShowAppMenu() OVERRIDE; 119 virtual bool PreHandleKeyboardEvent( 120 const content::NativeWebKeyboardEvent& event, 121 bool* is_keyboard_shortcut) OVERRIDE; 122 virtual void HandleKeyboardEvent( 123 const content::NativeWebKeyboardEvent& event) OVERRIDE; 124 virtual void ShowCreateChromeAppShortcutsDialog( 125 Profile* profile, 126 const extensions::Extension* app) OVERRIDE; 127 virtual void Cut() OVERRIDE; 128 virtual void Copy() OVERRIDE; 129 virtual void Paste() OVERRIDE; 130 virtual void OpenTabpose() OVERRIDE; 131 virtual void EnterFullscreenWithChrome() OVERRIDE; 132 virtual bool IsFullscreenWithChrome() OVERRIDE; 133 virtual bool IsFullscreenWithoutChrome() OVERRIDE; 134 virtual gfx::Rect GetInstantBounds() OVERRIDE; 135 virtual WindowOpenDisposition GetDispositionForPopupBounds( 136 const gfx::Rect& bounds) OVERRIDE; 137 virtual FindBar* CreateFindBar() OVERRIDE; 138 virtual WebContentsModalDialogHost* GetWebContentsModalDialogHost() OVERRIDE; 139 virtual void ShowAvatarBubble(content::WebContents* web_contents, 140 const gfx::Rect& rect) OVERRIDE; 141 virtual void ShowAvatarBubbleFromAvatarButton() OVERRIDE; 142 virtual void ShowPasswordGenerationBubble( 143 const gfx::Rect& rect, 144 const content::PasswordForm& form, 145 autofill::PasswordGenerator* password_generator) OVERRIDE; 146 147 // Overridden from ExtensionKeybindingRegistry::Delegate: 148 virtual extensions::ActiveTabPermissionGranter* 149 GetActiveTabPermissionGranter() OVERRIDE; 150 151 // Overridden from SearchModelObserver: 152 virtual void ModelChanged(const SearchModel::State& old_state, 153 const SearchModel::State& new_state) OVERRIDE; 154 155 // Adds the given FindBar cocoa controller to this browser window. 156 void AddFindBar(FindBarCocoaController* find_bar_cocoa_controller); 157 158 // Returns the cocoa-world BrowserWindowController 159 BrowserWindowController* cocoa_controller() { return controller_; } 160 161 protected: 162 virtual void DestroyBrowser() OVERRIDE; 163 164 private: 165 NSWindow* window() const; // Accessor for the (current) |NSWindow|. 166 167 Browser* browser_; // weak, owned by controller 168 BrowserWindowController* controller_; // weak, owns us 169 base::WeakPtrFactory<Browser> confirm_close_factory_; 170 scoped_nsobject<NSString> pending_window_title_; 171 ui::WindowShowState initial_show_state_; 172 NSInteger attention_request_id_; // identifier from requestUserAttention 173}; 174 175#endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_ 176