summaryrefslogtreecommitdiffstats
path: root/chrome/browser/external_tab_container.h
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-16 03:17:35 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-16 03:17:35 +0000
commit4bdde60b8a5e2a37d59318566708a8549f39b3f8 (patch)
treee770076308432c416e889268c685a84707e7ec23 /chrome/browser/external_tab_container.h
parent28384a325c1646d45ef7c367e61871b20c6a4d0c (diff)
downloadchromium_src-4bdde60b8a5e2a37d59318566708a8549f39b3f8.zip
chromium_src-4bdde60b8a5e2a37d59318566708a8549f39b3f8.tar.gz
chromium_src-4bdde60b8a5e2a37d59318566708a8549f39b3f8.tar.bz2
Clean up of chrome_browser.gypi/nacl_host files.
BUG=none TEST=trybots Review URL: http://codereview.chromium.org/2860001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/external_tab_container.h')
-rw-r--r--chrome/browser/external_tab_container.h336
1 files changed, 0 insertions, 336 deletions
diff --git a/chrome/browser/external_tab_container.h b/chrome/browser/external_tab_container.h
deleted file mode 100644
index a5bf26d..0000000
--- a/chrome/browser/external_tab_container.h
+++ /dev/null
@@ -1,336 +0,0 @@
-// Copyright (c) 2006-2008 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_EXTERNAL_TAB_CONTAINER_H_
-#define CHROME_BROWSER_EXTERNAL_TAB_CONTAINER_H_
-
-#include <vector>
-#include <map>
-
-#include "chrome/browser/automation/automation_resource_message_filter.h"
-#include "chrome/browser/automation/automation_profile_impl.h"
-#include "chrome/browser/browser.h"
-#include "chrome/browser/net/chrome_url_request_context.h"
-#include "chrome/browser/tab_contents/tab_contents_delegate.h"
-#include "chrome/browser/views/frame/browser_bubble_host.h"
-#include "chrome/browser/views/infobars/infobar_container.h"
-#include "chrome/browser/views/unhandled_keyboard_event_handler.h"
-#include "chrome/common/navigation_types.h"
-#include "chrome/common/notification_observer.h"
-#include "chrome/common/notification_registrar.h"
-#include "views/accelerator.h"
-#include "views/widget/widget_win.h"
-
-class AutomationProvider;
-class Profile;
-class TabContentsContainer;
-class RenderViewContextMenuViews;
-
-namespace IPC {
-struct NavigationInfo;
-}
-
-// 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
-// TabContents as well as an implementation of TabContentsDelagate.
-class ExternalTabContainer : public TabContentsDelegate,
- public NotificationObserver,
- public views::WidgetWin,
- public base::RefCounted<ExternalTabContainer>,
- public views::AcceleratorTarget,
- public InfoBarContainer::Delegate,
- public BrowserBubbleHost {
- public:
- typedef std::map<uintptr_t, scoped_refptr<ExternalTabContainer> > PendingTabs;
-
- ExternalTabContainer(AutomationProvider* automation,
- AutomationResourceMessageFilter* filter);
-
- TabContents* tab_contents() const { return tab_contents_; }
-
- // Temporary hack so we can send notifications back
- void SetTabHandle(int handle);
-
- int tab_handle() const {
- return tab_handle_;
- }
-
- bool Init(Profile* profile,
- HWND parent,
- const gfx::Rect& bounds,
- DWORD style,
- bool load_requests_via_automation,
- bool handle_top_level_requests,
- TabContents* existing_tab_contents,
- const GURL& initial_url,
- const GURL& referrer,
- bool infobars_enabled);
-
- // Unhook the keystroke listener and notify about the closing TabContents.
- // This function gets called from three places, which is fine.
- // 1. OnFinalMessage
- // 2. In the destructor.
- // 3. In AutomationProvider::CreateExternalTab
- void Uninitialize();
-
- // Used to reinitialize the automation channel and related information
- // for this container. Typically used when an ExternalTabContainer
- // instance is created by Chrome and attached to an automation client.
- bool Reinitialize(AutomationProvider* automation_provider,
- AutomationResourceMessageFilter* filter);
-
- // 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::FocusThroughTabTraversal. Called from AutomationProvider.
- void FocusThroughTabTraversal(bool reverse, bool restore_focus_to_view);
-
- // A helper method that tests whether the given window is an
- // ExternalTabContainer window
- static bool IsExternalTabContainer(HWND window);
-
- // A helper function that returns a pointer to the ExternalTabContainer
- // instance associated with a native view. Returns NULL if the window
- // is not an ExternalTabContainer.
- static ExternalTabContainer* GetExternalContainerFromNativeWindow(
- gfx::NativeView native_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,
- 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);
- virtual void URLStarredChanged(TabContents* source, bool starred);
- virtual void UpdateTargetURL(TabContents* source, const GURL& url);
- virtual void ContentsZoomChange(bool zoom_in);
- virtual void ToolbarSizeChanged(TabContents* source, bool is_animating);
- virtual void ForwardMessageToExternalHost(const std::string& message,
- const std::string& origin,
- const std::string& target);
- virtual bool IsExternalTabContainer() const {
- return true;
- };
- virtual gfx::NativeWindow GetFrameNativeWindow();
-
- virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
- bool* is_keyboard_shortcut);
- virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
-
- virtual bool TakeFocus(bool reverse);
-
- virtual bool CanDownload(int request_id);
-
- virtual bool OnGoToEntryOffset(int offset);
-
- virtual void ShowPageInfo(Profile* profile,
- const GURL& url,
- const NavigationEntry::SSLStatus& ssl,
- bool show_history);
-
- virtual Browser* GetBrowser() { return browser_.get(); }
-
- // Overriden from TabContentsDelegate::AutomationResourceRoutingDelegate
- virtual void RegisterRenderViewHost(RenderViewHost* render_view_host);
- virtual void UnregisterRenderViewHost(RenderViewHost* render_view_host);
-
- // Overridden from NotificationObserver:
- virtual void Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details);
-
- // Handles the context menu display operation. This allows external
- // hosts to customize the menu.
- virtual bool HandleContextMenu(const ContextMenuParams& params);
-
- // Executes the context menu command identified by the command
- // parameter.
- virtual bool ExecuteContextMenuCommand(int command);
-
- // Show a dialog with HTML content. |delegate| contains a pointer to the
- // delegate who knows how to display the dialog (which file URL and JSON
- // string input to use during initialization). |parent_window| is the window
- // that should be parent of the dialog, or NULL for the default.
- virtual void ShowHtmlDialog(HtmlDialogUIDelegate* delegate,
- gfx::NativeWindow parent_window);
-
- // Returns the ExternalTabContainer instance associated with the cookie
- // passed in. It also erases the corresponding reference from the map.
- // Returns NULL if we fail to find the cookie in the map.
- static scoped_refptr<ExternalTabContainer> RemovePendingTab(uintptr_t cookie);
-
- // Enables extension automation (for e.g. UITests), with the current tab
- // used as a conduit for the extension API messages being handled by the
- // automation client.
- void SetEnableExtensionAutomation(
- const std::vector<std::string>& functions_enabled);
-
- // Overridden from views::WidgetWin:
- virtual views::Window* GetWindow();
-
- // Handles the specified |accelerator| being pressed.
- bool AcceleratorPressed(const views::Accelerator& accelerator);
-
- bool pending() const {
- return pending_;
- }
-
- void set_pending(bool pending) {
- pending_ = pending;
- }
-
- // InfoBarContainer::Delegate overrides
- virtual void InfoBarSizeChanged(bool is_animating);
-
- virtual void TabContentsCreated(TabContents* new_contents);
-
- virtual bool infobars_enabled();
-
- protected:
- // Overridden from views::WidgetWin:
- virtual LRESULT OnCreate(LPCREATESTRUCT create_struct);
- virtual void OnDestroy();
- virtual void OnFinalMessage(HWND window);
-
- bool InitNavigationInfo(IPC::NavigationInfo* nav_info,
- NavigationType::Type nav_type,
- int relative_offset);
- void Navigate(const GURL& url, const GURL& referrer);
-
- // Initializes the request context to be used for automation HTTP requests.
- void InitializeAutomationRequestContext(int tab_handle);
-
- private:
- friend class base::RefCounted<ExternalTabContainer>;
-
- ~ExternalTabContainer();
-
- // Helper resource automation registration method, allowing registration of
- // pending RenderViewHosts.
- void RegisterRenderViewHostForAutomation(RenderViewHost* render_view_host,
- bool pending_view);
-
- // Top level navigations received for a tab while it is waiting for an ack
- // from the external host go here. Scenario is a window.open executes on a
- // page in ChromeFrame. A new TabContents is created and the current
- // ExternalTabContainer is notified via AddNewContents. At this point we
- // send off an attach tab request to the host browser. Before the host
- // browser sends over the ack, we receive a top level URL navigation for the
- // new tab, which needs to be routed over the correct automation channel.
- // We receive the automation channel only when the external host acks the
- // attach tab request.
- struct PendingTopLevelNavigation {
- GURL url;
- GURL referrer;
- WindowOpenDisposition disposition;
- PageTransition::Type transition;
- };
-
- // Helper function for processing keystokes coming back from the renderer
- // process.
- bool ProcessUnhandledKeyStroke(HWND window, UINT message, WPARAM wparam,
- LPARAM lparam);
-
- void LoadAccelerators();
-
- // Sends over pending Open URL requests to the external host.
- void ServicePendingOpenURLRequests();
-
- // Scheduled as a task in ExternalTabContainer::Reinitialize
- void OnReinitialize();
-
- // Creates and initializes the view hierarchy for this ExternalTabContainer.
- void SetupExternalTabView();
-
- TabContents* tab_contents_;
- scoped_refptr<AutomationProvider> automation_;
-
- NotificationRegistrar registrar_;
-
- // A view to handle focus cycling
- TabContentsContainer* tab_contents_container_;
-
- 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
- // to avoid confusing the clients of the external tab. This member variable
- // is set when we need to ignore the next load notification.
- bool ignore_next_load_notification_;
-
- scoped_ptr<RenderViewContextMenuViews> external_context_menu_;
-
- // A message filter to load resources via automation
- scoped_refptr<AutomationResourceMessageFilter>
- automation_resource_message_filter_;
-
- // If all the url requests for this tab are to be loaded via automation.
- bool load_requests_via_automation_;
-
- // whether top level URL requests are to be handled by the automation client.
- bool handle_top_level_requests_;
-
- // Scoped browser object for this ExternalTabContainer instance.
- scoped_ptr<Browser> browser_;
-
- // Contains ExternalTabContainers that have not been connected to as yet.
- static PendingTabs pending_tabs_;
-
- // True if this tab is currently the conduit for extension API automation.
- bool enabled_extension_automation_;
-
- // Allows us to run tasks on the ExternalTabContainer instance which are
- // bound by its lifetime.
- ScopedRunnableMethodFactory<ExternalTabContainer> external_method_factory_;
-
- // The URL request context to be used for this tab. Can be NULL.
- scoped_refptr<ChromeURLRequestContextGetter> request_context_;
-
- UnhandledKeyboardEventHandler unhandled_keyboard_event_handler_;
-
- // A mapping between accelerators and commands.
- std::map<views::Accelerator, int> accelerator_table_;
-
- // Set to true if the tab is waiting for the unload event to complete.
- bool waiting_for_unload_event_;
-
- // Pointer to the innermost ExternalTabContainer instance which is waiting
- // for the unload event listeners to finish.
- // Used to maintain a local global stack of containers.
- static ExternalTabContainer* innermost_tab_for_unload_event_;
-
- // Contains the list of URL requests which are pending waiting for an ack
- // from the external host.
- std::vector<PendingTopLevelNavigation> pending_open_url_requests_;
-
- // Set to true if the ExternalTabContainer instance is waiting for an ack
- // from the host.
- bool pending_;
-
- // Set to true if the ExternalTabContainer if infobars should be enabled.
- bool infobars_enabled_;
-
- views::FocusManager* focus_manager_;
-
- DISALLOW_COPY_AND_ASSIGN(ExternalTabContainer);
-};
-
-#endif // CHROME_BROWSER_EXTERNAL_TAB_CONTAINER_H_