OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/perftimer.h" | 10 #include "base/perftimer.h" |
11 #include "base/scoped_ptr.h" | 11 #include "base/scoped_ptr.h" |
12 #include "chrome/browser/extensions/extension_function_dispatcher.h" | 12 #include "chrome/browser/extensions/extension_function_dispatcher.h" |
13 #include "chrome/browser/extensions/extension_popup_host.h" | |
14 #include "chrome/browser/jsmessage_box_client.h" | 13 #include "chrome/browser/jsmessage_box_client.h" |
15 #include "chrome/browser/renderer_host/render_view_host_delegate.h" | 14 #include "chrome/browser/renderer_host/render_view_host_delegate.h" |
16 #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" | 15 #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" |
17 #if defined(TOOLKIT_VIEWS) | 16 #if defined(TOOLKIT_VIEWS) |
18 #include "chrome/browser/views/extensions/extension_view.h" | 17 #include "chrome/browser/views/extensions/extension_view.h" |
19 #elif defined(OS_MACOSX) | 18 #elif defined(OS_MACOSX) |
20 #include "chrome/browser/cocoa/extension_view_mac.h" | 19 #include "chrome/browser/cocoa/extension_view_mac.h" |
21 #elif defined(TOOLKIT_GTK) | 20 #elif defined(TOOLKIT_GTK) |
22 #include "chrome/browser/gtk/extension_view_gtk.h" | 21 #include "chrome/browser/gtk/extension_view_gtk.h" |
23 #endif | 22 #endif |
24 #include "chrome/common/notification_registrar.h" | 23 #include "chrome/common/notification_registrar.h" |
25 | 24 |
26 | 25 |
27 class Browser; | 26 class Browser; |
28 class Extension; | 27 class Extension; |
29 class ExtensionProcessManager; | 28 class ExtensionProcessManager; |
30 class RenderProcessHost; | 29 class RenderProcessHost; |
31 class RenderWidgetHost; | 30 class RenderWidgetHost; |
32 class RenderWidgetHostView; | 31 class RenderWidgetHostView; |
33 class TabContents; | 32 class TabContents; |
34 struct WebPreferences; | 33 struct WebPreferences; |
35 | 34 |
36 // This class is the browser component of an extension component's RenderView. | 35 // This class is the browser component of an extension component's RenderView. |
37 // It handles setting up the renderer process, if needed, with special | 36 // It handles setting up the renderer process, if needed, with special |
38 // privileges available to extensions. It may have a view to be shown in the | 37 // privileges available to extensions. It may have a view to be shown in the |
39 // in the browser UI, or it may be hidden. | 38 // in the browser UI, or it may be hidden. |
40 class ExtensionHost : public ExtensionPopupHost::PopupDelegate, | 39 class ExtensionHost : public RenderViewHostDelegate, |
41 public RenderViewHostDelegate, | |
42 public RenderViewHostDelegate::View, | 40 public RenderViewHostDelegate::View, |
43 public ExtensionFunctionDispatcher::Delegate, | 41 public ExtensionFunctionDispatcher::Delegate, |
44 public NotificationObserver, | 42 public NotificationObserver, |
45 public JavaScriptMessageBoxClient { | 43 public JavaScriptMessageBoxClient { |
46 public: | 44 public: |
47 class ProcessCreationQueue; | 45 class ProcessCreationQueue; |
48 | 46 |
49 // Enable DOM automation in created render view hosts. | 47 // Enable DOM automation in created render view hosts. |
50 static void EnableDOMAutomation() { enable_dom_automation_ = true; } | 48 static void EnableDOMAutomation() { enable_dom_automation_ = true; } |
51 | 49 |
(...skipping 20 matching lines...) Expand all Loading... |
72 void CreateView(Browser* browser); | 70 void CreateView(Browser* browser); |
73 | 71 |
74 Extension* extension() { return extension_; } | 72 Extension* extension() { return extension_; } |
75 RenderViewHost* render_view_host() const { return render_view_host_; } | 73 RenderViewHost* render_view_host() const { return render_view_host_; } |
76 RenderProcessHost* render_process_host() const; | 74 RenderProcessHost* render_process_host() const; |
77 SiteInstance* site_instance() const; | 75 SiteInstance* site_instance() const; |
78 bool did_stop_loading() const { return did_stop_loading_; } | 76 bool did_stop_loading() const { return did_stop_loading_; } |
79 bool document_element_available() const { | 77 bool document_element_available() const { |
80 return document_element_available_; | 78 return document_element_available_; |
81 } | 79 } |
| 80 gfx::NativeView GetNativeViewOfHost() { |
| 81 return view() ? view()->native_view() : NULL; |
| 82 } |
| 83 |
82 Profile* profile() const { return profile_; } | 84 Profile* profile() const { return profile_; } |
83 | 85 |
84 ViewType::Type extension_host_type() const { return extension_host_type_; } | 86 ViewType::Type extension_host_type() const { return extension_host_type_; } |
85 | 87 |
86 // Sets the the ViewType of this host (e.g. mole, toolstrip). | 88 // Sets the the ViewType of this host (e.g. mole, toolstrip). |
87 void SetRenderViewType(ViewType::Type type); | 89 void SetRenderViewType(ViewType::Type type); |
88 | 90 |
89 // Returns true if the render view is initialized and didn't crash. | 91 // Returns true if the render view is initialized and didn't crash. |
90 bool IsRenderViewLive() const; | 92 bool IsRenderViewLive() const; |
91 | 93 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 // Actually create the RenderView for this host. See CreateRenderViewSoon. | 199 // Actually create the RenderView for this host. See CreateRenderViewSoon. |
198 void CreateRenderViewNow(); | 200 void CreateRenderViewNow(); |
199 | 201 |
200 // ExtensionFunctionDispatcher::Delegate | 202 // ExtensionFunctionDispatcher::Delegate |
201 // If this ExtensionHost has a view, this returns the Browser that view is a | 203 // If this ExtensionHost has a view, this returns the Browser that view is a |
202 // part of. If this is a global background page, we use the active Browser | 204 // part of. If this is a global background page, we use the active Browser |
203 // instead. | 205 // instead. |
204 virtual Browser* GetBrowser(bool include_incognito) const; | 206 virtual Browser* GetBrowser(bool include_incognito) const; |
205 virtual ExtensionHost* GetExtensionHost() { return this; } | 207 virtual ExtensionHost* GetExtensionHost() { return this; } |
206 | 208 |
207 // ExtensionPopupHost::Delegate | |
208 virtual Browser* GetBrowser() const { return GetBrowser(true); } | 209 virtual Browser* GetBrowser() const { return GetBrowser(true); } |
209 virtual RenderViewHost* GetRenderViewHost() { return render_view_host(); } | 210 virtual RenderViewHost* GetRenderViewHost() { return render_view_host(); } |
210 virtual gfx::NativeView GetNativeViewOfHost() { | |
211 return view() ? view()->native_view() : NULL; | |
212 } | |
213 | 211 |
214 // Handles keyboard events that were not handled by HandleKeyboardEvent(). | 212 // Handles keyboard events that were not handled by HandleKeyboardEvent(). |
215 // Platform specific implementation may override this method to handle the | 213 // Platform specific implementation may override this method to handle the |
216 // event in platform specific way. | 214 // event in platform specific way. |
217 virtual void UnhandledKeyboardEvent(const NativeWebKeyboardEvent& event) {} | 215 virtual void UnhandledKeyboardEvent(const NativeWebKeyboardEvent& event) {} |
218 | 216 |
219 // Returns true if we're hosting a background page. | 217 // Returns true if we're hosting a background page. |
220 // This isn't valid until CreateRenderView is called. | 218 // This isn't valid until CreateRenderView is called. |
221 bool is_background_page() const { return !view(); } | 219 bool is_background_page() const { return !view(); } |
222 | 220 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 // are used here, others are not hosted by ExtensionHost. | 256 // are used here, others are not hosted by ExtensionHost. |
259 ViewType::Type extension_host_type_; | 257 ViewType::Type extension_host_type_; |
260 | 258 |
261 // Used to measure how long it's been since the host was created. | 259 // Used to measure how long it's been since the host was created. |
262 PerfTimer since_created_; | 260 PerfTimer since_created_; |
263 | 261 |
264 DISALLOW_COPY_AND_ASSIGN(ExtensionHost); | 262 DISALLOW_COPY_AND_ASSIGN(ExtensionHost); |
265 }; | 263 }; |
266 | 264 |
267 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_ | 265 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_HOST_H_ |
OLD | NEW |