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

Side by Side Diff: content/renderer/render_view.cc

Issue 6874038: Remove the last Chrome dependencies from renderer, and enforce no more includes through DEPS. I ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "content/renderer/render_view.h" 5 #include "content/renderer/render_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/compiler_specific.h" 14 #include "base/compiler_specific.h"
15 #include "base/lazy_instance.h" 15 #include "base/lazy_instance.h"
16 #include "base/metrics/histogram.h" 16 #include "base/metrics/histogram.h"
17 #include "base/path_service.h" 17 #include "base/path_service.h"
18 #include "base/process_util.h" 18 #include "base/process_util.h"
19 #include "base/string_piece.h" 19 #include "base/string_piece.h"
20 #include "base/string_util.h" 20 #include "base/string_util.h"
21 #include "base/sys_string_conversions.h" 21 #include "base/sys_string_conversions.h"
22 #include "base/time.h" 22 #include "base/time.h"
23 #include "base/utf_string_conversions.h" 23 #include "base/utf_string_conversions.h"
24 #include "chrome/common/bindings_policy.h"
25 #include "chrome/common/chrome_constants.h"
26 #include "chrome/common/chrome_paths.h"
27 #include "chrome/common/chrome_switches.h"
28 #include "chrome/common/pepper_plugin_registry.h" 24 #include "chrome/common/pepper_plugin_registry.h"
29 #include "chrome/common/render_messages.h" 25 #include "chrome/common/render_messages.h"
30 #include "chrome/common/url_constants.h"
31 #include "chrome/renderer/automation/dom_automation_controller.h"
32 #include "chrome/renderer/external_host_bindings.h"
33 #include "chrome/renderer/localized_error.h"
34 #include "content/common/appcache/appcache_dispatcher.h" 26 #include "content/common/appcache/appcache_dispatcher.h"
27 #include "content/common/bindings_policy.h"
35 #include "content/common/clipboard_messages.h" 28 #include "content/common/clipboard_messages.h"
36 #include "content/common/content_constants.h" 29 #include "content/common/content_constants.h"
30 #include "content/common/content_switches.h"
37 #include "content/common/database_messages.h" 31 #include "content/common/database_messages.h"
38 #include "content/common/drag_messages.h" 32 #include "content/common/drag_messages.h"
39 #include "content/common/file_system/file_system_dispatcher.h" 33 #include "content/common/file_system/file_system_dispatcher.h"
40 #include "content/common/file_system/webfilesystem_callback_dispatcher.h" 34 #include "content/common/file_system/webfilesystem_callback_dispatcher.h"
41 #include "content/common/json_value_serializer.h" 35 #include "content/common/json_value_serializer.h"
42 #include "content/common/notification_service.h" 36 #include "content/common/notification_service.h"
43 #include "content/common/pepper_messages.h" 37 #include "content/common/pepper_messages.h"
44 #include "content/common/quota_dispatcher.h" 38 #include "content/common/quota_dispatcher.h"
45 #include "content/common/renderer_preferences.h" 39 #include "content/common/renderer_preferences.h"
40 #include "content/common/url_constants.h"
46 #include "content/common/view_messages.h" 41 #include "content/common/view_messages.h"
47 #include "content/renderer/audio_message_filter.h" 42 #include "content/renderer/audio_message_filter.h"
48 #include "content/renderer/content_renderer_client.h" 43 #include "content/renderer/content_renderer_client.h"
49 #include "content/renderer/device_orientation_dispatcher.h" 44 #include "content/renderer/device_orientation_dispatcher.h"
50 #include "content/renderer/external_popup_menu.h" 45 #include "content/renderer/external_popup_menu.h"
51 #include "content/renderer/geolocation_dispatcher.h" 46 #include "content/renderer/geolocation_dispatcher.h"
52 #include "content/renderer/load_progress_tracker.h" 47 #include "content/renderer/load_progress_tracker.h"
53 #include "content/renderer/media/audio_renderer_impl.h" 48 #include "content/renderer/media/audio_renderer_impl.h"
54 #include "content/renderer/media/ipc_video_decoder.h" 49 #include "content/renderer/media/ipc_video_decoder.h"
55 #include "content/renderer/navigation_state.h" 50 #include "content/renderer/navigation_state.h"
56 #include "content/renderer/notification_provider.h" 51 #include "content/renderer/notification_provider.h"
57 #include "content/renderer/p2p/socket_dispatcher.h" 52 #include "content/renderer/p2p/socket_dispatcher.h"
58 #include "content/renderer/plugin_channel_host.h" 53 #include "content/renderer/plugin_channel_host.h"
59 #include "content/renderer/render_process.h" 54 #include "content/renderer/render_process.h"
60 #include "content/renderer/render_thread.h" 55 #include "content/renderer/render_thread.h"
61 #include "content/renderer/render_view_observer.h" 56 #include "content/renderer/render_view_observer.h"
62 #include "content/renderer/render_view_visitor.h" 57 #include "content/renderer/render_view_visitor.h"
63 #include "content/renderer/render_widget_fullscreen_pepper.h" 58 #include "content/renderer/render_widget_fullscreen_pepper.h"
64 #include "content/renderer/renderer_webapplicationcachehost_impl.h" 59 #include "content/renderer/renderer_webapplicationcachehost_impl.h"
65 #include "content/renderer/renderer_webstoragenamespace_impl.h" 60 #include "content/renderer/renderer_webstoragenamespace_impl.h"
66 #include "content/renderer/speech_input_dispatcher.h" 61 #include "content/renderer/speech_input_dispatcher.h"
67 #include "content/renderer/web_ui_bindings.h" 62 #include "content/renderer/web_ui_bindings.h"
68 #include "content/renderer/webgraphicscontext3d_command_buffer_impl.h" 63 #include "content/renderer/webgraphicscontext3d_command_buffer_impl.h"
69 #include "content/renderer/webplugin_delegate_proxy.h" 64 #include "content/renderer/webplugin_delegate_proxy.h"
70 #include "content/renderer/websharedworker_proxy.h" 65 #include "content/renderer/websharedworker_proxy.h"
71 #include "content/renderer/webworker_proxy.h" 66 #include "content/renderer/webworker_proxy.h"
72 #include "media/base/filter_collection.h" 67 #include "media/base/filter_collection.h"
73 #include "media/base/media_switches.h" 68 #include "media/base/media_switches.h"
74 #include "media/base/message_loop_factory_impl.h" 69 #include "media/base/message_loop_factory_impl.h"
75 #include "net/base/data_url.h"
76 #include "net/base/escape.h" 70 #include "net/base/escape.h"
77 #include "net/base/net_errors.h" 71 #include "net/base/net_errors.h"
78 #include "net/http/http_util.h" 72 #include "net/http/http_util.h"
79 #include "ppapi/c/private/ppb_flash_net_connector.h" 73 #include "ppapi/c/private/ppb_flash_net_connector.h"
80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityCache .h" 74 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityCache .h"
81 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObjec t.h" 75 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObjec t.h"
82 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" 76 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h"
83 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h" 77 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h"
84 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" 78 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
85 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDragData.h" 79 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDragData.h"
86 #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" 80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
87 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams. h" 81 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams. h"
88 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallback s.h" 82 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallback s.h"
89 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h" 83 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h"
90 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormControlElement .h" 84 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormControlElement .h"
91 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormElement.h" 85 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormElement.h"
92 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 86 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
93 #include "third_party/WebKit/Source/WebKit/chromium/public/WebGraphicsContext3D. h" 87 #include "third_party/WebKit/Source/WebKit/chromium/public/WebGraphicsContext3D. h"
94 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h" 88 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h"
95 #include "third_party/WebKit/Source/WebKit/chromium/public/WebImage.h" 89 #include "third_party/WebKit/Source/WebKit/chromium/public/WebImage.h"
96 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h" 90 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h"
97 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerAction. h" 91 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerAction. h"
98 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNetworkStateNotifi er.h" 92 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNetworkStateNotifi er.h"
99 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNodeList.h" 93 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNodeList.h"
100 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPageSerializer.h"
101 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h" 94 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h"
102 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" 95 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
103 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginDocument.h" 96 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginDocument.h"
104 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h" 97 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h"
105 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPoint.h" 98 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPoint.h"
106 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRange.h" 99 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRange.h"
107 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" 100 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h"
108 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h" 101 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h"
109 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSearchableFormData .h" 102 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSearchableFormData .h"
110 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 103 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
111 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSettings.h" 104 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSettings.h"
112 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h" 105 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h"
113 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h " 106 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h "
114 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageQuotaCallba cks.h" 107 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageQuotaCallba cks.h"
115 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" 108 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
116 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" 109 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
117 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLError.h" 110 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLError.h"
118 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" 111 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h"
119 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" 112 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h"
120 #include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h" 113 #include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h"
121 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 114 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
122 #include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h" 115 #include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h"
123 #include "third_party/skia/include/core/SkBitmap.h" 116 #include "third_party/skia/include/core/SkBitmap.h"
124 #include "ui/base/message_box_flags.h" 117 #include "ui/base/message_box_flags.h"
125 #include "ui/gfx/favicon_size.h"
126 #include "ui/gfx/native_widget_types.h" 118 #include "ui/gfx/native_widget_types.h"
127 #include "ui/gfx/point.h" 119 #include "ui/gfx/point.h"
128 #include "ui/gfx/rect.h" 120 #include "ui/gfx/rect.h"
129 #include "v8/include/v8-testing.h"
130 #include "v8/include/v8.h" 121 #include "v8/include/v8.h"
131 #include "webkit/appcache/web_application_cache_host_impl.h" 122 #include "webkit/appcache/web_application_cache_host_impl.h"
132 #include "webkit/glue/alt_error_page_resource_fetcher.h" 123 #include "webkit/glue/alt_error_page_resource_fetcher.h"
133 #include "webkit/glue/context_menu.h" 124 #include "webkit/glue/context_menu.h"
134 #include "webkit/glue/dom_operations.h"
135 #include "webkit/glue/form_data.h" 125 #include "webkit/glue/form_data.h"
136 #include "webkit/glue/form_field.h" 126 #include "webkit/glue/form_field.h"
137 #include "webkit/glue/glue_serialize.h" 127 #include "webkit/glue/glue_serialize.h"
138 #include "webkit/glue/image_decoder.h"
139 #include "webkit/glue/image_resource_fetcher.h"
140 #include "webkit/glue/media/video_renderer_impl.h" 128 #include "webkit/glue/media/video_renderer_impl.h"
141 #include "webkit/glue/password_form_dom_manager.h" 129 #include "webkit/glue/password_form_dom_manager.h"
142 #include "webkit/glue/site_isolation_metrics.h" 130 #include "webkit/glue/site_isolation_metrics.h"
143 #include "webkit/glue/webaccessibility.h" 131 #include "webkit/glue/webaccessibility.h"
144 #include "webkit/glue/webdropdata.h" 132 #include "webkit/glue/webdropdata.h"
145 #include "webkit/glue/webkit_constants.h" 133 #include "webkit/glue/webkit_constants.h"
146 #include "webkit/glue/webkit_glue.h" 134 #include "webkit/glue/webkit_glue.h"
147 #include "webkit/glue/webmediaplayer_impl.h" 135 #include "webkit/glue/webmediaplayer_impl.h"
148 #include "webkit/plugins/npapi/default_plugin_shared.h" 136 #include "webkit/plugins/npapi/default_plugin_shared.h"
149 #include "webkit/plugins/npapi/plugin_list.h" 137 #include "webkit/plugins/npapi/plugin_list.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 using WebKit::WebHistoryItem; 183 using WebKit::WebHistoryItem;
196 using WebKit::WebImage; 184 using WebKit::WebImage;
197 using WebKit::WebInputElement; 185 using WebKit::WebInputElement;
198 using WebKit::WebMediaPlayer; 186 using WebKit::WebMediaPlayer;
199 using WebKit::WebMediaPlayerAction; 187 using WebKit::WebMediaPlayerAction;
200 using WebKit::WebMediaPlayerClient; 188 using WebKit::WebMediaPlayerClient;
201 using WebKit::WebNavigationPolicy; 189 using WebKit::WebNavigationPolicy;
202 using WebKit::WebNavigationType; 190 using WebKit::WebNavigationType;
203 using WebKit::WebNetworkStateNotifier; 191 using WebKit::WebNetworkStateNotifier;
204 using WebKit::WebNode; 192 using WebKit::WebNode;
205 using WebKit::WebPageSerializer;
206 using WebKit::WebPageSerializerClient;
207 using WebKit::WebPlugin; 193 using WebKit::WebPlugin;
208 using WebKit::WebPluginContainer; 194 using WebKit::WebPluginContainer;
209 using WebKit::WebPluginDocument; 195 using WebKit::WebPluginDocument;
210 using WebKit::WebPluginParams; 196 using WebKit::WebPluginParams;
211 using WebKit::WebPoint; 197 using WebKit::WebPoint;
212 using WebKit::WebPopupMenuInfo; 198 using WebKit::WebPopupMenuInfo;
213 using WebKit::WebRange; 199 using WebKit::WebRange;
214 using WebKit::WebRect; 200 using WebKit::WebRect;
215 using WebKit::WebScriptSource; 201 using WebKit::WebScriptSource;
216 using WebKit::WebSearchableFormData; 202 using WebKit::WebSearchableFormData;
(...skipping 16 matching lines...) Expand all
233 using WebKit::WebView; 219 using WebKit::WebView;
234 using WebKit::WebWidget; 220 using WebKit::WebWidget;
235 using WebKit::WebWindowFeatures; 221 using WebKit::WebWindowFeatures;
236 using WebKit::WebWorker; 222 using WebKit::WebWorker;
237 using WebKit::WebWorkerClient; 223 using WebKit::WebWorkerClient;
238 using appcache::WebApplicationCacheHostImpl; 224 using appcache::WebApplicationCacheHostImpl;
239 using base::Time; 225 using base::Time;
240 using base::TimeDelta; 226 using base::TimeDelta;
241 using webkit_glue::AltErrorPageResourceFetcher; 227 using webkit_glue::AltErrorPageResourceFetcher;
242 using webkit_glue::FormField; 228 using webkit_glue::FormField;
243 using webkit_glue::ImageResourceFetcher;
244 using webkit_glue::PasswordForm; 229 using webkit_glue::PasswordForm;
245 using webkit_glue::PasswordFormDomManager; 230 using webkit_glue::PasswordFormDomManager;
246 using webkit_glue::ResourceFetcher; 231 using webkit_glue::ResourceFetcher;
247 using webkit_glue::SiteIsolationMetrics; 232 using webkit_glue::SiteIsolationMetrics;
248 using webkit_glue::WebAccessibility; 233 using webkit_glue::WebAccessibility;
249 234
250 //----------------------------------------------------------------------------- 235 //-----------------------------------------------------------------------------
251 236
252 typedef std::map<WebKit::WebView*, RenderView*> ViewMap; 237 typedef std::map<WebKit::WebView*, RenderView*> ViewMap;
253 static base::LazyInstance<ViewMap> g_view_map(base::LINKER_INITIALIZED); 238 static base::LazyInstance<ViewMap> g_view_map(base::LINKER_INITIALIZED);
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 const WebPreferences& webkit_prefs, 373 const WebPreferences& webkit_prefs,
389 SharedRenderViewCounter* counter, 374 SharedRenderViewCounter* counter,
390 int32 routing_id, 375 int32 routing_id,
391 int64 session_storage_namespace_id, 376 int64 session_storage_namespace_id,
392 const string16& frame_name) 377 const string16& frame_name)
393 : RenderWidget(render_thread, WebKit::WebPopupTypeNone), 378 : RenderWidget(render_thread, WebKit::WebPopupTypeNone),
394 webkit_preferences_(webkit_prefs), 379 webkit_preferences_(webkit_prefs),
395 send_content_state_immediately_(false), 380 send_content_state_immediately_(false),
396 enabled_bindings_(0), 381 enabled_bindings_(0),
397 send_preferred_size_changes_(false), 382 send_preferred_size_changes_(false),
398 script_can_close_(true),
399 is_loading_(false), 383 is_loading_(false),
400 navigation_gesture_(NavigationGestureUnknown), 384 navigation_gesture_(NavigationGestureUnknown),
401 opened_by_user_gesture_(true), 385 opened_by_user_gesture_(true),
402 opener_suppressed_(false), 386 opener_suppressed_(false),
403 is_prerendering_(false), 387 is_prerendering_(false),
404 page_id_(-1), 388 page_id_(-1),
405 last_page_id_sent_to_browser_(-1), 389 last_page_id_sent_to_browser_(-1),
406 history_list_offset_(-1), 390 history_list_offset_(-1),
407 history_list_length_(0), 391 history_list_length_(0),
408 has_unload_listener_(false), 392 has_unload_listener_(false),
409 target_url_status_(TARGET_NONE), 393 target_url_status_(TARGET_NONE),
410 view_type_(ViewType::INVALID),
411 browser_window_id_(-1),
412 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)), 394 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)),
413 ALLOW_THIS_IN_INITIALIZER_LIST(accessibility_method_factory_(this)), 395 ALLOW_THIS_IN_INITIALIZER_LIST(accessibility_method_factory_(this)),
414 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), 396 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)),
415 geolocation_dispatcher_(NULL), 397 geolocation_dispatcher_(NULL),
416 speech_input_dispatcher_(NULL), 398 speech_input_dispatcher_(NULL),
417 device_orientation_dispatcher_(NULL), 399 device_orientation_dispatcher_(NULL),
418 accessibility_ack_pending_(false), 400 accessibility_ack_pending_(false),
419 p2p_socket_dispatcher_(NULL), 401 p2p_socket_dispatcher_(NULL),
420 session_storage_namespace_id_(session_storage_namespace_id) { 402 session_storage_namespace_id_(session_storage_namespace_id) {
421 403
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 // If this is a popup, we must wait for the CreatingNew_ACK message before 439 // If this is a popup, we must wait for the CreatingNew_ACK message before
458 // completing initialization. Otherwise, we can finish it now. 440 // completing initialization. Otherwise, we can finish it now.
459 if (opener_id == MSG_ROUTING_NONE) { 441 if (opener_id == MSG_ROUTING_NONE) {
460 did_show_ = true; 442 did_show_ = true;
461 CompleteInit(parent_hwnd); 443 CompleteInit(parent_hwnd);
462 } 444 }
463 445
464 host_window_ = parent_hwnd; 446 host_window_ = parent_hwnd;
465 447
466 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 448 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
467 if (command_line.HasSwitch(switches::kDomAutomationController))
468 enabled_bindings_ |= BindingsPolicy::DOM_AUTOMATION;
469 if (command_line.HasSwitch(switches::kEnableAccessibility)) 449 if (command_line.HasSwitch(switches::kEnableAccessibility))
470 WebAccessibilityCache::enableAccessibility(); 450 WebAccessibilityCache::enableAccessibility();
471 451
472 audio_message_filter_ = new AudioMessageFilter(routing_id_); 452 audio_message_filter_ = new AudioMessageFilter(routing_id_);
473 render_thread_->AddFilter(audio_message_filter_); 453 render_thread_->AddFilter(audio_message_filter_);
474 454
475 if (CommandLine::ForCurrentProcess()->HasSwitch( 455 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableP2PApi))
476 switches::kEnableP2PApi)) {
477 p2p_socket_dispatcher_ = new P2PSocketDispatcher(this); 456 p2p_socket_dispatcher_ = new P2PSocketDispatcher(this);
478 }
479 457
480 content::GetContentClient()->renderer()->RenderViewCreated(this); 458 content::GetContentClient()->renderer()->RenderViewCreated(this);
481 } 459 }
482 460
483 RenderView::~RenderView() { 461 RenderView::~RenderView() {
484 if (decrement_shared_popup_at_destruction_) 462 if (decrement_shared_popup_at_destruction_)
485 shared_popup_counter_->data--; 463 shared_popup_counter_->data--;
486 464
487 // If file chooser is still waiting for answer, dispatch empty answer. 465 // If file chooser is still waiting for answer, dispatch empty answer.
488 while (!file_chooser_completions_.empty()) { 466 while (!file_chooser_completions_.empty()) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 type == WebKit::WebAccessibilityNotificationLoadComplete) { 558 type == WebKit::WebAccessibilityNotificationLoadComplete) {
581 return true; 559 return true;
582 } 560 }
583 return false; 561 return false;
584 } 562 }
585 563
586 WebKit::WebView* RenderView::webview() const { 564 WebKit::WebView* RenderView::webview() const {
587 return static_cast<WebKit::WebView*>(webwidget()); 565 return static_cast<WebKit::WebView*>(webwidget());
588 } 566 }
589 567
590 void RenderView::UserMetricsRecordAction(const std::string& action) {
591 Send(new ViewHostMsg_UserMetricsRecordAction(action));
592 }
593
594 void RenderView::SetReportLoadProgressEnabled(bool enabled) { 568 void RenderView::SetReportLoadProgressEnabled(bool enabled) {
595 if (!enabled) { 569 if (!enabled) {
596 load_progress_tracker_.reset(NULL); 570 load_progress_tracker_.reset(NULL);
597 return; 571 return;
598 } 572 }
599 if (load_progress_tracker_ == NULL) 573 if (load_progress_tracker_ == NULL)
600 load_progress_tracker_.reset(new LoadProgressTracker(this)); 574 load_progress_tracker_.reset(new LoadProgressTracker(this));
601 } 575 }
602 576
603 void RenderView::PluginCrashed(const FilePath& plugin_path) { 577 void RenderView::PluginCrashed(const FilePath& plugin_path) {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 IPC_MESSAGE_HANDLER(ViewMsg_FindReplyACK, OnFindReplyAck) 656 IPC_MESSAGE_HANDLER(ViewMsg_FindReplyACK, OnFindReplyAck)
683 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) 657 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom)
684 IPC_MESSAGE_HANDLER(ViewMsg_SetContentSettingsForLoadingURL, 658 IPC_MESSAGE_HANDLER(ViewMsg_SetContentSettingsForLoadingURL,
685 OnSetContentSettingsForLoadingURL) 659 OnSetContentSettingsForLoadingURL)
686 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevel, OnSetZoomLevel) 660 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevel, OnSetZoomLevel)
687 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL, 661 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL,
688 OnSetZoomLevelForLoadingURL) 662 OnSetZoomLevelForLoadingURL)
689 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) 663 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding)
690 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, 664 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault,
691 OnResetPageEncodingToDefault) 665 OnResetPageEncodingToDefault)
692 IPC_MESSAGE_HANDLER(ViewMsg_DownloadFavicon, OnDownloadFavicon)
693 IPC_MESSAGE_HANDLER(ViewMsg_ScriptEvalRequest, OnScriptEvalRequest) 666 IPC_MESSAGE_HANDLER(ViewMsg_ScriptEvalRequest, OnScriptEvalRequest)
694 IPC_MESSAGE_HANDLER(ViewMsg_CSSInsertRequest, OnCSSInsertRequest) 667 IPC_MESSAGE_HANDLER(ViewMsg_CSSInsertRequest, OnCSSInsertRequest)
695 IPC_MESSAGE_HANDLER(ViewMsg_ReservePageIDRange, OnReservePageIDRange) 668 IPC_MESSAGE_HANDLER(ViewMsg_ReservePageIDRange, OnReservePageIDRange)
696 IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter) 669 IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter)
697 IPC_MESSAGE_HANDLER(DragMsg_TargetDragOver, OnDragTargetDragOver) 670 IPC_MESSAGE_HANDLER(DragMsg_TargetDragOver, OnDragTargetDragOver)
698 IPC_MESSAGE_HANDLER(DragMsg_TargetDragLeave, OnDragTargetDragLeave) 671 IPC_MESSAGE_HANDLER(DragMsg_TargetDragLeave, OnDragTargetDragLeave)
699 IPC_MESSAGE_HANDLER(DragMsg_TargetDrop, OnDragTargetDrop) 672 IPC_MESSAGE_HANDLER(DragMsg_TargetDrop, OnDragTargetDrop)
700 IPC_MESSAGE_HANDLER(DragMsg_SourceEndedOrMoved, OnDragSourceEndedOrMoved) 673 IPC_MESSAGE_HANDLER(DragMsg_SourceEndedOrMoved, OnDragSourceEndedOrMoved)
701 IPC_MESSAGE_HANDLER(DragMsg_SourceSystemDragEnded, 674 IPC_MESSAGE_HANDLER(DragMsg_SourceSystemDragEnded,
702 OnDragSourceSystemDragEnded) 675 OnDragSourceSystemDragEnded)
703 IPC_MESSAGE_HANDLER(ViewMsg_AllowBindings, OnAllowBindings) 676 IPC_MESSAGE_HANDLER(ViewMsg_AllowBindings, OnAllowBindings)
704 IPC_MESSAGE_HANDLER(ViewMsg_SetWebUIProperty, OnSetWebUIProperty) 677 IPC_MESSAGE_HANDLER(ViewMsg_SetWebUIProperty, OnSetWebUIProperty)
705 IPC_MESSAGE_HANDLER(ViewMsg_SetInitialFocus, OnSetInitialFocus) 678 IPC_MESSAGE_HANDLER(ViewMsg_SetInitialFocus, OnSetInitialFocus)
706 IPC_MESSAGE_HANDLER(ViewMsg_ScrollFocusedEditableNodeIntoView, 679 IPC_MESSAGE_HANDLER(ViewMsg_ScrollFocusedEditableNodeIntoView,
707 OnScrollFocusedEditableNodeIntoView) 680 OnScrollFocusedEditableNodeIntoView)
708 IPC_MESSAGE_HANDLER(ViewMsg_UpdateTargetURL_ACK, OnUpdateTargetURLAck) 681 IPC_MESSAGE_HANDLER(ViewMsg_UpdateTargetURL_ACK, OnUpdateTargetURLAck)
709 IPC_MESSAGE_HANDLER(ViewMsg_UpdateWebPreferences, OnUpdateWebPreferences) 682 IPC_MESSAGE_HANDLER(ViewMsg_UpdateWebPreferences, OnUpdateWebPreferences)
710 IPC_MESSAGE_HANDLER(ViewMsg_SetAltErrorPageURL, OnSetAltErrorPageURL) 683 IPC_MESSAGE_HANDLER(ViewMsg_SetAltErrorPageURL, OnSetAltErrorPageURL)
711 IPC_MESSAGE_HANDLER(ViewMsg_InstallMissingPlugin, OnInstallMissingPlugin) 684 IPC_MESSAGE_HANDLER(ViewMsg_InstallMissingPlugin, OnInstallMissingPlugin)
712 IPC_MESSAGE_HANDLER(ViewMsg_DisplayPrerenderedPage, 685 IPC_MESSAGE_HANDLER(ViewMsg_DisplayPrerenderedPage,
713 OnDisplayPrerenderedPage) 686 OnDisplayPrerenderedPage)
714 IPC_MESSAGE_HANDLER(ViewMsg_EnumerateDirectoryResponse, 687 IPC_MESSAGE_HANDLER(ViewMsg_EnumerateDirectoryResponse,
715 OnEnumerateDirectoryResponse) 688 OnEnumerateDirectoryResponse)
716 IPC_MESSAGE_HANDLER(ViewMsg_RunFileChooserResponse, OnFileChooserResponse) 689 IPC_MESSAGE_HANDLER(ViewMsg_RunFileChooserResponse, OnFileChooserResponse)
717 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode)
718 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage,
719 OnGetAllSavableResourceLinksForCurrentPage)
720 IPC_MESSAGE_HANDLER(
721 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks,
722 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks)
723 IPC_MESSAGE_HANDLER(ViewMsg_ShouldClose, OnShouldClose) 690 IPC_MESSAGE_HANDLER(ViewMsg_ShouldClose, OnShouldClose)
724 IPC_MESSAGE_HANDLER(ViewMsg_ClosePage, OnClosePage) 691 IPC_MESSAGE_HANDLER(ViewMsg_ClosePage, OnClosePage)
725 IPC_MESSAGE_HANDLER(ViewMsg_ThemeChanged, OnThemeChanged) 692 IPC_MESSAGE_HANDLER(ViewMsg_ThemeChanged, OnThemeChanged)
726 IPC_MESSAGE_HANDLER(ViewMsg_HandleMessageFromExternalHost,
727 OnHandleMessageFromExternalHost)
728 IPC_MESSAGE_HANDLER(ViewMsg_DisassociateFromPopupCount, 693 IPC_MESSAGE_HANDLER(ViewMsg_DisassociateFromPopupCount,
729 OnDisassociateFromPopupCount) 694 OnDisassociateFromPopupCount)
730 IPC_MESSAGE_HANDLER(ViewMsg_AllowScriptToClose,
731 OnAllowScriptToClose)
732 IPC_MESSAGE_HANDLER(ViewMsg_MoveOrResizeStarted, OnMoveOrResizeStarted) 695 IPC_MESSAGE_HANDLER(ViewMsg_MoveOrResizeStarted, OnMoveOrResizeStarted)
733 IPC_MESSAGE_HANDLER(ViewMsg_ClearFocusedNode, OnClearFocusedNode) 696 IPC_MESSAGE_HANDLER(ViewMsg_ClearFocusedNode, OnClearFocusedNode)
734 IPC_MESSAGE_HANDLER(ViewMsg_SetBackground, OnSetBackground) 697 IPC_MESSAGE_HANDLER(ViewMsg_SetBackground, OnSetBackground)
735 IPC_MESSAGE_HANDLER(ViewMsg_EnablePreferredSizeChangedMode, 698 IPC_MESSAGE_HANDLER(ViewMsg_EnablePreferredSizeChangedMode,
736 OnEnablePreferredSizeChangedMode) 699 OnEnablePreferredSizeChangedMode)
737 IPC_MESSAGE_HANDLER(ViewMsg_DisableScrollbarsForSmallWindows, 700 IPC_MESSAGE_HANDLER(ViewMsg_DisableScrollbarsForSmallWindows,
738 OnDisableScrollbarsForSmallWindows) 701 OnDisableScrollbarsForSmallWindows)
739 IPC_MESSAGE_HANDLER(ViewMsg_SetRendererPrefs, OnSetRendererPrefs) 702 IPC_MESSAGE_HANDLER(ViewMsg_SetRendererPrefs, OnSetRendererPrefs)
740 IPC_MESSAGE_HANDLER(ViewMsg_UpdateBrowserWindowId,
741 OnUpdateBrowserWindowId)
742 IPC_MESSAGE_HANDLER(ViewMsg_NotifyRenderViewType,
743 OnNotifyRendererViewType)
744 IPC_MESSAGE_HANDLER(ViewMsg_MediaPlayerActionAt, OnMediaPlayerActionAt) 703 IPC_MESSAGE_HANDLER(ViewMsg_MediaPlayerActionAt, OnMediaPlayerActionAt)
745 IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive) 704 IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive)
746 #if defined(OS_MACOSX) 705 #if defined(OS_MACOSX)
747 IPC_MESSAGE_HANDLER(ViewMsg_SetWindowVisibility, OnSetWindowVisibility) 706 IPC_MESSAGE_HANDLER(ViewMsg_SetWindowVisibility, OnSetWindowVisibility)
748 IPC_MESSAGE_HANDLER(ViewMsg_WindowFrameChanged, OnWindowFrameChanged) 707 IPC_MESSAGE_HANDLER(ViewMsg_WindowFrameChanged, OnWindowFrameChanged)
749 IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted, 708 IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted,
750 OnPluginImeCompositionCompleted) 709 OnPluginImeCompositionCompleted)
751 #endif 710 #endif
752 IPC_MESSAGE_HANDLER(ViewMsg_SetEditCommandsForNextKeyEvent, 711 IPC_MESSAGE_HANDLER(ViewMsg_SetEditCommandsForNextKeyEvent,
753 OnSetEditCommandsForNextKeyEvent) 712 OnSetEditCommandsForNextKeyEvent)
754 IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction, 713 IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction,
755 OnCustomContextMenuAction) 714 OnCustomContextMenuAction)
756 IPC_MESSAGE_HANDLER(ViewMsg_EnableAccessibility, OnEnableAccessibility) 715 IPC_MESSAGE_HANDLER(ViewMsg_EnableAccessibility, OnEnableAccessibility)
757 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityFocus, OnSetAccessibilityFocus) 716 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityFocus, OnSetAccessibilityFocus)
758 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityDoDefaultAction, 717 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityDoDefaultAction,
759 OnAccessibilityDoDefaultAction) 718 OnAccessibilityDoDefaultAction)
760 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityNotifications_ACK, 719 IPC_MESSAGE_HANDLER(ViewMsg_AccessibilityNotifications_ACK,
761 OnAccessibilityNotificationsAck) 720 OnAccessibilityNotificationsAck)
762 IPC_MESSAGE_HANDLER(ViewMsg_AsyncOpenFile_ACK, OnAsyncFileOpened) 721 IPC_MESSAGE_HANDLER(ViewMsg_AsyncOpenFile_ACK, OnAsyncFileOpened)
763 IPC_MESSAGE_HANDLER(ViewMsg_PpapiBrokerChannelCreated, 722 IPC_MESSAGE_HANDLER(ViewMsg_PpapiBrokerChannelCreated,
764 OnPpapiBrokerChannelCreated) 723 OnPpapiBrokerChannelCreated)
765 #if defined(OS_MACOSX) 724 #if defined(OS_MACOSX)
766 IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItem, OnSelectPopupMenuItem) 725 IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItem, OnSelectPopupMenuItem)
767 #endif 726 #endif
768 IPC_MESSAGE_HANDLER(ViewMsg_JavaScriptStressTestControl,
769 OnJavaScriptStressTestControl)
770 IPC_MESSAGE_HANDLER(ViewMsg_ContextMenuClosed, OnContextMenuClosed) 727 IPC_MESSAGE_HANDLER(ViewMsg_ContextMenuClosed, OnContextMenuClosed)
771 IPC_MESSAGE_HANDLER(ViewMsg_NetworkStateChanged, OnNetworkStateChanged) 728 IPC_MESSAGE_HANDLER(ViewMsg_NetworkStateChanged, OnNetworkStateChanged)
772 // TODO(viettrungluu): Move to a separate message filter. 729 // TODO(viettrungluu): Move to a separate message filter.
773 #if defined(ENABLE_FLAPPER_HACKS) 730 #if defined(ENABLE_FLAPPER_HACKS)
774 IPC_MESSAGE_HANDLER(PepperMsg_ConnectTcpACK, OnConnectTcpACK) 731 IPC_MESSAGE_HANDLER(PepperMsg_ConnectTcpACK, OnConnectTcpACK)
775 #endif 732 #endif
776 733
777 // Have the super handle all other messages. 734 // Have the super handle all other messages.
778 IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message)) 735 IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message))
779 IPC_END_MESSAGE_MAP() 736 IPC_END_MESSAGE_MAP()
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 } 875 }
919 876
920 target_url_status_ = TARGET_NONE; 877 target_url_status_ = TARGET_NONE;
921 } 878 }
922 879
923 void RenderView::OnUndo() { 880 void RenderView::OnUndo() {
924 if (!webview()) 881 if (!webview())
925 return; 882 return;
926 883
927 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Undo")); 884 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Undo"));
928 UserMetricsRecordAction("Undo");
929 } 885 }
930 886
931 void RenderView::OnRedo() { 887 void RenderView::OnRedo() {
932 if (!webview()) 888 if (!webview())
933 return; 889 return;
934 890
935 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Redo")); 891 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Redo"));
936 UserMetricsRecordAction("Redo");
937 } 892 }
938 893
939 void RenderView::OnCut() { 894 void RenderView::OnCut() {
940 if (!webview()) 895 if (!webview())
941 return; 896 return;
942 897
943 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Cut")); 898 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Cut"));
944 UserMetricsRecordAction("Cut");
945 } 899 }
946 900
947 void RenderView::OnCopy() { 901 void RenderView::OnCopy() {
948 if (!webview()) 902 if (!webview())
949 return; 903 return;
950 904
951 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Copy")); 905 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Copy"));
952 UserMetricsRecordAction("Copy");
953 } 906 }
954 907
955 #if defined(OS_MACOSX) 908 #if defined(OS_MACOSX)
956 void RenderView::OnCopyToFindPboard() { 909 void RenderView::OnCopyToFindPboard() {
957 if (!webview()) 910 if (!webview())
958 return; 911 return;
959 912
960 // Since the find pasteboard supports only plain text, this can be simpler 913 // Since the find pasteboard supports only plain text, this can be simpler
961 // than the |OnCopy()| case. 914 // than the |OnCopy()| case.
962 WebFrame* frame = webview()->focusedFrame(); 915 WebFrame* frame = webview()->focusedFrame();
963 if (frame->hasSelection()) { 916 if (frame->hasSelection()) {
964 string16 selection = frame->selectionAsText(); 917 string16 selection = frame->selectionAsText();
965 RenderThread::current()->Send( 918 RenderThread::current()->Send(
966 new ClipboardHostMsg_FindPboardWriteStringAsync(selection)); 919 new ClipboardHostMsg_FindPboardWriteStringAsync(selection));
967 } 920 }
968
969 UserMetricsRecordAction("CopyToFindPboard");
970 } 921 }
971 #endif 922 #endif
972 923
973 void RenderView::OnPaste() { 924 void RenderView::OnPaste() {
974 if (!webview()) 925 if (!webview())
975 return; 926 return;
976 927
977 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Paste")); 928 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Paste"));
978 UserMetricsRecordAction("Paste");
979 } 929 }
980 930
981 void RenderView::OnReplace(const string16& text) { 931 void RenderView::OnReplace(const string16& text) {
982 if (!webview()) 932 if (!webview())
983 return; 933 return;
984 934
985 WebFrame* frame = webview()->focusedFrame(); 935 WebFrame* frame = webview()->focusedFrame();
986 if (!frame->hasSelection()) 936 if (!frame->hasSelection())
987 frame->selectWordAroundCaret(); 937 frame->selectWordAroundCaret();
988 frame->replaceSelection(text); 938 frame->replaceSelection(text);
989 } 939 }
990 940
991 void RenderView::OnDelete() { 941 void RenderView::OnDelete() {
992 if (!webview()) 942 if (!webview())
993 return; 943 return;
994 944
995 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Delete")); 945 webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Delete"));
996 UserMetricsRecordAction("DeleteSelection");
997 } 946 }
998 947
999 void RenderView::OnSelectAll() { 948 void RenderView::OnSelectAll() {
1000 if (!webview()) 949 if (!webview())
1001 return; 950 return;
1002 951
1003 webview()->focusedFrame()->executeCommand( 952 webview()->focusedFrame()->executeCommand(
1004 WebString::fromUTF8("SelectAll")); 953 WebString::fromUTF8("SelectAll"));
1005 UserMetricsRecordAction("SelectAll");
1006 } 954 }
1007 955
1008 void RenderView::OnSetInitialFocus(bool reverse) { 956 void RenderView::OnSetInitialFocus(bool reverse) {
1009 if (!webview()) 957 if (!webview())
1010 return; 958 return;
1011 webview()->setInitialFocus(reverse); 959 webview()->setInitialFocus(reverse);
1012 } 960 }
1013 961
1014 void RenderView::OnScrollFocusedEditableNodeIntoView() { 962 void RenderView::OnScrollFocusedEditableNodeIntoView() {
1015 WebKit::WebNode node = GetFocusedNode(); 963 WebKit::WebNode node = GetFocusedNode();
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 } 1172 }
1225 } 1173 }
1226 1174
1227 // Tell the embedding application that the title of the active page has changed 1175 // Tell the embedding application that the title of the active page has changed
1228 void RenderView::UpdateTitle(WebFrame* frame, const string16& title) { 1176 void RenderView::UpdateTitle(WebFrame* frame, const string16& title) {
1229 // Ignore all but top level navigations... 1177 // Ignore all but top level navigations...
1230 if (!frame->parent()) { 1178 if (!frame->parent()) {
1231 Send(new ViewHostMsg_UpdateTitle( 1179 Send(new ViewHostMsg_UpdateTitle(
1232 routing_id_, 1180 routing_id_,
1233 page_id_, 1181 page_id_,
1234 UTF16ToWideHack(title.length() > chrome::kMaxTitleChars ? 1182 UTF16ToWideHack(title.length() > content::kMaxTitleChars ?
1235 title.substr(0, chrome::kMaxTitleChars) : title))); 1183 title.substr(0, content::kMaxTitleChars) : title)));
1236 } 1184 }
1237 } 1185 }
1238 1186
1239 void RenderView::UpdateEncoding(WebFrame* frame, 1187 void RenderView::UpdateEncoding(WebFrame* frame,
1240 const std::string& encoding_name) { 1188 const std::string& encoding_name) {
1241 // Only update main frame's encoding_name. 1189 // Only update main frame's encoding_name.
1242 if (webview()->mainFrame() == frame && 1190 if (webview()->mainFrame() == frame &&
1243 last_encoding_name_ != encoding_name) { 1191 last_encoding_name_ != encoding_name) {
1244 // Save the encoding name for later comparing. 1192 // Save the encoding name for later comparing.
1245 last_encoding_name_ = encoding_name; 1193 last_encoding_name_ = encoding_name;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1282 bool replace) { 1230 bool replace) {
1283 std::string alt_html = !html.empty() ? html : 1231 std::string alt_html = !html.empty() ? html :
1284 content::GetContentClient()->renderer()->GetNavigationErrorHtml( 1232 content::GetContentClient()->renderer()->GetNavigationErrorHtml(
1285 failed_request, error); 1233 failed_request, error);
1286 frame->loadHTMLString(alt_html, 1234 frame->loadHTMLString(alt_html,
1287 GURL(chrome::kUnreachableWebDataURL), 1235 GURL(chrome::kUnreachableWebDataURL),
1288 error.unreachableURL, 1236 error.unreachableURL,
1289 replace); 1237 replace);
1290 } 1238 }
1291 1239
1292 void RenderView::BindDOMAutomationController(WebFrame* frame) {
1293 if (!dom_automation_controller_.get()) {
1294 dom_automation_controller_.reset(new DomAutomationController());
1295 }
1296 dom_automation_controller_->set_message_sender(this);
1297 dom_automation_controller_->set_routing_id(routing_id_);
1298 dom_automation_controller_->BindToJavascript(frame,
1299 "domAutomationController");
1300 }
1301
1302 bool RenderView::RunJavaScriptMessage(int type, 1240 bool RenderView::RunJavaScriptMessage(int type,
1303 const std::wstring& message, 1241 const std::wstring& message,
1304 const std::wstring& default_value, 1242 const std::wstring& default_value,
1305 const GURL& frame_url, 1243 const GURL& frame_url,
1306 std::wstring* result) { 1244 std::wstring* result) {
1307 bool success = false; 1245 bool success = false;
1308 std::wstring result_temp; 1246 std::wstring result_temp;
1309 if (!result) 1247 if (!result)
1310 result = &result_temp; 1248 result = &result_temp;
1311 1249
1312 SendAndRunNestedMessageLoop(new ViewHostMsg_RunJavaScriptMessage( 1250 SendAndRunNestedMessageLoop(new ViewHostMsg_RunJavaScriptMessage(
1313 routing_id_, message, default_value, frame_url, type, &success, result)); 1251 routing_id_, message, default_value, frame_url, type, &success, result));
1314 return success; 1252 return success;
1315 } 1253 }
1316 1254
1317 bool RenderView::SendAndRunNestedMessageLoop(IPC::SyncMessage* message) { 1255 bool RenderView::SendAndRunNestedMessageLoop(IPC::SyncMessage* message) {
1318 // Before WebKit asks us to show an alert (etc.), it takes care of doing the 1256 // Before WebKit asks us to show an alert (etc.), it takes care of doing the
1319 // equivalent of WebView::willEnterModalLoop. In the case of showModalDialog 1257 // equivalent of WebView::willEnterModalLoop. In the case of showModalDialog
1320 // it is particularly important that we do not call willEnterModalLoop as 1258 // it is particularly important that we do not call willEnterModalLoop as
1321 // that would defer resource loads for the dialog itself. 1259 // that would defer resource loads for the dialog itself.
1322 if (RenderThread::current()) // Will be NULL during unit tests. 1260 if (RenderThread::current()) // Will be NULL during unit tests.
1323 RenderThread::current()->DoNotNotifyWebKitOfModalLoop(); 1261 RenderThread::current()->DoNotNotifyWebKitOfModalLoop();
1324 1262
1325 message->EnableMessagePumping(); // Runs a nested message loop. 1263 message->EnableMessagePumping(); // Runs a nested message loop.
1326 return Send(message); 1264 return Send(message);
1327 } 1265 }
1328 1266
1329 void RenderView::AddGURLSearchProvider(
1330 const GURL& osd_url,
1331 search_provider::OSDDType provider_type) {
1332 if (!osd_url.is_empty())
1333 Send(new ViewHostMsg_PageHasOSDD(routing_id_, page_id_, osd_url,
1334 provider_type));
1335 }
1336
1337 void RenderView::OnAllowScriptToClose(bool script_can_close) {
1338 script_can_close_ = script_can_close;
1339 }
1340
1341 void RenderView::AddSearchProvider(
1342 const std::string& url,
1343 search_provider::OSDDType provider_type) {
1344 if (provider_type == search_provider::EXPLICIT_DEFAULT_PROVIDER &&
1345 !webview()->mainFrame()->isProcessingUserGesture())
1346 return;
1347
1348 AddGURLSearchProvider(GURL(url), provider_type);
1349 }
1350
1351 search_provider::InstallState
1352 RenderView::GetSearchProviderInstallState(WebFrame* frame,
1353 const std::string& url) {
1354 GURL inquiry_url = GURL(url);
1355 if (inquiry_url.is_empty())
1356 return search_provider::DENIED;
1357
1358 search_provider::InstallState install;
1359 Send(new ViewHostMsg_GetSearchProviderInstallState(routing_id_,
1360 frame->url(),
1361 inquiry_url,
1362 &install));
1363 return install;
1364 }
1365
1366 void RenderView::OnMissingPluginStatus( 1267 void RenderView::OnMissingPluginStatus(
1367 WebPluginDelegateProxy* delegate, 1268 WebPluginDelegateProxy* delegate,
1368 int status) { 1269 int status) {
1369 #if defined(OS_WIN) 1270 #if defined(OS_WIN)
1370 if (!first_default_plugin_) { 1271 if (!first_default_plugin_) {
1371 // Show the InfoBar for the first available plugin. 1272 // Show the InfoBar for the first available plugin.
1372 if (status == webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE) { 1273 if (status == webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE) {
1373 first_default_plugin_ = delegate->AsWeakPtr(); 1274 first_default_plugin_ = delegate->AsWeakPtr();
1374 Send(new ViewHostMsg_MissingPluginStatus(routing_id_, status)); 1275 Send(new ViewHostMsg_MissingPluginStatus(routing_id_, status));
1375 } 1276 }
(...skipping 17 matching lines...) Expand all
1393 1294
1394 WebView* RenderView::createView( 1295 WebView* RenderView::createView(
1395 WebFrame* creator, 1296 WebFrame* creator,
1396 const WebURLRequest& request, 1297 const WebURLRequest& request,
1397 const WebWindowFeatures& features, 1298 const WebWindowFeatures& features,
1398 const WebString& frame_name) { 1299 const WebString& frame_name) {
1399 // Check to make sure we aren't overloading on popups. 1300 // Check to make sure we aren't overloading on popups.
1400 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups) 1301 if (shared_popup_counter_->data > kMaximumNumberOfUnacknowledgedPopups)
1401 return NULL; 1302 return NULL;
1402 1303
1403 // This window can't be closed from a window.close() call until we receive a
1404 // message from the Browser process explicitly allowing it.
1405 script_can_close_ = false;
1406
1407 ViewHostMsg_CreateWindow_Params params; 1304 ViewHostMsg_CreateWindow_Params params;
1408 params.opener_id = routing_id_; 1305 params.opener_id = routing_id_;
1409 params.user_gesture = creator->isProcessingUserGesture(); 1306 params.user_gesture = creator->isProcessingUserGesture();
1410 params.window_container_type = WindowFeaturesToContainerType(features); 1307 params.window_container_type = WindowFeaturesToContainerType(features);
1411 params.session_storage_namespace_id = session_storage_namespace_id_; 1308 params.session_storage_namespace_id = session_storage_namespace_id_;
1412 params.frame_name = frame_name; 1309 params.frame_name = frame_name;
1413 params.opener_frame_id = creator->identifier(); 1310 params.opener_frame_id = creator->identifier();
1414 params.opener_url = creator->url(); 1311 params.opener_url = creator->url();
1415 params.opener_security_origin = creator->securityOrigin().toString().utf8(); 1312 params.opener_security_origin = creator->securityOrigin().toString().utf8();
1416 if (!request.isNull()) 1313 if (!request.isNull())
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1555 return; 1452 return;
1556 } 1453 }
1557 1454
1558 is_loading_ = false; 1455 is_loading_ = false;
1559 1456
1560 // NOTE: For now we're doing the safest thing, and sending out notification 1457 // NOTE: For now we're doing the safest thing, and sending out notification
1561 // when done loading. This currently isn't an issue as the favicon is only 1458 // when done loading. This currently isn't an issue as the favicon is only
1562 // displayed when done loading. Ideally we would send notification when 1459 // displayed when done loading. Ideally we would send notification when
1563 // finished parsing the head, but webkit doesn't support that yet. 1460 // finished parsing the head, but webkit doesn't support that yet.
1564 // The feed discovery code would also benefit from access to the head. 1461 // The feed discovery code would also benefit from access to the head.
1565
1566 // TODO : Get both favicon and touch icon url, and send them to the browser.
1567 GURL favicon_url(webview()->mainFrame()->favIconURL());
1568 if (!favicon_url.is_empty()) {
1569 std::vector<FaviconURL> urls;
1570 urls.push_back(FaviconURL(favicon_url, FAVICON));
1571 Send(new ViewHostMsg_UpdateFaviconURL(routing_id_, page_id_, urls));
1572 }
1573
1574 AddGURLSearchProvider(webview()->mainFrame()->openSearchDescriptionURL(),
1575 search_provider::AUTODETECTED_PROVIDER);
1576
1577 Send(new ViewHostMsg_DidStopLoading(routing_id_)); 1462 Send(new ViewHostMsg_DidStopLoading(routing_id_));
1578 1463
1579 if (load_progress_tracker_ != NULL) 1464 if (load_progress_tracker_ != NULL)
1580 load_progress_tracker_->DidStopLoading(); 1465 load_progress_tracker_->DidStopLoading();
1581 1466
1582 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidStopLoading()); 1467 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidStopLoading());
1583 } 1468 }
1584 1469
1585 void RenderView::didChangeLoadProgress(WebFrame* frame, double load_progress) { 1470 void RenderView::didChangeLoadProgress(WebFrame* frame, double load_progress) {
1586 if (load_progress_tracker_ != NULL) 1471 if (load_progress_tracker_ != NULL)
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1628 } 1513 }
1629 #endif // defined(OS_POSIX) 1514 #endif // defined(OS_POSIX)
1630 } 1515 }
1631 1516
1632 void RenderView::didExecuteCommand(const WebString& command_name) { 1517 void RenderView::didExecuteCommand(const WebString& command_name) {
1633 const std::string& name = UTF16ToUTF8(command_name); 1518 const std::string& name = UTF16ToUTF8(command_name);
1634 if (StartsWithASCII(name, "Move", true) || 1519 if (StartsWithASCII(name, "Move", true) ||
1635 StartsWithASCII(name, "Insert", true) || 1520 StartsWithASCII(name, "Insert", true) ||
1636 StartsWithASCII(name, "Delete", true)) 1521 StartsWithASCII(name, "Delete", true))
1637 return; 1522 return;
1638 UserMetricsRecordAction(name); 1523 webkit_glue::UserMetricsRecordAction(name);
1639 } 1524 }
1640 1525
1641 void RenderView::SendPendingAccessibilityNotifications() { 1526 void RenderView::SendPendingAccessibilityNotifications() {
1642 if (!accessibility_.get()) 1527 if (!accessibility_.get())
1643 return; 1528 return;
1644 1529
1645 if (pending_accessibility_notifications_.empty()) 1530 if (pending_accessibility_notifications_.empty())
1646 return; 1531 return;
1647 1532
1648 // Send all pending accessibility notifications. 1533 // Send all pending accessibility notifications.
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
2030 exists, 1915 exists,
2031 route_id, 1916 route_id,
2032 routing_id_); 1917 routing_id_);
2033 } 1918 }
2034 } 1919 }
2035 1920
2036 WebMediaPlayer* RenderView::createMediaPlayer( 1921 WebMediaPlayer* RenderView::createMediaPlayer(
2037 WebFrame* frame, WebMediaPlayerClient* client) { 1922 WebFrame* frame, WebMediaPlayerClient* client) {
2038 // If this is a prerendering page, start the cancel of the prerender. 1923 // If this is a prerendering page, start the cancel of the prerender.
2039 if (is_prerendering_) { 1924 if (is_prerendering_) {
2040 Send(new ViewHostMsg_MaybeCancelPrerender(routing_id_, 1925 Send(new ViewHostMsg_MaybeCancelPrerenderForHTML5Media(routing_id_));
2041 prerender::PRERENDER_CANCELLATION_REASON_HTML5_MEDIA));
2042 } 1926 }
2043 1927
2044 scoped_ptr<media::MessageLoopFactory> message_loop_factory( 1928 scoped_ptr<media::MessageLoopFactory> message_loop_factory(
2045 new media::MessageLoopFactoryImpl()); 1929 new media::MessageLoopFactoryImpl());
2046 scoped_ptr<media::FilterCollection> collection( 1930 scoped_ptr<media::FilterCollection> collection(
2047 new media::FilterCollection()); 1931 new media::FilterCollection());
2048 1932
2049 // Add in any custom filter factories first. 1933 // Add in any custom filter factories first.
2050 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 1934 const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
2051 if (!cmd_line->HasSwitch(switches::kDisableAudio)) { 1935 if (!cmd_line->HasSwitch(switches::kDisableAudio)) {
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
2573 // When we perform a new navigation, we need to update the last committed 2457 // When we perform a new navigation, we need to update the last committed
2574 // session history entry with state for the page we are leaving. 2458 // session history entry with state for the page we are leaving.
2575 UpdateSessionHistory(frame); 2459 UpdateSessionHistory(frame);
2576 2460
2577 // We bump our Page ID to correspond with the new session history entry. 2461 // We bump our Page ID to correspond with the new session history entry.
2578 page_id_ = next_page_id_++; 2462 page_id_ = next_page_id_++;
2579 2463
2580 // Advance our offset in session history, applying the length limit. There 2464 // Advance our offset in session history, applying the length limit. There
2581 // is now no forward history. 2465 // is now no forward history.
2582 history_list_offset_++; 2466 history_list_offset_++;
2583 if (history_list_offset_ >= chrome::kMaxSessionHistoryEntries) 2467 if (history_list_offset_ >= content::kMaxSessionHistoryEntries)
2584 history_list_offset_ = chrome::kMaxSessionHistoryEntries - 1; 2468 history_list_offset_ = content::kMaxSessionHistoryEntries - 1;
2585 history_list_length_ = history_list_offset_ + 1; 2469 history_list_length_ = history_list_offset_ + 1;
2586 } else { 2470 } else {
2587 // Inspect the navigation_state on this frame to see if the navigation 2471 // Inspect the navigation_state on this frame to see if the navigation
2588 // corresponds to a session history navigation... Note: |frame| may or 2472 // corresponds to a session history navigation... Note: |frame| may or
2589 // may not be the toplevel frame, but for the case of capturing session 2473 // may not be the toplevel frame, but for the case of capturing session
2590 // history, the first committed frame suffices. We keep track of whether 2474 // history, the first committed frame suffices. We keep track of whether
2591 // we've seen this commit before so that only capture session history once 2475 // we've seen this commit before so that only capture session history once
2592 // per navigation. 2476 // per navigation.
2593 // 2477 //
2594 // Note that we need to check if the page ID changed. In the case of a 2478 // Note that we need to check if the page ID changed. In the case of a
(...skipping 24 matching lines...) Expand all
2619 2503
2620 // If this committed load was initiated by a client redirect, we're 2504 // If this committed load was initiated by a client redirect, we're
2621 // at the last stop now, so clear it. 2505 // at the last stop now, so clear it.
2622 completed_client_redirect_src_ = GURL(); 2506 completed_client_redirect_src_ = GURL();
2623 2507
2624 // Check whether we have new encoding name. 2508 // Check whether we have new encoding name.
2625 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); 2509 UpdateEncoding(frame, frame->view()->pageEncoding().utf8());
2626 } 2510 }
2627 2511
2628 void RenderView::didClearWindowObject(WebFrame* frame) { 2512 void RenderView::didClearWindowObject(WebFrame* frame) {
2629 if (BindingsPolicy::is_dom_automation_enabled(enabled_bindings_)) 2513 FOR_EACH_OBSERVER(RenderViewObserver, observers_,
2630 BindDOMAutomationController(frame); 2514 DidClearWindowObject(frame));
2515
2631 GURL frame_url = frame->url(); 2516 GURL frame_url = frame->url();
2632 if (BindingsPolicy::is_web_ui_enabled(enabled_bindings_) && 2517 if (BindingsPolicy::is_web_ui_enabled(enabled_bindings_) &&
2633 (frame_url.SchemeIs(chrome::kChromeUIScheme) || 2518 (frame_url.SchemeIs(chrome::kChromeUIScheme) ||
2634 frame_url.SchemeIs(chrome::kDataScheme))) { 2519 frame_url.SchemeIs(chrome::kDataScheme))) {
2635 GetWebUIBindings()->set_message_sender(this); 2520 GetWebUIBindings()->set_message_sender(this);
2636 GetWebUIBindings()->set_routing_id(routing_id_); 2521 GetWebUIBindings()->set_routing_id(routing_id_);
2637 GetWebUIBindings()->BindToJavascript(frame, "chrome"); 2522 GetWebUIBindings()->BindToJavascript(frame, "chrome");
2638 } 2523 }
2639 if (BindingsPolicy::is_external_host_enabled(enabled_bindings_)) {
2640 GetExternalHostBindings()->set_message_sender(this);
2641 GetExternalHostBindings()->set_routing_id(routing_id_);
2642 GetExternalHostBindings()->BindToJavascript(frame, "externalHost");
2643 }
2644 } 2524 }
2645 2525
2646 void RenderView::didCreateDocumentElement(WebFrame* frame) { 2526 void RenderView::didCreateDocumentElement(WebFrame* frame) {
2647 // Notify the browser about non-blank documents loading in the top frame. 2527 // Notify the browser about non-blank documents loading in the top frame.
2648 GURL url = frame->url(); 2528 GURL url = frame->url();
2649 if (url.is_valid() && url.spec() != chrome::kAboutBlankURL) { 2529 if (url.is_valid() && url.spec() != chrome::kAboutBlankURL) {
2650 if (frame == webview()->mainFrame()) 2530 if (frame == webview()->mainFrame())
2651 Send(new ViewHostMsg_DocumentAvailableInMainFrame(routing_id_)); 2531 Send(new ViewHostMsg_DocumentAvailableInMainFrame(routing_id_));
2652 } 2532 }
2653 2533
2654 FOR_EACH_OBSERVER(RenderViewObserver, observers_, 2534 FOR_EACH_OBSERVER(RenderViewObserver, observers_,
2655 DidCreateDocumentElement(frame)); 2535 DidCreateDocumentElement(frame));
2656 } 2536 }
2657 2537
2658 void RenderView::didReceiveTitle(WebFrame* frame, const WebString& title) { 2538 void RenderView::didReceiveTitle(WebFrame* frame, const WebString& title) {
2659 UpdateTitle(frame, title); 2539 UpdateTitle(frame, title);
2660 2540
2661 // Also check whether we have new encoding name. 2541 // Also check whether we have new encoding name.
2662 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); 2542 UpdateEncoding(frame, frame->view()->pageEncoding().utf8());
2663 } 2543 }
2664 2544
2665 void RenderView::didChangeIcons(WebFrame* frame) { 2545 void RenderView::didChangeIcons(WebFrame* frame) {
2666 if (!frame->parent()) { 2546 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidChangeIcons(frame));
2667 std::vector<FaviconURL> urls;
2668 urls.push_back(FaviconURL(frame->favIconURL(), FAVICON));
2669 Send(new ViewHostMsg_UpdateFaviconURL(routing_id_, page_id_, urls));
2670 }
2671 } 2547 }
2672 2548
2673 void RenderView::didFinishDocumentLoad(WebFrame* frame) { 2549 void RenderView::didFinishDocumentLoad(WebFrame* frame) {
2674 WebDataSource* ds = frame->dataSource(); 2550 WebDataSource* ds = frame->dataSource();
2675 NavigationState* navigation_state = NavigationState::FromDataSource(ds); 2551 NavigationState* navigation_state = NavigationState::FromDataSource(ds);
2676 DCHECK(navigation_state); 2552 DCHECK(navigation_state);
2677 navigation_state->set_finish_document_load_time(Time::Now()); 2553 navigation_state->set_finish_document_load_time(Time::Now());
2678 2554
2679 Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_, frame->identifier())); 2555 Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_, frame->identifier()));
2680 2556
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
2834 original_error.unreachableURL = frame_url; 2710 original_error.unreachableURL = frame_url;
2835 2711
2836 navigation_state->set_alt_error_page_fetcher( 2712 navigation_state->set_alt_error_page_fetcher(
2837 new AltErrorPageResourceFetcher( 2713 new AltErrorPageResourceFetcher(
2838 error_page_url, frame, original_error, 2714 error_page_url, frame, original_error,
2839 NewCallback(this, &RenderView::AltErrorPageFinished))); 2715 NewCallback(this, &RenderView::AltErrorPageFinished)));
2840 return; 2716 return;
2841 } 2717 }
2842 } 2718 }
2843 2719
2844 // Use an internal error page, if we have one for the status code. 2720 content::GetContentClient()->renderer()->ShowErrorPage(
2845 if (LocalizedError::HasStrings(LocalizedError::kHttpErrorDomain, 2721 this, frame, http_status_code);
2846 http_status_code)) {
2847 WebURLError error;
2848 error.unreachableURL = frame->url();
2849 error.domain = WebString::fromUTF8(LocalizedError::kHttpErrorDomain);
2850 error.reason = http_status_code;
2851
2852 LoadNavigationErrorPage(frame, frame->dataSource()->request(), error,
2853 std::string(), true);
2854 }
2855 } 2722 }
2856 2723
2857 void RenderView::didFailResourceLoad( 2724 void RenderView::didFailResourceLoad(
2858 WebFrame* frame, unsigned identifier, const WebURLError& error) { 2725 WebFrame* frame, unsigned identifier, const WebURLError& error) {
2859 // Ignore 2726 // Ignore
2860 } 2727 }
2861 2728
2862 void RenderView::didLoadResourceFromMemoryCache( 2729 void RenderView::didLoadResourceFromMemoryCache(
2863 WebFrame* frame, const WebURLRequest& request, 2730 WebFrame* frame, const WebURLRequest& request,
2864 const WebURLResponse& response) { 2731 const WebURLResponse& response) {
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
3149 return; 3016 return;
3150 3017
3151 const WebHistoryItem& item = webview()->mainFrame()->currentHistoryItem(); 3018 const WebHistoryItem& item = webview()->mainFrame()->currentHistoryItem();
3152 if (item.isNull()) 3019 if (item.isNull())
3153 return; 3020 return;
3154 3021
3155 Send(new ViewHostMsg_UpdateState( 3022 Send(new ViewHostMsg_UpdateState(
3156 routing_id_, page_id_, webkit_glue::HistoryItemToString(item))); 3023 routing_id_, page_id_, webkit_glue::HistoryItemToString(item)));
3157 } 3024 }
3158 3025
3159 bool RenderView::DownloadFavicon(int id, const GURL& image_url,
3160 int image_size) {
3161 // Make sure webview was not shut down.
3162 if (!webview())
3163 return false;
3164 // Create an image resource fetcher and assign it with a call back object.
3165 image_fetchers_.push_back(linked_ptr<ImageResourceFetcher>(
3166 new ImageResourceFetcher(
3167 image_url, webview()->mainFrame(), id, image_size,
3168 WebURLRequest::TargetIsFavicon,
3169 NewCallback(this, &RenderView::DidDownloadFavicon))));
3170 return true;
3171 }
3172
3173 void RenderView::DidDownloadFavicon(ImageResourceFetcher* fetcher,
3174 const SkBitmap& image) {
3175 // Notify requester of image download status.
3176 Send(new ViewHostMsg_DidDownloadFavicon(routing_id_,
3177 fetcher->id(),
3178 fetcher->image_url(),
3179 image.isNull(),
3180 image));
3181
3182 // Remove the image fetcher from our pending list. We're in the callback from
3183 // ImageResourceFetcher, best to delay deletion.
3184 for (ImageResourceFetcherList::iterator iter = image_fetchers_.begin();
3185 iter != image_fetchers_.end(); ++iter) {
3186 if (iter->get() == fetcher) {
3187 iter->release();
3188 image_fetchers_.erase(iter);
3189 break;
3190 }
3191 }
3192 MessageLoop::current()->DeleteSoon(FROM_HERE, fetcher);
3193 }
3194
3195 void RenderView::OnDownloadFavicon(int id,
3196 const GURL& image_url,
3197 int image_size) {
3198 bool data_image_failed = false;
3199 if (image_url.SchemeIs("data")) {
3200 SkBitmap data_image = ImageFromDataUrl(image_url);
3201 data_image_failed = data_image.empty();
3202 if (!data_image_failed) {
3203 Send(new ViewHostMsg_DidDownloadFavicon(routing_id_, id, image_url, false,
3204 data_image));
3205 }
3206 }
3207
3208 if (data_image_failed ||
3209 !DownloadFavicon(id, image_url, image_size)) {
3210 Send(new ViewHostMsg_DidDownloadFavicon(routing_id_, id, image_url, true,
3211 SkBitmap()));
3212 }
3213 }
3214
3215 SkBitmap RenderView::ImageFromDataUrl(const GURL& url) const {
3216 std::string mime_type, char_set, data;
3217 if (net::DataURL::Parse(url, &mime_type, &char_set, &data) && !data.empty()) {
3218 // Decode the favicon using WebKit's image decoder.
3219 webkit_glue::ImageDecoder decoder(gfx::Size(kFaviconSize, kFaviconSize));
3220 const unsigned char* src_data =
3221 reinterpret_cast<const unsigned char*>(&data[0]);
3222
3223 return decoder.Decode(src_data, data.size());
3224 }
3225 return SkBitmap();
3226 }
3227
3228 GURL RenderView::GetAlternateErrorPageURL(const GURL& failed_url, 3026 GURL RenderView::GetAlternateErrorPageURL(const GURL& failed_url,
3229 ErrorPageType error_type) { 3027 ErrorPageType error_type) {
3230 if (failed_url.SchemeIsSecure()) { 3028 if (failed_url.SchemeIsSecure()) {
3231 // If the URL that failed was secure, then the embedding web page was not 3029 // If the URL that failed was secure, then the embedding web page was not
3232 // expecting a network attacker to be able to manipulate its contents. As 3030 // expecting a network attacker to be able to manipulate its contents. As
3233 // we fetch alternate error pages over HTTP, we would be allowing a network 3031 // we fetch alternate error pages over HTTP, we would be allowing a network
3234 // attacker to manipulate the contents of the response if we tried to use 3032 // attacker to manipulate the contents of the response if we tried to use
3235 // the link doctor here. 3033 // the link doctor here.
3236 return GURL(); 3034 return GURL();
3237 } 3035 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
3282 return url; 3080 return url;
3283 } 3081 }
3284 3082
3285 WebUIBindings* RenderView::GetWebUIBindings() { 3083 WebUIBindings* RenderView::GetWebUIBindings() {
3286 if (!web_ui_bindings_.get()) { 3084 if (!web_ui_bindings_.get()) {
3287 web_ui_bindings_.reset(new WebUIBindings()); 3085 web_ui_bindings_.reset(new WebUIBindings());
3288 } 3086 }
3289 return web_ui_bindings_.get(); 3087 return web_ui_bindings_.get();
3290 } 3088 }
3291 3089
3292 ExternalHostBindings* RenderView::GetExternalHostBindings() {
3293 if (!external_host_bindings_.get()) {
3294 external_host_bindings_.reset(new ExternalHostBindings());
3295 }
3296 return external_host_bindings_.get();
3297 }
3298
3299 WebKit::WebPlugin* RenderView::GetWebPluginFromPluginDocument() { 3090 WebKit::WebPlugin* RenderView::GetWebPluginFromPluginDocument() {
3300 return webview()->mainFrame()->document().to<WebPluginDocument>().plugin(); 3091 return webview()->mainFrame()->document().to<WebPluginDocument>().plugin();
3301 } 3092 }
3302 3093
3303 void RenderView::OnFind(int request_id, const string16& search_text, 3094 void RenderView::OnFind(int request_id, const string16& search_text,
3304 const WebFindOptions& options) { 3095 const WebFindOptions& options) {
3305 WebFrame* main_frame = webview()->mainFrame(); 3096 WebFrame* main_frame = webview()->mainFrame();
3306 3097
3307 if (main_frame->document().isPluginDocument()) { 3098 if (main_frame->document().isPluginDocument()) {
3308 if (options.findNext) { 3099 if (options.findNext) {
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
3807 file_chooser_completions_.front()->completion->didChooseFile(ws_file_names); 3598 file_chooser_completions_.front()->completion->didChooseFile(ws_file_names);
3808 file_chooser_completions_.pop_front(); 3599 file_chooser_completions_.pop_front();
3809 3600
3810 // If there are more pending file chooser requests, schedule one now. 3601 // If there are more pending file chooser requests, schedule one now.
3811 if (!file_chooser_completions_.empty()) { 3602 if (!file_chooser_completions_.empty()) {
3812 Send(new ViewHostMsg_RunFileChooser(routing_id_, 3603 Send(new ViewHostMsg_RunFileChooser(routing_id_,
3813 file_chooser_completions_.front()->params)); 3604 file_chooser_completions_.front()->params));
3814 } 3605 }
3815 } 3606 }
3816 3607
3817 void RenderView::OnEnableViewSourceMode() {
3818 if (!webview())
3819 return;
3820 WebFrame* main_frame = webview()->mainFrame();
3821 if (!main_frame)
3822 return;
3823
3824 main_frame->enableViewSourceMode(true);
3825 }
3826
3827 void RenderView::OnEnablePreferredSizeChangedMode(int flags) { 3608 void RenderView::OnEnablePreferredSizeChangedMode(int flags) {
3828 DCHECK(flags != kPreferredSizeNothing); 3609 DCHECK(flags != kPreferredSizeNothing);
3829 if (send_preferred_size_changes_) 3610 if (send_preferred_size_changes_)
3830 return; 3611 return;
3831 send_preferred_size_changes_ = true; 3612 send_preferred_size_changes_ = true;
3832 3613
3833 // WebKit doesn't send a notification of the effective height of the page 3614 // WebKit doesn't send a notification of the effective height of the page
3834 // changes, so poll for it. 3615 // changes, so poll for it.
3835 // TODO: Add a notification for this to WebKit, remove polling. After that's 3616 // TODO: Add a notification for this to WebKit, remove polling. After that's
3836 // done, rename kPreferredSizeHeightThisIsSlow to kPreferredSizeHeight. 3617 // done, rename kPreferredSizeHeightThisIsSlow to kPreferredSizeHeight.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3872 } 3653 }
3873 #endif 3654 #endif
3874 } 3655 }
3875 3656
3876 void RenderView::OnMediaPlayerActionAt(const gfx::Point& location, 3657 void RenderView::OnMediaPlayerActionAt(const gfx::Point& location,
3877 const WebMediaPlayerAction& action) { 3658 const WebMediaPlayerAction& action) {
3878 if (webview()) 3659 if (webview())
3879 webview()->performMediaPlayerAction(action, location); 3660 webview()->performMediaPlayerAction(action, location);
3880 } 3661 }
3881 3662
3882 void RenderView::OnNotifyRendererViewType(ViewType::Type type) {
3883 view_type_ = type;
3884 }
3885
3886 void RenderView::OnUpdateBrowserWindowId(int window_id) {
3887 browser_window_id_ = window_id;
3888 }
3889
3890 void RenderView::OnEnableAccessibility() { 3663 void RenderView::OnEnableAccessibility() {
3891 if (WebAccessibilityCache::accessibilityEnabled()) 3664 if (WebAccessibilityCache::accessibilityEnabled())
3892 return; 3665 return;
3893 3666
3894 WebAccessibilityCache::enableAccessibility(); 3667 WebAccessibilityCache::enableAccessibility();
3895 3668
3896 if (webview()) { 3669 if (webview()) {
3897 // It's possible that the webview has already loaded a webpage without 3670 // It's possible that the webview has already loaded a webpage without
3898 // accessibility being enabled. Initialize the browser's cached 3671 // accessibility being enabled. Initialize the browser's cached
3899 // accessibility tree by sending it a 'load complete' notification. 3672 // accessibility tree by sending it a 'load complete' notification.
(...skipping 30 matching lines...) Expand all
3930 3703
3931 obj.performDefaultAction(); 3704 obj.performDefaultAction();
3932 } 3705 }
3933 3706
3934 void RenderView::OnAccessibilityNotificationsAck() { 3707 void RenderView::OnAccessibilityNotificationsAck() {
3935 DCHECK(accessibility_ack_pending_); 3708 DCHECK(accessibility_ack_pending_);
3936 accessibility_ack_pending_ = false; 3709 accessibility_ack_pending_ = false;
3937 SendPendingAccessibilityNotifications(); 3710 SendPendingAccessibilityNotifications();
3938 } 3711 }
3939 3712
3940 void RenderView::OnGetAllSavableResourceLinksForCurrentPage(
3941 const GURL& page_url) {
3942 // Prepare list to storage all savable resource links.
3943 std::vector<GURL> resources_list;
3944 std::vector<GURL> referrers_list;
3945 std::vector<GURL> frames_list;
3946 webkit_glue::SavableResourcesResult result(&resources_list,
3947 &referrers_list,
3948 &frames_list);
3949
3950 if (!webkit_glue::GetAllSavableResourceLinksForCurrentPage(
3951 webview(),
3952 page_url,
3953 &result,
3954 chrome::kSavableSchemes)) {
3955 // If something is wrong when collecting all savable resource links,
3956 // send empty list to embedder(browser) to tell it failed.
3957 referrers_list.clear();
3958 resources_list.clear();
3959 frames_list.clear();
3960 }
3961
3962 // Send result of all savable resource links to embedder.
3963 Send(new ViewHostMsg_SendCurrentPageAllSavableResourceLinks(routing_id_,
3964 resources_list,
3965 referrers_list,
3966 frames_list));
3967 }
3968
3969 void RenderView::OnGetSerializedHtmlDataForCurrentPageWithLocalLinks(
3970 const std::vector<GURL>& links,
3971 const std::vector<FilePath>& local_paths,
3972 const FilePath& local_directory_name) {
3973
3974 // Convert std::vector of GURLs to WebVector<WebURL>
3975 WebVector<WebURL> weburl_links(links);
3976
3977 // Convert std::vector of std::strings to WebVector<WebString>
3978 WebVector<WebString> webstring_paths(local_paths.size());
3979 for (size_t i = 0; i < local_paths.size(); i++)
3980 webstring_paths[i] = webkit_glue::FilePathToWebString(local_paths[i]);
3981
3982 WebPageSerializer::serialize(webview()->mainFrame(),
3983 true, this, weburl_links, webstring_paths,
3984 webkit_glue::FilePathToWebString(
3985 local_directory_name));
3986 }
3987
3988 void RenderView::didSerializeDataForFrame(const WebURL& frame_url,
3989 const WebCString& data,
3990 WebPageSerializerClient::PageSerializationStatus status) {
3991 Send(new ViewHostMsg_SendSerializedHtmlData(
3992 routing_id_,
3993 frame_url,
3994 data.data(),
3995 static_cast<int32>(status)));
3996 }
3997
3998 void RenderView::OnShouldClose() { 3713 void RenderView::OnShouldClose() {
3999 bool should_close = webview()->dispatchBeforeUnloadEvent(); 3714 bool should_close = webview()->dispatchBeforeUnloadEvent();
4000 Send(new ViewHostMsg_ShouldClose_ACK(routing_id_, should_close)); 3715 Send(new ViewHostMsg_ShouldClose_ACK(routing_id_, should_close));
4001 } 3716 }
4002 3717
4003 void RenderView::OnClosePage(const ViewMsg_ClosePage_Params& params) { 3718 void RenderView::OnClosePage(const ViewMsg_ClosePage_Params& params) {
4004 // TODO(creis): We'd rather use webview()->Close() here, but that currently 3719 // TODO(creis): We'd rather use webview()->Close() here, but that currently
4005 // sets the WebView's delegate_ to NULL, preventing any JavaScript dialogs 3720 // sets the WebView's delegate_ to NULL, preventing any JavaScript dialogs
4006 // in the onunload handler from appearing. For now, we're bypassing that and 3721 // in the onunload handler from appearing. For now, we're bypassing that and
4007 // calling the FrameLoader's CloseURL method directly. This should be 3722 // calling the FrameLoader's CloseURL method directly. This should be
(...skipping 10 matching lines...) Expand all
4018 #if defined(OS_WIN) 3733 #if defined(OS_WIN)
4019 gfx::NativeThemeWin::instance()->CloseHandles(); 3734 gfx::NativeThemeWin::instance()->CloseHandles();
4020 if (webview()) 3735 if (webview())
4021 webview()->themeChanged(); 3736 webview()->themeChanged();
4022 #else // defined(OS_WIN) 3737 #else // defined(OS_WIN)
4023 // TODO(port): we don't support theming on non-Windows platforms yet 3738 // TODO(port): we don't support theming on non-Windows platforms yet
4024 NOTIMPLEMENTED(); 3739 NOTIMPLEMENTED();
4025 #endif 3740 #endif
4026 } 3741 }
4027 3742
4028 void RenderView::OnHandleMessageFromExternalHost(const std::string& message,
4029 const std::string& origin,
4030 const std::string& target) {
4031 if (message.empty())
4032 return;
4033 GetExternalHostBindings()->ForwardMessageFromExternalHost(message, origin,
4034 target);
4035 }
4036
4037 void RenderView::OnDisassociateFromPopupCount() { 3743 void RenderView::OnDisassociateFromPopupCount() {
4038 if (decrement_shared_popup_at_destruction_) 3744 if (decrement_shared_popup_at_destruction_)
4039 shared_popup_counter_->data--; 3745 shared_popup_counter_->data--;
4040 shared_popup_counter_ = new SharedRenderViewCounter(0); 3746 shared_popup_counter_ = new SharedRenderViewCounter(0);
4041 decrement_shared_popup_at_destruction_ = false; 3747 decrement_shared_popup_at_destruction_ = false;
4042 } 3748 }
4043 3749
4044 bool RenderView::MaybeLoadAlternateErrorPage(WebFrame* frame, 3750 bool RenderView::MaybeLoadAlternateErrorPage(WebFrame* frame,
4045 const WebURLError& error, 3751 const WebURLError& error,
4046 bool replace) { 3752 bool replace) {
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
4599 const PP_Flash_NetAddress& local_addr, 4305 const PP_Flash_NetAddress& local_addr,
4600 const PP_Flash_NetAddress& remote_addr) { 4306 const PP_Flash_NetAddress& remote_addr) {
4601 pepper_delegate_.OnConnectTcpACK( 4307 pepper_delegate_.OnConnectTcpACK(
4602 request_id, 4308 request_id,
4603 IPC::PlatformFileForTransitToPlatformFile(socket_for_transit), 4309 IPC::PlatformFileForTransitToPlatformFile(socket_for_transit),
4604 local_addr, 4310 local_addr,
4605 remote_addr); 4311 remote_addr);
4606 } 4312 }
4607 #endif 4313 #endif
4608 4314
4609 void RenderView::OnJavaScriptStressTestControl(int cmd, int param) {
4610 if (cmd == kJavaScriptStressTestSetStressRunType) {
4611 v8::Testing::SetStressRunType(static_cast<v8::Testing::StressType>(param));
4612 } else if (cmd == kJavaScriptStressTestPrepareStressRun) {
4613 v8::Testing::PrepareStressRun(param);
4614 }
4615 }
4616
4617 void RenderView::OnContextMenuClosed( 4315 void RenderView::OnContextMenuClosed(
4618 const webkit_glue::CustomContextMenuContext& custom_context) { 4316 const webkit_glue::CustomContextMenuContext& custom_context) {
4619 if (custom_context.is_pepper_menu) 4317 if (custom_context.is_pepper_menu)
4620 pepper_delegate_.OnContextMenuClosed(custom_context); 4318 pepper_delegate_.OnContextMenuClosed(custom_context);
4621 else 4319 else
4622 context_menu_node_.reset(); 4320 context_menu_node_.reset();
4623 } 4321 }
4624 4322
4625 void RenderView::OnNetworkStateChanged(bool online) { 4323 void RenderView::OnNetworkStateChanged(bool online) {
4626 WebNetworkStateNotifier::setOnLine(online); 4324 WebNetworkStateNotifier::setOnLine(online);
4627 } 4325 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698