OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_RENDERER_RENDER_VIEW_H_ | 5 #ifndef CHROME_RENDERER_RENDER_VIEW_H_ |
6 #define CHROME_RENDERER_RENDER_VIEW_H_ | 6 #define CHROME_RENDERER_RENDER_VIEW_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
12 #include "base/scoped_handle.h" | 12 #include "base/scoped_handle.h" |
13 #include "base/gfx/point.h" | 13 #include "base/gfx/point.h" |
14 #include "base/gfx/rect.h" | 14 #include "base/gfx/rect.h" |
15 #include "base/timer.h" | 15 #include "base/timer.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "chrome/common/page_zoom.h" | 17 #include "chrome/common/page_zoom.h" |
18 #include "chrome/common/resource_dispatcher.h" | 18 #include "chrome/common/resource_dispatcher.h" |
19 #ifdef CHROME_PERSONALIZATION | 19 #ifdef CHROME_PERSONALIZATION |
20 #include "chrome/personalization/personalization.h" | 20 #include "chrome/personalization/personalization.h" |
21 #endif | 21 #endif |
22 #include "chrome/renderer/automation/dom_automation_controller.h" | 22 #include "chrome/renderer/automation/dom_automation_controller.h" |
23 #include "chrome/renderer/dom_ui_bindings.h" | 23 #include "chrome/renderer/dom_ui_bindings.h" |
24 #include "chrome/renderer/external_host_bindings.h" | 24 #include "chrome/renderer/external_host_bindings.h" |
25 #include "chrome/renderer/external_js_object.h" | 25 #include "chrome/renderer/external_js_object.h" |
26 #include "chrome/renderer/render_process.h" | 26 #include "chrome/renderer/render_process.h" |
27 #include "chrome/renderer/render_widget.h" | 27 #include "chrome/renderer/render_widget.h" |
| 28 #include "testing/gtest/include/gtest/gtest_prod.h" |
28 #include "webkit/glue/console_message_level.h" | 29 #include "webkit/glue/console_message_level.h" |
29 #include "webkit/glue/dom_serializer_delegate.h" | 30 #include "webkit/glue/dom_serializer_delegate.h" |
30 #include "webkit/glue/glue_accessibility.h" | 31 #include "webkit/glue/glue_accessibility.h" |
31 #include "webkit/glue/webview_delegate.h" | 32 #include "webkit/glue/webview_delegate.h" |
32 #include "webkit/glue/webview.h" | 33 #include "webkit/glue/webview.h" |
33 | 34 |
34 // RenderView is a diamond-shaped hierarchy, with WebWidgetDelegate at the root. | 35 // RenderView is a diamond-shaped hierarchy, with WebWidgetDelegate at the root. |
35 // VS warns when we inherit the WebWidgetDelegate method implementations from | 36 // VS warns when we inherit the WebWidgetDelegate method implementations from |
36 // RenderWidget. It's safe to ignore that warning. | 37 // RenderWidget. It's safe to ignore that warning. |
37 #pragma warning(disable: 4250) | 38 #pragma warning(disable: 4250) |
38 | 39 |
39 class DebugMessageHandler; | 40 class DebugMessageHandler; |
40 class GURL; | 41 class GURL; |
| 42 class RenderThread; |
41 class SkBitmap; | 43 class SkBitmap; |
42 struct ThumbnailScore; | 44 struct ThumbnailScore; |
43 class WebError; | 45 class WebError; |
44 class WebFrame; | 46 class WebFrame; |
45 class WebPluginDelegate; | 47 class WebPluginDelegate; |
46 class WebPluginDelegateProxy; | 48 class WebPluginDelegateProxy; |
47 enum WebRequestCachePolicy; | 49 enum WebRequestCachePolicy; |
48 | 50 |
49 namespace webkit_glue { | 51 namespace webkit_glue { |
50 struct FileUploadData; | 52 struct FileUploadData; |
(...skipping 10 matching lines...) Expand all Loading... |
61 // kMaximumNumberOfPopups popups are created. | 63 // kMaximumNumberOfPopups popups are created. |
62 // | 64 // |
63 // This is a RefCounted holder of an int because I can't say | 65 // This is a RefCounted holder of an int because I can't say |
64 // scoped_refptr<int>. | 66 // scoped_refptr<int>. |
65 typedef base::RefCountedData<int> SharedRenderViewCounter; | 67 typedef base::RefCountedData<int> SharedRenderViewCounter; |
66 | 68 |
67 // | 69 // |
68 // RenderView is an object that manages a WebView object, and provides a | 70 // RenderView is an object that manages a WebView object, and provides a |
69 // communication interface with an embedding application process | 71 // communication interface with an embedding application process |
70 // | 72 // |
71 class RenderView : public RenderWidget, public WebViewDelegate, | 73 class RenderView : public RenderWidget, |
| 74 public WebViewDelegate, |
72 public webkit_glue::DomSerializerDelegate { | 75 public webkit_glue::DomSerializerDelegate { |
73 public: | 76 public: |
74 // Creates a new RenderView. The parent_hwnd specifies a HWND to use as the | 77 // Creates a new RenderView. The parent_hwnd specifies a HWND to use as the |
75 // parent of the WebView HWND that will be created. The modal_dialog_event | 78 // parent of the WebView HWND that will be created. The modal_dialog_event |
76 // is set by the RenderView whenever a modal dialog alert is shown, so that | 79 // is set by the RenderView whenever a modal dialog alert is shown, so that |
77 // the renderer and plugin processes know to pump window messages. If this | 80 // the renderer and plugin processes know to pump window messages. If this |
78 // is a constrained popup or as a new tab, opener_id is the routing ID of the | 81 // is a constrained popup or as a new tab, opener_id is the routing ID of the |
79 // RenderView responsible for creating this RenderView (corresponding to the | 82 // RenderView responsible for creating this RenderView (corresponding to the |
80 // parent_hwnd). |counter| is either a currently initialized counter, or NULL | 83 // parent_hwnd). |counter| is either a currently initialized counter, or NULL |
81 // (in which case we treat this RenderView as a top level window). | 84 // (in which case we treat this RenderView as a top level window). |
82 static RenderView* Create( | 85 static RenderView* Create( |
| 86 RenderThreadBase* render_thread, |
83 HWND parent_hwnd, | 87 HWND parent_hwnd, |
84 HANDLE modal_dialog_event, | 88 HANDLE modal_dialog_event, |
85 int32 opener_id, | 89 int32 opener_id, |
86 const WebPreferences& webkit_prefs, | 90 const WebPreferences& webkit_prefs, |
87 SharedRenderViewCounter* counter, | 91 SharedRenderViewCounter* counter, |
88 int32 routing_id); | 92 int32 routing_id); |
89 | 93 |
90 // Sets the "next page id" counter. | 94 // Sets the "next page id" counter. |
91 static void SetNextPageID(int32 next_page_id); | 95 static void SetNextPageID(int32 next_page_id); |
92 | 96 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 void SyncNavigationState(); | 302 void SyncNavigationState(); |
299 | 303 |
300 // Evaluates a string of JavaScript in a particular frame. | 304 // Evaluates a string of JavaScript in a particular frame. |
301 void EvaluateScript(const std::wstring& frame_xpath, | 305 void EvaluateScript(const std::wstring& frame_xpath, |
302 const std::wstring& jscript); | 306 const std::wstring& jscript); |
303 | 307 |
304 // Called when the Javascript debugger is no longer attached. | 308 // Called when the Javascript debugger is no longer attached. |
305 // This is called from within the renderer, not via an IPC message. | 309 // This is called from within the renderer, not via an IPC message. |
306 void OnDebugDetach(); | 310 void OnDebugDetach(); |
307 | 311 |
| 312 int delay_seconds_for_form_state_sync() const { |
| 313 return delay_seconds_for_form_state_sync_; |
| 314 } |
| 315 void set_delay_seconds_for_form_state_sync(int delay_in_seconds) { |
| 316 delay_seconds_for_form_state_sync_ = delay_in_seconds; |
| 317 } |
| 318 |
308 private: | 319 private: |
309 RenderView(); | 320 FRIEND_TEST(RenderViewTest, OnLoadAlternateHTMLText); |
| 321 FRIEND_TEST(RenderViewTest, OnNavStateChanged); |
310 | 322 |
311 // When we are created from window.open from an already existing view, this | 323 explicit RenderView(RenderThreadBase* render_thread); |
312 // constructor stores that view ID. | |
313 explicit RenderView(int32 opener_id); | |
314 | 324 |
315 // Initializes this view with the given parent and ID. The |routing_id| can be | 325 // Initializes this view with the given parent and ID. The |routing_id| can be |
316 // set to 'MSG_ROUTING_NONE' if the true ID is not yet known. In this case, | 326 // set to 'MSG_ROUTING_NONE' if the true ID is not yet known. In this case, |
317 // CompleteInit must be called later with the true ID. | 327 // CompleteInit must be called later with the true ID. |
318 void Init(HWND parent, | 328 void Init(HWND parent, |
319 HANDLE modal_dialog_event, | 329 HANDLE modal_dialog_event, |
320 int32 opener_id, | 330 int32 opener_id, |
321 const WebPreferences& webkit_prefs, | 331 const WebPreferences& webkit_prefs, |
322 SharedRenderViewCounter* counter, | 332 SharedRenderViewCounter* counter, |
323 int32 routing_id); | 333 int32 routing_id); |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 | 714 |
705 // We need to prevent windows from closing themselves with a window.close() | 715 // We need to prevent windows from closing themselves with a window.close() |
706 // call while a blocked popup notification is being displayed. We cannot | 716 // call while a blocked popup notification is being displayed. We cannot |
707 // synchronously querry the Browser process. We cannot wait for the Browser | 717 // synchronously querry the Browser process. We cannot wait for the Browser |
708 // process to send a message to us saying that a blocked popup notification | 718 // process to send a message to us saying that a blocked popup notification |
709 // is being displayed. We instead assume that when we create a window off | 719 // is being displayed. We instead assume that when we create a window off |
710 // this RenderView, that it is going to be blocked until we get a message | 720 // this RenderView, that it is going to be blocked until we get a message |
711 // from the Browser process telling us otherwise. | 721 // from the Browser process telling us otherwise. |
712 bool popup_notification_visible_; | 722 bool popup_notification_visible_; |
713 | 723 |
| 724 // Time in seconds of the delay between syncing page state such as form |
| 725 // elements and scroll position. This timeout allows us to avoid spamming the |
| 726 // browser process with every little thing that changes. This normally doesn't |
| 727 // change but is overridden by tests. |
| 728 int delay_seconds_for_form_state_sync_; |
| 729 |
714 DISALLOW_COPY_AND_ASSIGN(RenderView); | 730 DISALLOW_COPY_AND_ASSIGN(RenderView); |
715 }; | 731 }; |
716 | 732 |
717 #endif // CHROME_RENDERER_RENDER_VIEW_H_ | 733 #endif // CHROME_RENDERER_RENDER_VIEW_H_ |
OLD | NEW |