1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_
#define CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_
#pragma once
#include "base/memory/scoped_nsobject.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
#include "chrome/browser/ui/browser_window.h"
#include "content/public/browser/notification_registrar.h"
#include "ui/base/ui_base_types.h"
class Browser;
@class BrowserWindowController;
@class FindBarCocoaController;
@class NSEvent;
@class NSMenu;
@class NSWindow;
// An implementation of BrowserWindow for Cocoa. Bridges between C++ and
// the Cocoa NSWindow. Cross-platform code will interact with this object when
// it needs to manipulate the window.
class BrowserWindowCocoa : public BrowserWindow,
public content::NotificationObserver {
public:
BrowserWindowCocoa(Browser* browser,
BrowserWindowController* controller);
virtual ~BrowserWindowCocoa();
// Overridden from BrowserWindow
virtual void Show() OVERRIDE;
virtual void ShowInactive() OVERRIDE;
virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
virtual void Close() OVERRIDE;
virtual void Activate() OVERRIDE;
virtual void Deactivate() OVERRIDE;
virtual bool IsActive() const OVERRIDE;
virtual void FlashFrame() OVERRIDE;
virtual gfx::NativeWindow GetNativeHandle() OVERRIDE;
virtual BrowserWindowTesting* GetBrowserWindowTesting() OVERRIDE;
virtual StatusBubble* GetStatusBubble() OVERRIDE;
virtual void ToolbarSizeChanged(bool is_animating) OVERRIDE;
virtual void UpdateTitleBar() OVERRIDE;
virtual void BookmarkBarStateChanged(
BookmarkBar::AnimateChangeType change_type) OVERRIDE;
virtual void UpdateDevTools() OVERRIDE;
virtual void UpdateLoadingAnimations(bool should_animate) OVERRIDE;
virtual void SetStarredState(bool is_starred) OVERRIDE;
virtual gfx::Rect GetRestoredBounds() const OVERRIDE;
virtual gfx::Rect GetBounds() const OVERRIDE;
virtual bool IsMaximized() const OVERRIDE;
virtual bool IsMinimized() const OVERRIDE;
virtual void Maximize() OVERRIDE;
virtual void Minimize() OVERRIDE;
virtual void Restore() OVERRIDE;
virtual void EnterFullscreen(
const GURL& url, FullscreenExitBubbleType type) OVERRIDE;
virtual void ExitFullscreen() OVERRIDE;
virtual void UpdateFullscreenExitBubbleContent(
const GURL& url,
FullscreenExitBubbleType bubble_type) OVERRIDE;
virtual bool IsFullscreen() const OVERRIDE;
virtual bool IsFullscreenBubbleVisible() const OVERRIDE;
virtual LocationBar* GetLocationBar() const OVERRIDE;
virtual void SetFocusToLocationBar(bool select_all) OVERRIDE;
virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE;
virtual void UpdateToolbar(TabContentsWrapper* contents,
bool should_restore_state) OVERRIDE;
virtual void FocusToolbar() OVERRIDE;
virtual void FocusAppMenu() OVERRIDE;
virtual void FocusBookmarksToolbar() OVERRIDE;
virtual void FocusChromeOSStatus() OVERRIDE;
virtual void RotatePaneFocus(bool forwards) OVERRIDE;
virtual bool IsBookmarkBarVisible() const OVERRIDE;
virtual bool IsBookmarkBarAnimating() const OVERRIDE;
virtual bool IsTabStripEditable() const OVERRIDE;
virtual bool IsToolbarVisible() const OVERRIDE;
virtual void ConfirmAddSearchProvider(const TemplateURL* template_url,
Profile* profile) OVERRIDE;
virtual void ToggleBookmarkBar() OVERRIDE;
virtual void ShowAboutChromeDialog() OVERRIDE;
virtual void ShowUpdateChromeDialog() OVERRIDE;
virtual void ShowTaskManager() OVERRIDE;
virtual void ShowBackgroundPages() OVERRIDE;
virtual void ShowBookmarkBubble(const GURL& url,
bool already_bookmarked) OVERRIDE;
virtual bool IsDownloadShelfVisible() const OVERRIDE;
virtual DownloadShelf* GetDownloadShelf() OVERRIDE;
virtual void ShowCollectedCookiesDialog(TabContentsWrapper* wrapper) OVERRIDE;
virtual void ConfirmBrowserCloseWithPendingDownloads() OVERRIDE;
virtual void UserChangedTheme() OVERRIDE;
virtual int GetExtraRenderViewHeight() const OVERRIDE;
virtual void TabContentsFocused(TabContents* tab_contents) OVERRIDE;
virtual void ShowPageInfo(Profile* profile,
const GURL& url,
const NavigationEntry::SSLStatus& ssl,
bool show_history) OVERRIDE;
virtual void ShowAppMenu() OVERRIDE;
virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
bool* is_keyboard_shortcut) OVERRIDE;
virtual void HandleKeyboardEvent(
const NativeWebKeyboardEvent& event) OVERRIDE;
virtual void ShowCreateWebAppShortcutsDialog(
TabContentsWrapper* tab_contents) OVERRIDE;
virtual void ShowCreateChromeAppShortcutsDialog(
Profile* profile,
const Extension* app) OVERRIDE;
virtual void Cut() OVERRIDE;
virtual void Copy() OVERRIDE;
virtual void Paste() OVERRIDE;
virtual void OpenTabpose() OVERRIDE;
virtual void EnterPresentationMode(
const GURL& url,
FullscreenExitBubbleType bubble_type) OVERRIDE;
virtual void ExitPresentationMode() OVERRIDE;
virtual bool InPresentationMode() OVERRIDE;
virtual void ShowInstant(TabContentsWrapper* preview) OVERRIDE;
virtual void HideInstant() OVERRIDE;
virtual gfx::Rect GetInstantBounds() OVERRIDE;
virtual WindowOpenDisposition GetDispositionForPopupBounds(
const gfx::Rect& bounds) OVERRIDE;
virtual FindBar* CreateFindBar() OVERRIDE;
virtual void ShowAvatarBubble(TabContents* tab_contents,
const gfx::Rect& rect) OVERRIDE;
virtual void ShowAvatarBubbleFromAvatarButton() OVERRIDE;
// Overridden from NotificationObserver
virtual void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;
// Adds the given FindBar cocoa controller to this browser window.
void AddFindBar(FindBarCocoaController* find_bar_cocoa_controller);
// Returns the cocoa-world BrowserWindowController
BrowserWindowController* cocoa_controller() { return controller_; }
protected:
virtual void DestroyBrowser() OVERRIDE;
private:
NSWindow* window() const; // Accessor for the (current) |NSWindow|.
void UpdateSidebarForContents(TabContents* tab_contents);
content::NotificationRegistrar registrar_;
PrefChangeRegistrar pref_change_registrar_;
Browser* browser_; // weak, owned by controller
BrowserWindowController* controller_; // weak, owns us
base::WeakPtrFactory<Browser> confirm_close_factory_;
scoped_nsobject<NSString> pending_window_title_;
ui::WindowShowState initial_show_state_;
};
#endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_
|