Chromium Code Reviews

Unified Diff: chrome/browser/views/app_launcher.h

Issue 1145001: Porting the app launcher to Windows, and adding an experimental flag... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « chrome/browser/chromeos/frame/browser_view.cc ('k') | chrome/browser/views/app_launcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/app_launcher.h
===================================================================
--- chrome/browser/views/app_launcher.h (revision 41617)
+++ chrome/browser/views/app_launcher.h (working copy)
@@ -2,22 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_CHROMEOS_APP_LAUNCHER_H_
-#define CHROME_BROWSER_CHROMEOS_APP_LAUNCHER_H_
+#ifndef CHROME_BROWSER_VIEWS_APP_LAUNCHER_H_
+#define CHROME_BROWSER_VIEWS_APP_LAUNCHER_H_
-#include <gtk/gtk.h>
-
-#include "app/active_window_watcher_x.h"
#include "base/scoped_ptr.h"
-#include "base/task.h"
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/tab_contents/render_view_host_delegate_helper.h"
#include "chrome/browser/tab_contents/tab_contents_delegate.h"
+#include "chrome/browser/views/info_bubble.h"
#include "chrome/common/renderer_preferences.h"
#include "views/view.h"
class Browser;
-class RenderWidgetHostViewGtk;
class SiteInstance;
namespace gfx {
@@ -29,9 +25,9 @@
class WidgetGtk;
}
-namespace chromeos {
-
+class InfoBubbleContentsView;
class NavigationBar;
+class TabContentsDelegateImpl;
// AppLauncher manages showing the application launcher and optionally the
// navigation bar in compact navigation bar mode. The app launcher is
@@ -55,95 +51,26 @@
//
// When a new url is opened, or the user clicks outsides the bounds of the
// widget the app launcher is closed.
-class AppLauncher : public RenderViewHostDelegate,
- public RenderViewHostDelegate::View,
- public ActiveWindowWatcherX::Observer,
- public views::AcceleratorTarget {
+class AppLauncher : public InfoBubbleDelegate,
+ public RenderViewHostDelegate,
+ public RenderViewHostDelegate::View {
public:
- AppLauncher();
- ~AppLauncher();
+ // Shows an application launcher bubble pointing to the new tab button.
+ // The caller DOES NOT OWN the AppLauncher returned. It is deleted
+ // automatically when the AppLauncher is closed.
+ static AppLauncher* Show(Browser* browser);
- // Shows the menu.
- void Show(Browser* browser);
+ // Returns the browser this AppLauncher is associated with.
+ Browser* browser() const { return browser_; }
- private:
- // TabContentsDelegate and RenderViewHostDelegate::View have some methods
- // in common (with differing signatures). The TabContentsDelegate methods are
- // implemented by this class.
- class TabContentsDelegateImpl : public TabContentsDelegate {
- public:
- explicit TabContentsDelegateImpl(AppLauncher* app_launcher);
-
- // TabContentsDelegate.
- virtual void OpenURLFromTab(TabContents* source,
- const GURL& url, const GURL& referrer,
- WindowOpenDisposition disposition,
- PageTransition::Type transition);
- virtual void NavigationStateChanged(const TabContents* source,
- unsigned changed_flags) {}
- virtual void AddNewContents(TabContents* source,
- TabContents* new_contents,
- WindowOpenDisposition disposition,
- const gfx::Rect& initial_pos,
- bool user_gesture) {}
- virtual void ActivateContents(TabContents* contents) {}
- virtual void LoadingStateChanged(TabContents* source) {}
- virtual void CloseContents(TabContents* source) {}
- virtual void MoveContents(TabContents* source, const gfx::Rect& pos) {}
- virtual bool IsPopup(TabContents* source) { return false; }
- virtual void ToolbarSizeChanged(TabContents* source, bool is_animating) {}
- virtual void URLStarredChanged(TabContents* source, bool starred) {}
- virtual void UpdateTargetURL(TabContents* source, const GURL& url) {}
-
- private:
- AppLauncher* app_launcher_;
-
- DISALLOW_COPY_AND_ASSIGN(TabContentsDelegateImpl);
- };
-
- class TopContainer : public views::View {
- public:
- explicit TopContainer(AppLauncher* app_launcher);
- virtual ~TopContainer() {}
-
- // views::View overrides.
- virtual void Layout();
- virtual bool OnMousePressed(const views::MouseEvent& event);
-
- private:
- AppLauncher* app_launcher_;
-
- DISALLOW_COPY_AND_ASSIGN(TopContainer);
- };
-
- class BubbleContainer : public views::View {
- public:
- explicit BubbleContainer(AppLauncher* app_launcher);
-
- // views::View overrides.
- virtual void Layout();
-
- private:
- AppLauncher* app_launcher_;
-
- DISALLOW_COPY_AND_ASSIGN(BubbleContainer);
- };
-
- friend class BubbleContainer;
- friend class NavigationBar;
- friend class TabContentsDelegateImpl;
- friend class TopContainer;
-
// Hides the app launcher.
void Hide();
- // Cleans up state. This is invoked before showing and after a delay when
- // hidden.
- void Cleanup();
+ // InfoBubbleDelegate overrides.
+ virtual void InfoBubbleClosing(InfoBubble* info_bubble,
+ bool closed_by_escape);
+ virtual bool CloseOnEscape() { return true; }
- // Updates the app launcher's state and layout with the |browser|.
- void Update(Browser* browser);
-
// RenderViewHostDelegate overrides.
virtual int GetBrowserWindowID() const {
return -1;
@@ -168,7 +95,9 @@
const gfx::Rect& initial_pos) {}
virtual void ShowContextMenu(const ContextMenuParams& params) {}
virtual void StartDragging(const WebDropData& drop_data,
- WebKit::WebDragOperationsMask allowed_ops);
+ WebKit::WebDragOperationsMask allowed_ops,
+ const SkBitmap& image,
+ const gfx::Point& image_offset);
virtual void UpdateDragCursor(WebKit::WebDragOperation operation) {}
virtual void GotFocus() {}
virtual void TakeFocus(bool reverse) {}
@@ -181,58 +110,44 @@
virtual void HandleMouseLeave() {}
virtual void UpdatePreferredSize(const gfx::Size& pref_size) {}
- // ActiveWindowWatcherX::Observer implementation.
- virtual void ActiveWindowChanged(GdkWindow* active_window);
+ private:
+ friend class DeleteTask<AppLauncher>;
+ friend class NavigationBar;
+ friend class InfoBubbleContentsView;
- // views::AcceleratorTarget implementation:
- virtual bool AcceleratorPressed(const views::Accelerator& accelerator);
+ explicit AppLauncher(Browser* browser);
+ ~AppLauncher();
void AddTabWithURL(const GURL& url, PageTransition::Type transition);
// The currently active browser. We use this to open urls.
Browser* browser_;
- // The widget displaying the rwvh_.
- views::WidgetGtk* popup_;
+ // The InfoBubble displaying the omnibox and app contents.
+ InfoBubble* info_bubble_;
// SiteInstance for the RenderViewHosts we create.
- SiteInstance* site_instance_;
+ scoped_refptr<SiteInstance> site_instance_;
// RenderViewHost for the contents.
RenderViewHost* contents_rvh_;
// RenderWidgetHostView from the contents_rvh_.
- RenderWidgetHostViewGtk* rwhv_;
+ RenderWidgetHostView* rwhv_;
// Handles creating the child TabContents.
RenderViewHostDelegateViewHelper helper_;
// Delegate of the TabContents created by helper_.
- TabContentsDelegateImpl tab_contents_delegate_;
+ scoped_ptr<TabContentsDelegateImpl> tab_contents_delegate_;
// TabContents created when the user clicks a link.
scoped_ptr<TabContents> pending_contents_;
- ScopedRunnableMethodFactory<AppLauncher> method_factory_;
+ // The view with the navigation bar and render view, shown in the info-bubble.
+ InfoBubbleContentsView* info_bubble_content_;
- // Container of the background, NavigationBar and Renderer.
- views::View* top_container_;
-
- // Container of the NavigationBar and Renderer (shown in a bubble).
- views::View* bubble_container_;
-
- // The navigation bar. Only shown in compact navigation bar mode.
- NavigationBar* navigation_bar_;
-
- // The view containing the renderer view.
- views::NativeViewHost* render_view_container_;
-
- // True if the popup has ever been shown.
- bool has_shown_;
-
DISALLOW_COPY_AND_ASSIGN(AppLauncher);
};
-} // namespace chromeos
-
-#endif // CHROME_BROWSER_CHROMEOS_APP_LAUNCHER_H_
+#endif // CHROME_BROWSER_VIEWS_APP_LAUNCHER_H_
« no previous file with comments | « chrome/browser/chromeos/frame/browser_view.cc ('k') | chrome/browser/views/app_launcher.cc » ('j') | no next file with comments »

Powered by Google App Engine