| Index: chrome/browser/extensions/extension_host.h
|
| diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h
|
| index 98bc31b323be9d5c13ee53659a29f55b00239c8e..4475ade8eb81c7d9e6bdb2a1188564e295d3902c 100644
|
| --- a/chrome/browser/extensions/extension_host.h
|
| +++ b/chrome/browser/extensions/extension_host.h
|
| @@ -12,11 +12,12 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/perftimer.h"
|
| #include "chrome/browser/extensions/extension_function_dispatcher.h"
|
| -#include "chrome/browser/tab_contents/render_view_host_delegate_helper.h"
|
| #include "content/browser/javascript_dialogs.h"
|
| -#include "content/browser/renderer_host/render_view_host_delegate.h"
|
| +#include "content/browser/tab_contents/tab_contents_delegate.h"
|
| +#include "content/browser/tab_contents/tab_contents_observer.h"
|
| #include "content/public/browser/notification_observer.h"
|
| #include "content/public/browser/notification_registrar.h"
|
| +#include "content/public/common/view_types.h"
|
|
|
| #if defined(TOOLKIT_VIEWS)
|
| #include "chrome/browser/ui/views/extensions/extension_view.h"
|
| @@ -38,17 +39,13 @@ struct WebPreferences;
|
| // It handles setting up the renderer process, if needed, with special
|
| // privileges available to extensions. It may have a view to be shown in the
|
| // browser UI, or it may be hidden.
|
| -class ExtensionHost : public RenderViewHostDelegate,
|
| - public RenderViewHostDelegate::View,
|
| +class ExtensionHost : public TabContentsDelegate,
|
| + public TabContentsObserver,
|
| public ExtensionFunctionDispatcher::Delegate,
|
| - public content::NotificationObserver,
|
| - public content::JavaScriptDialogDelegate {
|
| + public content::NotificationObserver {
|
| public:
|
| class ProcessCreationQueue;
|
|
|
| - // Enable DOM automation in created render view hosts.
|
| - static void EnableDOMAutomation() { enable_dom_automation_ = true; }
|
| -
|
| ExtensionHost(const Extension* extension, SiteInstance* site_instance,
|
| const GURL& url, content::ViewType host_type);
|
| virtual ~ExtensionHost();
|
| @@ -73,9 +70,9 @@ class ExtensionHost : public RenderViewHostDelegate,
|
|
|
| const Extension* extension() const { return extension_; }
|
| const std::string& extension_id() const { return extension_id_; }
|
| - RenderViewHost* render_view_host() const { return render_view_host_; }
|
| + TabContents* host_contents() const { return host_contents_.get(); }
|
| + RenderViewHost* render_view_host() const;
|
| RenderProcessHost* render_process_host() const;
|
| - SiteInstance* site_instance() const;
|
| bool did_stop_loading() const { return did_stop_loading_; }
|
| bool document_element_available() const {
|
| return document_element_available_;
|
| @@ -83,9 +80,8 @@ class ExtensionHost : public RenderViewHostDelegate,
|
|
|
| Profile* profile() const { return profile_; }
|
|
|
| - content::ViewType extension_host_type() const {
|
| - return extension_host_type_;
|
| - }
|
| + content::ViewType extension_host_type() const { return extension_host_type_; }
|
| + const GURL& GetURL() const;
|
|
|
| // ExtensionFunctionDispatcher::Delegate
|
| virtual TabContents* GetAssociatedTabContents() const OVERRIDE;
|
| @@ -99,10 +95,7 @@ class ExtensionHost : public RenderViewHostDelegate,
|
| // Prepares to initializes our RenderViewHost by creating its RenderView and
|
| // navigating to this host's url. Uses host_view for the RenderViewHost's view
|
| // (can be NULL). This happens delayed to avoid locking the UI.
|
| - void CreateRenderViewSoon(RenderWidgetHostView* host_view);
|
| -
|
| - // Sets |url_| and navigates |render_view_host_|.
|
| - void NavigateToURL(const GURL& url);
|
| + void CreateRenderViewSoon();
|
|
|
| // Insert a default style sheet for Extension Infobars.
|
| void InsertInfobarCSS();
|
| @@ -111,117 +104,48 @@ class ExtensionHost : public RenderViewHostDelegate,
|
| // |size_limit| in both width and height.
|
| void DisableScrollbarsForSmallWindows(const gfx::Size& size_limit);
|
|
|
| - // RenderViewHostDelegate implementation.
|
| + // TabContentsObserver
|
| virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| - virtual const GURL& GetURL() const OVERRIDE;
|
| virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
|
| - virtual void RenderViewReady(RenderViewHost* render_view_host) OVERRIDE;
|
| - virtual content::ViewType GetRenderViewType() const OVERRIDE;
|
| - virtual void RenderViewGone(RenderViewHost* render_view_host,
|
| - base::TerminationStatus status,
|
| - int error_code) OVERRIDE;
|
| - virtual void DidNavigate(
|
| - RenderViewHost* render_view_host,
|
| - const ViewHostMsg_FrameNavigate_Params& params) OVERRIDE;
|
| + virtual void RenderViewReady() OVERRIDE;
|
| + virtual void RenderViewGone(base::TerminationStatus status) OVERRIDE;
|
| + virtual void DocumentAvailableInMainFrame() OVERRIDE;
|
| virtual void DidStopLoading() OVERRIDE;
|
| - virtual void DocumentAvailableInMainFrame(
|
| - RenderViewHost* render_view_host) OVERRIDE;
|
| - virtual void DocumentOnLoadCompletedInMainFrame(
|
| - RenderViewHost* render_view_host,
|
| - int32 page_id) OVERRIDE;
|
| - virtual RenderViewHostDelegate::View* GetViewDelegate() OVERRIDE;
|
| - virtual WebPreferences GetWebkitPrefs() OVERRIDE;
|
| - virtual void RunJavaScriptMessage(const RenderViewHost* rvh,
|
| - const string16& message,
|
| - const string16& default_prompt,
|
| - const GURL& frame_url,
|
| - const int flags,
|
| - IPC::Message* reply_msg,
|
| - bool* did_suppress_message) OVERRIDE;
|
| - virtual void Close(RenderViewHost* render_view_host) OVERRIDE;
|
| - virtual content::RendererPreferences GetRendererPrefs(
|
| - content::BrowserContext* browser_context) const OVERRIDE;
|
| +
|
| + // TabContentsDelegate
|
| virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event,
|
| bool* is_keyboard_shortcut) OVERRIDE;
|
| virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event)
|
| OVERRIDE;
|
| - virtual void HandleMouseMove() OVERRIDE;
|
| - virtual void HandleMouseDown() OVERRIDE;
|
| - virtual void HandleMouseLeave() OVERRIDE;
|
| - virtual void HandleMouseUp() OVERRIDE;
|
| - virtual void HandleMouseActivate() OVERRIDE;
|
| - virtual void RunFileChooser(RenderViewHost* render_view_host,
|
| - const ViewHostMsg_RunFileChooser_Params& params);
|
| - virtual void UpdatePreferredSize(const gfx::Size& new_size);
|
| -
|
| - // RenderViewHostDelegate::View
|
| - virtual void CreateNewWindow(
|
| - int route_id,
|
| - const ViewHostMsg_CreateWindow_Params& params) OVERRIDE;
|
| - virtual void CreateNewWidget(int route_id,
|
| - WebKit::WebPopupType popup_type) OVERRIDE;
|
| - virtual void CreateNewFullscreenWidget(int route_id) OVERRIDE;
|
| - virtual void ShowCreatedWindow(int route_id,
|
| - WindowOpenDisposition disposition,
|
| - const gfx::Rect& initial_pos,
|
| - bool user_gesture) OVERRIDE;
|
| - virtual void ShowCreatedWidget(int route_id,
|
| - const gfx::Rect& initial_pos) OVERRIDE;
|
| - virtual void ShowCreatedFullscreenWidget(int route_id) OVERRIDE;
|
| - virtual void ShowContextMenu(const ContextMenuParams& params) OVERRIDE;
|
| - virtual void ShowPopupMenu(const gfx::Rect& bounds,
|
| - int item_height,
|
| - double item_font_size,
|
| - int selected_item,
|
| - const std::vector<WebMenuItem>& items,
|
| - bool right_aligned) OVERRIDE;
|
| - virtual void StartDragging(const WebDropData& drop_data,
|
| - WebKit::WebDragOperationsMask allowed_operations,
|
| - const SkBitmap& image,
|
| - const gfx::Point& image_offset) OVERRIDE;
|
| - virtual void UpdateDragCursor(WebKit::WebDragOperation operation) OVERRIDE;
|
| - virtual void GotFocus() OVERRIDE;
|
| - virtual void TakeFocus(bool reverse) OVERRIDE;
|
| + virtual void UpdatePreferredSize(TabContents* source,
|
| + const gfx::Size& pref_size) OVERRIDE;
|
| + virtual content::JavaScriptDialogCreator* GetJavaScriptDialogCreator()
|
| + OVERRIDE;
|
| + virtual void AddNewContents(TabContents* source,
|
| + TabContents* new_contents,
|
| + WindowOpenDisposition disposition,
|
| + const gfx::Rect& initial_pos,
|
| + bool user_gesture) OVERRIDE;
|
| + virtual void CloseContents(TabContents* contents) OVERRIDE;
|
|
|
| // content::NotificationObserver
|
| virtual void Observe(int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) OVERRIDE;
|
|
|
| - // Overridden from content::JavaScriptDialogDelegate:
|
| - virtual void OnDialogClosed(IPC::Message* reply_msg,
|
| - bool success,
|
| - const string16& user_input) OVERRIDE;
|
| - virtual gfx::NativeWindow GetDialogRootWindow() OVERRIDE;
|
| -
|
| protected:
|
| // This should only be used by unit tests.
|
| ExtensionHost(const Extension* extension, content::ViewType host_type);
|
|
|
| - // 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);
|
| private:
|
| friend class ProcessCreationQueue;
|
|
|
| - // Whether to allow DOM automation for created RenderViewHosts. This is used
|
| - // for testing.
|
| - static bool enable_dom_automation_;
|
| -
|
| // Actually create the RenderView for this host. See CreateRenderViewSoon.
|
| void CreateRenderViewNow();
|
|
|
| + // Navigates to the initial page.
|
| + void LoadInitialURL();
|
| +
|
| // Const version of below function.
|
| const Browser* GetBrowser() const;
|
|
|
| @@ -260,10 +184,7 @@ class ExtensionHost : public RenderViewHostDelegate,
|
| #endif
|
|
|
| // The host for our HTML content.
|
| - RenderViewHost* render_view_host_;
|
| -
|
| - // Common implementations of some RenderViewHostDelegate::View methods.
|
| - RenderViewHostDelegateViewHelper delegate_view_helper_;
|
| + scoped_ptr<TabContents> host_contents_;
|
|
|
| // Whether the RenderWidget has reported that it has stopped loading.
|
| bool did_stop_loading_;
|
| @@ -271,8 +192,8 @@ class ExtensionHost : public RenderViewHostDelegate,
|
| // True if the main frame has finished parsing.
|
| bool document_element_available_;
|
|
|
| - // The URL being hosted.
|
| - GURL url_;
|
| + // The original URL of the page being hosted.
|
| + GURL initial_url_;
|
|
|
| content::NotificationRegistrar registrar_;
|
|
|
|
|