| Index: chrome/browser/external_tab_container.h
|
| ===================================================================
|
| --- chrome/browser/external_tab_container.h (revision 16974)
|
| +++ chrome/browser/external_tab_container.h (working copy)
|
| @@ -5,25 +5,15 @@
|
| #ifndef CHROME_BROWSER_EXTERNAL_TAB_CONTAINER_H_
|
| #define CHROME_BROWSER_EXTERNAL_TAB_CONTAINER_H_
|
|
|
| -#include <atlbase.h>
|
| -#include <atlapp.h>
|
| -#include <atlcrack.h>
|
| -#include <atlmisc.h>
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| #include "chrome/browser/tab_contents/tab_contents_delegate.h"
|
| -#include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/notification_observer.h"
|
| #include "chrome/common/notification_registrar.h"
|
| -#include "views/focus/focus_manager.h"
|
| -#include "views/widget/root_view.h"
|
| -#include "views/widget/widget.h"
|
| +#include "views/widget/widget_win.h"
|
|
|
| class AutomationProvider;
|
| -class TabContents;
|
| class Profile;
|
| class TabContentsContainer;
|
| +
|
| // This class serves as the container window for an external tab.
|
| // An external tab is a Chrome tab that is meant to displayed in an
|
| // external process. This class provides the FocusManger needed by the
|
| @@ -31,40 +21,40 @@
|
| // TODO(beng): Should override WidgetWin instead of Widget.
|
| class ExternalTabContainer : public TabContentsDelegate,
|
| public NotificationObserver,
|
| - public views::Widget,
|
| - public views::KeystrokeListener,
|
| - public CWindowImpl<ExternalTabContainer,
|
| - CWindow,
|
| - CWinTraits<WS_POPUP |
|
| - WS_CLIPCHILDREN>> {
|
| + public views::WidgetWin,
|
| + public views::KeystrokeListener {
|
| public:
|
| - BEGIN_MSG_MAP(ExternalTabContainer)
|
| - MESSAGE_HANDLER(WM_SIZE, OnSize)
|
| - MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
|
| - END_MSG_MAP()
|
| -
|
| - DECLARE_WND_CLASS(chrome::kExternalTabWindowClass)
|
| -
|
| - ExternalTabContainer(AutomationProvider* automation);
|
| + explicit ExternalTabContainer(AutomationProvider* automation);
|
| ~ExternalTabContainer();
|
|
|
| - TabContents* tab_contents() const {
|
| - return tab_contents_;
|
| - }
|
| + TabContents* tab_contents() const { return tab_contents_; }
|
|
|
| // Temporary hack so we can send notifications back
|
| - void set_tab_handle(int handle) {
|
| - tab_handle_ = handle;
|
| - }
|
| + void set_tab_handle(int handle) { tab_handle_ = handle; }
|
|
|
| - bool Init(Profile* profile, HWND parent, const gfx::Rect& dimensions,
|
| - unsigned int style);
|
| + bool Init(Profile* profile,
|
| + HWND parent,
|
| + const gfx::Rect& bounds,
|
| + DWORD style);
|
|
|
| - // This function gets called from two places, which is fine.
|
| - // 1. OnFinalMessage
|
| - // 2. In the destructor.
|
| - bool Uninitialize(HWND window);
|
| + // Sets the keyboard accelerators needed by the external host
|
| + void SetAccelerators(HACCEL accel_table, int accel_table_entry_count);
|
|
|
| + // This is invoked when the external host reflects back to us a keyboard
|
| + // message it did not process
|
| + void ProcessUnhandledAccelerator(const MSG& msg);
|
| +
|
| + // See TabContents::SetInitialFocus. Called from AutomationProvider.
|
| + void SetInitialFocus(bool reverse);
|
| +
|
| + // A helper method that tests whether the given window is an
|
| + // ExternalTabContainer window
|
| + static bool IsExternalTabContainer(HWND window);
|
| +
|
| + // A helper method that retrieves the ExternalTabContainer object that
|
| + // hosts the given tab window.
|
| + static ExternalTabContainer* GetContainerForTab(HWND tab_window);
|
| +
|
| // Overridden from TabContentsDelegate:
|
| virtual void OpenURLFromTab(TabContents* source,
|
| const GURL& url,
|
| @@ -93,86 +83,42 @@
|
| virtual bool IsExternalTabContainer() const {
|
| return true;
|
| };
|
| -
|
| - // Creates an ExtensionFunctionDispatcher that has no browser
|
| virtual ExtensionFunctionDispatcher *CreateExtensionFunctionDispatcher(
|
| RenderViewHost* render_view_host,
|
| const std::string& extension_id);
|
| -
|
| virtual bool TakeFocus(bool reverse);
|
|
|
| - // Notification service callback.
|
| + // Overridden from NotificationObserver:
|
| virtual void Observe(NotificationType type,
|
| const NotificationSource& source,
|
| const NotificationDetails& details);
|
|
|
| - /////////////////////////////////////////////////////////////////////////////
|
| - // views::Widget
|
| - /////////////////////////////////////////////////////////////////////////////
|
| - virtual void GetBounds(gfx::Rect* out, bool including_frame) const;
|
| - virtual void SetBounds(const gfx::Rect& bounds);
|
| - virtual void SetBounds(const gfx::Rect& bounds,
|
| - gfx::NativeWindow other_window);
|
| - virtual void Close();
|
| - virtual void CloseNow();
|
| - virtual void Show();
|
| - virtual void Hide();
|
| - virtual gfx::NativeView GetNativeView() const;
|
| - virtual void PaintNow(const gfx::Rect& update_rect);
|
| - virtual void SetOpacity(unsigned char opacity);
|
| - virtual views::RootView* GetRootView();
|
| - virtual Widget* GetRootWidget() const { return NULL; }
|
| - virtual bool IsVisible() const;
|
| - virtual bool IsActive() const;
|
| - virtual bool GetAccelerator(int cmd_id,
|
| - views::Accelerator* accelerator) {
|
| - return false;
|
| - }
|
| -
|
| - // views::KeystrokeListener implementation
|
| - // This method checks whether this key[down|up] message is needed by the
|
| - // external host. If so, it sends it over to the external host
|
| + // Overridden from views::KeystrokeListener:
|
| virtual bool ProcessKeyStroke(HWND window, UINT message, WPARAM wparam,
|
| LPARAM lparam);
|
|
|
| - // Sets the keyboard accelerators needed by the external host
|
| - void SetAccelerators(HACCEL accel_table, int accel_table_entry_count);
|
| -
|
| - // This is invoked when the external host reflects back to us a keyboard
|
| - // message it did not process
|
| - void ProcessUnhandledAccelerator(const MSG& msg);
|
| -
|
| - // See TabContents::SetInitialFocus
|
| - void SetInitialFocus(bool reverse);
|
| -
|
| - // A helper method that tests whether the given window is an
|
| - // ExternalTabContainer window
|
| - static bool IsExternalTabContainer(HWND window);
|
| -
|
| - // A helper method that retrieves the ExternalTabContainer object that
|
| - // hosts the given tab window.
|
| - static ExternalTabContainer* GetContainerForTab(HWND tab_window);
|
| -
|
| protected:
|
| - LRESULT OnSize(UINT, WPARAM, LPARAM, BOOL& handled);
|
| - LRESULT OnDestroy(UINT, WPARAM, LPARAM, BOOL& handled);
|
| - void OnFinalMessage(HWND window);
|
| + // Overridden from views::WidgetWin:
|
| + virtual void OnDestroy();
|
|
|
| - protected:
|
| + private:
|
| + // Unhook the keystroke listener and notify about the closing TabContents.
|
| + // This function gets called from two places, which is fine.
|
| + // 1. OnFinalMessage
|
| + // 2. In the destructor.
|
| + void Uninitialize(HWND window);
|
| +
|
| TabContents* tab_contents_;
|
| scoped_refptr<AutomationProvider> automation_;
|
|
|
| NotificationRegistrar registrar_;
|
|
|
| - // Root view
|
| - views::RootView root_view_;
|
| // The accelerator table of the external host.
|
| HACCEL external_accel_table_;
|
| unsigned int external_accel_entry_count_;
|
| // A view to handle focus cycling
|
| TabContentsContainer* tab_contents_container_;
|
|
|
| - private:
|
| int tab_handle_;
|
| // A failed navigation like a 404 is followed in chrome with a success
|
| // navigation for the 404 page. We need to ignore the next navigation
|
|
|