| Index: chrome/browser/tab_contents/tab_contents_view.h
|
| ===================================================================
|
| --- chrome/browser/tab_contents/tab_contents_view.h (revision 75368)
|
| +++ chrome/browser/tab_contents/tab_contents_view.h (working copy)
|
| @@ -6,213 +6,7 @@
|
| #define CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_VIEW_H_
|
| #pragma once
|
|
|
| -#include <map>
|
| -#include <string>
|
| +// TODO(jam): remove this file when all files have been converted.
|
| +#include "content/browser/tab_contents/tab_contents_view.h"
|
|
|
| -#include "base/basictypes.h"
|
| -#include "chrome/browser/renderer_host/render_view_host_delegate.h"
|
| -#include "chrome/browser/tab_contents/render_view_host_delegate_helper.h"
|
| -#include "ui/gfx/native_widget_types.h"
|
| -#include "ui/gfx/rect.h"
|
| -#include "ui/gfx/size.h"
|
| -
|
| -class RenderViewHost;
|
| -class RenderWidgetHost;
|
| -class RenderWidgetHostView;
|
| -class TabContents;
|
| -
|
| -// The TabContentsView is an interface that is implemented by the platform-
|
| -// dependent web contents views. The TabContents uses this interface to talk to
|
| -// them. View-related messages will also get forwarded directly to this class
|
| -// from RenderViewHost via RenderViewHostDelegate::View.
|
| -//
|
| -// It contains a small amount of logic with respect to creating new sub-view
|
| -// that should be the same for all platforms.
|
| -class TabContentsView : public RenderViewHostDelegate::View {
|
| - public:
|
| - explicit TabContentsView(TabContents* tab_contents);
|
| - virtual ~TabContentsView();
|
| -
|
| - // Creates the appropriate type of TabContentsView for the current system.
|
| - // The return value is a new heap allocated view with ownership passing to
|
| - // the caller.
|
| - static TabContentsView* Create(TabContents* tab_contents);
|
| -
|
| - TabContents* tab_contents() const { return tab_contents_; }
|
| -
|
| - virtual void CreateView(const gfx::Size& initial_size) = 0;
|
| -
|
| - // Sets up the View that holds the rendered web page, receives messages for
|
| - // it and contains page plugins. The host view should be sized to the current
|
| - // size of the TabContents.
|
| - virtual RenderWidgetHostView* CreateViewForWidget(
|
| - RenderWidgetHost* render_widget_host) = 0;
|
| -
|
| - // Returns the native widget that contains the contents of the tab.
|
| - virtual gfx::NativeView GetNativeView() const = 0;
|
| -
|
| - // Returns the native widget with the main content of the tab (i.e. the main
|
| - // render view host, though there may be many popups in the tab as children of
|
| - // the container).
|
| - virtual gfx::NativeView GetContentNativeView() const = 0;
|
| -
|
| - // Returns the outermost native view. This will be used as the parent for
|
| - // dialog boxes.
|
| - virtual gfx::NativeWindow GetTopLevelNativeWindow() const = 0;
|
| -
|
| - // Computes the rectangle for the native widget that contains the contents of
|
| - // the tab relative to its parent.
|
| - virtual void GetContainerBounds(gfx::Rect *out) const = 0;
|
| -
|
| - // Helper function for GetContainerBounds. Most callers just want to know the
|
| - // size, and this makes it more clear.
|
| - gfx::Size GetContainerSize() const {
|
| - gfx::Rect rc;
|
| - GetContainerBounds(&rc);
|
| - return gfx::Size(rc.width(), rc.height());
|
| - }
|
| -
|
| - // Sets the page title for the native widgets corresponding to the view. This
|
| - // is not strictly necessary and isn't expected to be displayed anywhere, but
|
| - // can aid certain debugging tools such as Spy++ on Windows where you are
|
| - // trying to find a specific window.
|
| - virtual void SetPageTitle(const std::wstring& title) = 0;
|
| -
|
| - // Used to notify the view that a tab has crashed so each platform can
|
| - // prepare the sad tab.
|
| - virtual void OnTabCrashed(base::TerminationStatus status,
|
| - int error_code) = 0;
|
| -
|
| - // TODO(brettw) this is a hack. It's used in two places at the time of this
|
| - // writing: (1) when render view hosts switch, we need to size the replaced
|
| - // one to be correct, since it wouldn't have known about sizes that happened
|
| - // while it was hidden; (2) in constrained windows.
|
| - //
|
| - // (1) will be fixed once interstitials are cleaned up. (2) seems like it
|
| - // should be cleaned up or done some other way, since this works for normal
|
| - // TabContents without the special code.
|
| - virtual void SizeContents(const gfx::Size& size) = 0;
|
| -
|
| - // Invoked from the platform dependent web contents view when a
|
| - // RenderWidgetHost is deleted. Removes |host| from internal maps.
|
| - void RenderWidgetHostDestroyed(RenderWidgetHost* host);
|
| -
|
| - // Invoked when the TabContents is notified that the RenderView has been
|
| - // fully created. The default implementation does nothing; override
|
| - // for platform-specific behavior is needed.
|
| - virtual void RenderViewCreated(RenderViewHost* host);
|
| -
|
| - // Sets focus to the native widget for this tab.
|
| - virtual void Focus() = 0;
|
| -
|
| - // Sets focus to the appropriate element when the tab contents is shown the
|
| - // first time.
|
| - virtual void SetInitialFocus() = 0;
|
| -
|
| - // Stores the currently focused view.
|
| - virtual void StoreFocus() = 0;
|
| -
|
| - // Restores focus to the last focus view. If StoreFocus has not yet been
|
| - // invoked, SetInitialFocus is invoked.
|
| - virtual void RestoreFocus() = 0;
|
| -
|
| - // RenderViewHostDelegate::View method. Forwards to the TabContentsDelegate.
|
| - virtual void LostCapture();
|
| -
|
| - // Keyboard events forwarding from the RenderViewHost.
|
| - // The default implementation just forward the events to the
|
| - // TabContentsDelegate object.
|
| - virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
|
| - bool* is_keyboard_shortcut);
|
| -
|
| - // Keyboard events forwarding from the RenderViewHost.
|
| - // The default implementation just forward the events to the
|
| - // TabContentsDelegate object.
|
| - virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
|
| -
|
| - // Simple mouse event forwarding from the RenderViewHost.
|
| - virtual void HandleMouseMove() {}
|
| - virtual void HandleMouseDown() {}
|
| - virtual void HandleMouseLeave() {}
|
| - virtual void HandleMouseUp();
|
| - virtual void HandleMouseActivate();
|
| -
|
| - // Notification that the preferred size of the contents has changed.
|
| - virtual void UpdatePreferredSize(const gfx::Size& pref_size);
|
| -
|
| - // If we try to close the tab while a drag is in progress, we crash. These
|
| - // methods allow the tab contents to determine if a drag is in progress and
|
| - // postpone the tab closing.
|
| - virtual bool IsDoingDrag() const;
|
| - virtual void CancelDragAndCloseTab() {}
|
| -
|
| - // If we close the tab while a UI control is in an event-tracking
|
| - // loop, the control may message freed objects and crash.
|
| - // TabContents::Close() calls IsEventTracking(), and if it returns
|
| - // true CloseTabAfterEventTracking() is called and the close is not
|
| - // completed.
|
| - virtual bool IsEventTracking() const;
|
| - virtual void CloseTabAfterEventTracking() {}
|
| -
|
| - // Get the bounds of the View, relative to the parent.
|
| - virtual void GetViewBounds(gfx::Rect* out) const = 0;
|
| -
|
| - protected:
|
| - TabContentsView(); // Abstract interface.
|
| -
|
| - // Internal functions used to support the CreateNewWidget() method. If a
|
| - // platform requires plugging into widget creation at a lower level then a
|
| - // subclass might want to override these functions, but otherwise they should
|
| - // be fine just implementing RenderWidgetHostView::InitAsPopup().
|
| - //
|
| - // The Create function returns the newly created widget so it can be
|
| - // associated with the given route. When the widget needs to be shown later,
|
| - // we'll look it up again and pass the object to the Show functions rather
|
| - // than the route ID.
|
| - virtual RenderWidgetHostView* CreateNewWidgetInternal(
|
| - int route_id,
|
| - WebKit::WebPopupType popup_type);
|
| - virtual void ShowCreatedWidgetInternal(RenderWidgetHostView* widget_host_view,
|
| - const gfx::Rect& initial_pos);
|
| - virtual void ShowCreatedFullscreenWidgetInternal(
|
| - RenderWidgetHostView* widget_host_view);
|
| - virtual RenderWidgetHostView* CreateNewFullscreenWidgetInternal(int route_id);
|
| -
|
| - // Common implementations of some RenderViewHostDelegate::View methods.
|
| - RenderViewHostDelegateViewHelper delegate_view_helper_;
|
| -
|
| - private:
|
| - // We implement these functions on RenderViewHostDelegate::View directly and
|
| - // do some book-keeping associated with the request. The request is then
|
| - // forwarded to *Internal which does platform-specific work.
|
| - virtual void CreateNewWindow(
|
| - int route_id,
|
| - const ViewHostMsg_CreateWindow_Params& params);
|
| - virtual void CreateNewWidget(int route_id, WebKit::WebPopupType popup_type);
|
| - virtual void CreateNewFullscreenWidget(int route_id);
|
| - virtual void ShowCreatedWindow(int route_id,
|
| - WindowOpenDisposition disposition,
|
| - const gfx::Rect& initial_pos,
|
| - bool user_gesture);
|
| - virtual void ShowCreatedWidget(int route_id, const gfx::Rect& initial_pos);
|
| - virtual void Activate();
|
| - virtual void Deactivate();
|
| - virtual void ShowCreatedFullscreenWidget(int route_id);
|
| -
|
| - // The TabContents whose contents we display.
|
| - TabContents* tab_contents_;
|
| -
|
| - // Tracks created TabContents objects that have not been shown yet. They are
|
| - // identified by the route ID passed to CreateNewWindow.
|
| - typedef std::map<int, TabContents*> PendingContents;
|
| - PendingContents pending_contents_;
|
| -
|
| - // These maps hold on to the widgets that we created on behalf of the
|
| - // renderer that haven't shown yet.
|
| - typedef std::map<int, RenderWidgetHostView*> PendingWidgetViews;
|
| - PendingWidgetViews pending_widget_views_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TabContentsView);
|
| -};
|
| -
|
| #endif // CHROME_BROWSER_TAB_CONTENTS_TAB_CONTENTS_VIEW_H_
|
|
|