summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa/browser_window_cocoa.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/cocoa/browser_window_cocoa.h')
-rw-r--r--chrome/browser/ui/cocoa/browser_window_cocoa.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.h b/chrome/browser/ui/cocoa/browser_window_cocoa.h
new file mode 100644
index 0000000..316d062
--- /dev/null
+++ b/chrome/browser/ui/cocoa/browser_window_cocoa.h
@@ -0,0 +1,143 @@
+// Copyright (c) 2010 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/scoped_nsobject.h"
+#include "base/task.h"
+#include "chrome/browser/browser_window.h"
+#include "chrome/browser/bookmarks/bookmark_model.h"
+#include "chrome/common/notification_registrar.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 NotificationObserver {
+ public:
+ BrowserWindowCocoa(Browser* browser,
+ BrowserWindowController* controller,
+ NSWindow* window);
+ virtual ~BrowserWindowCocoa();
+
+ // Overridden from BrowserWindow
+ virtual void Show();
+ virtual void SetBounds(const gfx::Rect& bounds);
+ virtual void Close();
+ virtual void Activate();
+ virtual void Deactivate();
+ virtual bool IsActive() const;
+ virtual void FlashFrame();
+ virtual gfx::NativeWindow GetNativeHandle();
+ virtual BrowserWindowTesting* GetBrowserWindowTesting();
+ virtual StatusBubble* GetStatusBubble();
+ virtual void SelectedTabToolbarSizeChanged(bool is_animating);
+ virtual void UpdateTitleBar();
+ virtual void ShelfVisibilityChanged();
+ virtual void UpdateDevTools();
+ virtual void UpdateLoadingAnimations(bool should_animate);
+ virtual void SetStarredState(bool is_starred);
+ virtual gfx::Rect GetRestoredBounds() const;
+ virtual bool IsMaximized() const;
+ virtual void SetFullscreen(bool fullscreen);
+ virtual bool IsFullscreen() const;
+ virtual bool IsFullscreenBubbleVisible() const;
+ virtual LocationBar* GetLocationBar() const;
+ virtual void SetFocusToLocationBar(bool select_all);
+ virtual void UpdateReloadStopState(bool is_loading, bool force);
+ virtual void UpdateToolbar(TabContentsWrapper* contents,
+ bool should_restore_state);
+ virtual void FocusToolbar();
+ virtual void FocusAppMenu();
+ virtual void FocusBookmarksToolbar();
+ virtual void FocusChromeOSStatus();
+ virtual void RotatePaneFocus(bool forwards);
+ virtual bool IsBookmarkBarVisible() const;
+ virtual bool IsBookmarkBarAnimating() const;
+ virtual bool IsToolbarVisible() const;
+ virtual void ConfirmAddSearchProvider(const TemplateURL* template_url,
+ Profile* profile);
+ virtual void ToggleBookmarkBar();
+ virtual views::Window* ShowAboutChromeDialog();
+ virtual void ShowUpdateChromeDialog();
+ virtual void ShowTaskManager();
+ virtual void ShowBookmarkBubble(const GURL& url, bool already_bookmarked);
+ virtual bool IsDownloadShelfVisible() const;
+ virtual DownloadShelf* GetDownloadShelf();
+ virtual void ShowReportBugDialog();
+ virtual void ShowClearBrowsingDataDialog();
+ virtual void ShowImportDialog();
+ virtual void ShowSearchEnginesDialog();
+ virtual void ShowPasswordManager();
+ virtual void ShowRepostFormWarningDialog(TabContents* tab_contents);
+ virtual void ShowContentSettingsWindow(ContentSettingsType content_type,
+ Profile* profile);
+ virtual void ShowCollectedCookiesDialog(TabContents* tab_contents);
+ virtual void ShowProfileErrorDialog(int message_id);
+ virtual void ShowThemeInstallBubble();
+ virtual void ConfirmBrowserCloseWithPendingDownloads();
+ virtual void ShowHTMLDialog(HtmlDialogUIDelegate* delegate,
+ gfx::NativeWindow parent_window);
+ virtual void UserChangedTheme();
+ virtual int GetExtraRenderViewHeight() const;
+ virtual void TabContentsFocused(TabContents* tab_contents);
+ virtual void ShowPageInfo(Profile* profile,
+ const GURL& url,
+ const NavigationEntry::SSLStatus& ssl,
+ bool show_history);
+ virtual void ShowAppMenu();
+ virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
+ bool* is_keyboard_shortcut);
+ virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
+ virtual void ShowCreateWebAppShortcutsDialog(TabContents* tab_contents);
+ virtual void ShowCreateChromeAppShortcutsDialog(Profile* profile,
+ const Extension* app);
+ virtual void Cut();
+ virtual void Copy();
+ virtual void Paste();
+ virtual void ToggleTabStripMode();
+ virtual void OpenTabpose();
+ virtual void PrepareForInstant();
+ virtual void ShowInstant(TabContents* preview_contents);
+ virtual void HideInstant();
+ virtual gfx::Rect GetInstantBounds();
+
+ // Overridden from NotificationObserver
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ // 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();
+
+ private:
+ int GetCommandId(const NativeWebKeyboardEvent& event);
+ bool HandleKeyboardEventInternal(NSEvent* event);
+ NSWindow* window() const; // Accessor for the (current) |NSWindow|.
+ void UpdateSidebarForContents(TabContents* tab_contents);
+
+ NotificationRegistrar registrar_;
+ Browser* browser_; // weak, owned by controller
+ BrowserWindowController* controller_; // weak, owns us
+ ScopedRunnableMethodFactory<Browser> confirm_close_factory_;
+ scoped_nsobject<NSString> pending_window_title_;
+};
+
+#endif // CHROME_BROWSER_UI_COCOA_BROWSER_WINDOW_COCOA_H_