Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(615)

Unified Diff: chrome/browser/extensions/extension_host.h

Issue 92043: Refactor ExtensionView to support a UI-less extension instance.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension.cc ('k') | chrome/browser/extensions/extension_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_host.h
===================================================================
--- chrome/browser/extensions/extension_host.h (revision 14092)
+++ chrome/browser/extensions/extension_host.h (working copy)
@@ -2,21 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_VIEW_H_
-#define CHROME_BROWSER_EXTENSIONS_EXTENSION_VIEW_H_
+#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/tab_contents/render_view_host_delegate_helper.h"
-// TODO(port): Port these files.
-#if defined(OS_WIN)
-#include "chrome/browser/views/hwnd_html_view.h"
-#else
-#include "chrome/common/temp_scaffolding_stubs.h"
-#endif
-
class Browser;
class Extension;
+class ExtensionView;
class RenderWidgetHost;
class RenderWidgetHostView;
class WebContents;
@@ -24,27 +18,31 @@
// This class is the browser component of an extension component's RenderView.
// It handles setting up the renderer process, if needed, with special
-// priviliges available to extensions. The view may be drawn to the screen or
-// hidden.
-class ExtensionView : public HWNDHtmlView,
- public RenderViewHostDelegate,
+// privileges available to extensions. It may have a view to be shown in the
+// in the browser UI, or it may be hidden.
+class ExtensionHost : public RenderViewHostDelegate,
public RenderViewHostDelegate::View {
public:
- ExtensionView(Extension* extension,
- const GURL& url,
- SiteInstance* instance,
- Browser* browser);
+ ExtensionHost(Extension* extension, SiteInstance* site_instance);
+ ~ExtensionHost();
- // HWNDHtmlView
- virtual void CreatingRenderer();
+ void set_view(ExtensionView* view) { view_ = view; }
+ ExtensionView* view() const { return view_; }
+ Extension* extension() { return extension_; }
+ RenderViewHost* render_view_host() const { return render_view_host_; }
+ SiteInstance* site_instance() const;
+ bool did_stop_loading() const { return did_stop_loading_; }
+ // Initializes our RenderViewHost by creating its RenderView and navigating
+ // to the given URL. Uses host_view for the RenderViewHost's view (can be
+ // NULL).
+ void CreateRenderView(const GURL& url, RenderWidgetHostView* host_view);
+
// RenderViewHostDelegate
// TODO(mpcomplete): GetProfile is unused.
virtual Profile* GetProfile() const { return NULL; }
virtual void RenderViewCreated(RenderViewHost* render_view_host);
virtual void DidContentsPreferredWidthChange(const int pref_width);
- virtual void DidStopLoading(RenderViewHost* render_view_host,
- int32 page_id);
virtual WebPreferences GetWebkitPrefs();
virtual void RunJavaScriptMessage(
const std::wstring& message,
@@ -53,9 +51,11 @@
const int flags,
IPC::Message* reply_msg,
bool* did_suppress_message);
- virtual void DidStartLoading(RenderViewHost* render_view_host,
- int32 page_id);
+ virtual void DidStartLoading(RenderViewHost* render_view_host);
+ virtual void DidStopLoading(RenderViewHost* render_view_host);
virtual RenderViewHostDelegate::View* GetViewDelegate() const;
+ virtual ExtensionFunctionDispatcher* CreateExtensionFunctionDispatcher(
+ RenderViewHost *render_view_host, const std::string& extension_id);
// RenderViewHostDelegate::View
virtual void CreateNewWindow(int route_id,
@@ -73,18 +73,28 @@
virtual void TakeFocus(bool reverse);
virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
- Extension* extension() { return extension_; }
private:
+ // If this ExtensionHost has a view, this returns the Browser that view is a
+ // part of. If this is a global background page, we use the active Browser
+ // instead.
+ Browser* GetBrowser();
+
// The extension that we're hosting in this view.
Extension* extension_;
- // The browser window that this view is in.
- Browser* browser_;
+ // Optional view that shows the rendered content in the UI.
+ ExtensionView* view_;
+ // The host for our HTML content.
+ RenderViewHost* render_view_host_;
+
// Common implementations of some RenderViewHostDelegate::View methods.
RenderViewHostDelegateViewHelper delegate_view_helper_;
- DISALLOW_COPY_AND_ASSIGN(ExtensionView);
+ // Whether the RenderWidget has reported that it has stopped loading.
+ bool did_stop_loading_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionHost);
};
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_VIEW_H_
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_
« no previous file with comments | « chrome/browser/extensions/extension.cc ('k') | chrome/browser/extensions/extension_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698