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

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

Issue 8760024: Cross-process postMessage (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: New patch, still not quite done Created 9 years 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
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_impl.h" 5 #include "content/renderer/render_view_impl.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>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "content/public/common/content_switches.h" 43 #include "content/public/common/content_switches.h"
44 #include "content/public/common/file_chooser_params.h" 44 #include "content/public/common/file_chooser_params.h"
45 #include "content/public/common/url_constants.h" 45 #include "content/public/common/url_constants.h"
46 #include "content/public/renderer/content_renderer_client.h" 46 #include "content/public/renderer/content_renderer_client.h"
47 #include "content/public/renderer/document_state.h" 47 #include "content/public/renderer/document_state.h"
48 #include "content/public/renderer/navigation_state.h" 48 #include "content/public/renderer/navigation_state.h"
49 #include "content/public/renderer/render_view_observer.h" 49 #include "content/public/renderer/render_view_observer.h"
50 #include "content/public/renderer/render_view_visitor.h" 50 #include "content/public/renderer/render_view_visitor.h"
51 #include "content/renderer/device_orientation_dispatcher.h" 51 #include "content/renderer/device_orientation_dispatcher.h"
52 #include "content/renderer/devtools_agent.h" 52 #include "content/renderer/devtools_agent.h"
53 #include "content/renderer/dom_proxy_installer.h"
53 #include "content/renderer/external_popup_menu.h" 54 #include "content/renderer/external_popup_menu.h"
54 #include "content/renderer/geolocation_dispatcher.h" 55 #include "content/renderer/geolocation_dispatcher.h"
55 #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h" 56 #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h"
56 #include "content/renderer/idle_user_detector.h" 57 #include "content/renderer/idle_user_detector.h"
57 #include "content/renderer/intents_dispatcher.h" 58 #include "content/renderer/intents_dispatcher.h"
58 #include "content/renderer/java/java_bridge_dispatcher.h" 59 #include "content/renderer/java/java_bridge_dispatcher.h"
59 #include "content/renderer/load_progress_tracker.h" 60 #include "content/renderer/load_progress_tracker.h"
60 #include "content/renderer/media/audio_message_filter.h" 61 #include "content/renderer/media/audio_message_filter.h"
61 #include "content/renderer/media/audio_renderer_impl.h" 62 #include "content/renderer/media/audio_renderer_impl.h"
62 #include "content/renderer/media/media_stream_impl.h" 63 #include "content/renderer/media/media_stream_impl.h"
63 #include "content/renderer/media/render_media_log.h" 64 #include "content/renderer/media/render_media_log.h"
64 #include "content/renderer/mhtml_generator.h" 65 #include "content/renderer/mhtml_generator.h"
65 #include "content/renderer/notification_provider.h" 66 #include "content/renderer/notification_provider.h"
66 #include "content/renderer/p2p/socket_dispatcher.h" 67 #include "content/renderer/p2p/socket_dispatcher.h"
67 #include "content/renderer/plugin_channel_host.h" 68 #include "content/renderer/plugin_channel_host.h"
69 #include "content/renderer/proxy_view_host.h"
68 #include "content/renderer/render_process.h" 70 #include "content/renderer/render_process.h"
69 #include "content/renderer/render_thread_impl.h" 71 #include "content/renderer/render_thread_impl.h"
70 #include "content/renderer/render_widget_fullscreen_pepper.h" 72 #include "content/renderer/render_widget_fullscreen_pepper.h"
71 #include "content/renderer/renderer_accessibility.h" 73 #include "content/renderer/renderer_accessibility.h"
72 #include "content/renderer/renderer_webapplicationcachehost_impl.h" 74 #include "content/renderer/renderer_webapplicationcachehost_impl.h"
73 #include "content/renderer/renderer_webstoragenamespace_impl.h" 75 #include "content/renderer/renderer_webstoragenamespace_impl.h"
74 #include "content/renderer/speech_input_dispatcher.h" 76 #include "content/renderer/speech_input_dispatcher.h"
75 #include "content/renderer/text_input_client_observer.h" 77 #include "content/renderer/text_input_client_observer.h"
76 #include "content/renderer/v8_value_converter_impl.h" 78 #include "content/renderer/v8_value_converter_impl.h"
77 #include "content/renderer/web_ui_bindings.h" 79 #include "content/renderer/web_ui_bindings.h"
78 #include "content/renderer/webplugin_delegate_proxy.h" 80 #include "content/renderer/webplugin_delegate_proxy.h"
79 #include "content/renderer/websharedworker_proxy.h" 81 #include "content/renderer/websharedworker_proxy.h"
80 #include "media/base/filter_collection.h" 82 #include "media/base/filter_collection.h"
81 #include "media/base/media_switches.h" 83 #include "media/base/media_switches.h"
82 #include "media/base/message_loop_factory_impl.h" 84 #include "media/base/message_loop_factory_impl.h"
83 #include "net/base/escape.h" 85 #include "net/base/escape.h"
84 #include "net/base/net_errors.h" 86 #include "net/base/net_errors.h"
85 #include "net/http/http_util.h" 87 #include "net/http/http_util.h"
86 #include "ppapi/c/private/ppb_flash_net_connector.h" 88 #include "ppapi/c/private/ppb_flash_net_connector.h"
87 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObjec t.h" 89 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObjec t.h"
88 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebCString.h " 90 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebCString.h "
89 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h" 91 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h"
90 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" 92 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
93 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMEvent.h"
94 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMMessageEvent.h"
91 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebDragData. h" 95 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebDragData. h"
92 #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" 96 #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
93 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams. h" 97 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams. h"
94 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallback s.h" 98 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallback s.h"
95 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h" 99 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h"
96 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormControlElement .h" 100 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormControlElement .h"
97 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormElement.h" 101 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFormElement.h"
98 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 102 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
99 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsC ontext3D.h" 103 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsC ontext3D.h"
100 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h" 104 #include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h"
101 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebImage.h" 105 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebImage.h"
102 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h" 106 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h"
103 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" 107 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
104 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntent.h" 108 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntent.h"
105 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentServiceInfo. h" 109 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentServiceInfo. h"
106 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerAction. h" 110 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerAction. h"
107 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNodeList.h" 111 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNodeList.h"
108 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPageSerializer.h" 112 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPageSerializer.h"
109 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h" 113 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h"
110 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" 114 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
111 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginDocument.h" 115 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginDocument.h"
112 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h" 116 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h"
113 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebPoint.h" 117 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebPoint.h"
114 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRange.h" 118 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRange.h"
115 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebRect.h" 119 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebRect.h"
116 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h" 120 #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h"
117 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSearchableFormData .h" 121 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSearchableFormData .h"
118 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 122 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
119 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h" 123 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h"
124 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerialize dScriptValue.h"
120 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSettings.h" 125 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSettings.h"
121 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h" 126 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h"
122 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h " 127 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h "
123 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageQuotaCallba cks.h" 128 #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageQuotaCallba cks.h"
124 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" 129 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
125 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h" 130 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h"
126 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError. h" 131 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError. h"
127 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLReques t.h" 132 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLReques t.h"
128 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLRespon se.h" 133 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLRespon se.h"
129 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" 134 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 using WebKit::WebApplicationCacheHostClient; 177 using WebKit::WebApplicationCacheHostClient;
173 using WebKit::WebCString; 178 using WebKit::WebCString;
174 using WebKit::WebColor; 179 using WebKit::WebColor;
175 using WebKit::WebColorName; 180 using WebKit::WebColorName;
176 using WebKit::WebConsoleMessage; 181 using WebKit::WebConsoleMessage;
177 using WebKit::WebContextMenuData; 182 using WebKit::WebContextMenuData;
178 using WebKit::WebCookieJar; 183 using WebKit::WebCookieJar;
179 using WebKit::WebData; 184 using WebKit::WebData;
180 using WebKit::WebDataSource; 185 using WebKit::WebDataSource;
181 using WebKit::WebDocument; 186 using WebKit::WebDocument;
187 using WebKit::WebDOMEvent;
188 using WebKit::WebDOMMessageEvent;
182 using WebKit::WebDragData; 189 using WebKit::WebDragData;
183 using WebKit::WebDragOperation; 190 using WebKit::WebDragOperation;
184 using WebKit::WebDragOperationsMask; 191 using WebKit::WebDragOperationsMask;
185 using WebKit::WebEditingAction; 192 using WebKit::WebEditingAction;
186 using WebKit::WebElement; 193 using WebKit::WebElement;
187 using WebKit::WebExternalPopupMenu; 194 using WebKit::WebExternalPopupMenu;
188 using WebKit::WebExternalPopupMenuClient; 195 using WebKit::WebExternalPopupMenuClient;
189 using WebKit::WebFileChooserCompletion; 196 using WebKit::WebFileChooserCompletion;
190 using WebKit::WebFileSystem; 197 using WebKit::WebFileSystem;
191 using WebKit::WebFileSystemCallbacks; 198 using WebKit::WebFileSystemCallbacks;
(...skipping 19 matching lines...) Expand all
211 using WebKit::WebPluginParams; 218 using WebKit::WebPluginParams;
212 using WebKit::WebPoint; 219 using WebKit::WebPoint;
213 using WebKit::WebPopupMenuInfo; 220 using WebKit::WebPopupMenuInfo;
214 using WebKit::WebRange; 221 using WebKit::WebRange;
215 using WebKit::WebRect; 222 using WebKit::WebRect;
216 using WebKit::WebReferrerPolicy; 223 using WebKit::WebReferrerPolicy;
217 using WebKit::WebScriptSource; 224 using WebKit::WebScriptSource;
218 using WebKit::WebSearchableFormData; 225 using WebKit::WebSearchableFormData;
219 using WebKit::WebSecurityOrigin; 226 using WebKit::WebSecurityOrigin;
220 using WebKit::WebSecurityPolicy; 227 using WebKit::WebSecurityPolicy;
228 using WebKit::WebSerializedScriptValue;
221 using WebKit::WebSettings; 229 using WebKit::WebSettings;
222 using WebKit::WebSharedWorker; 230 using WebKit::WebSharedWorker;
223 using WebKit::WebSize; 231 using WebKit::WebSize;
224 using WebKit::WebStorageNamespace; 232 using WebKit::WebStorageNamespace;
225 using WebKit::WebStorageQuotaCallbacks; 233 using WebKit::WebStorageQuotaCallbacks;
226 using WebKit::WebStorageQuotaError; 234 using WebKit::WebStorageQuotaError;
227 using WebKit::WebStorageQuotaType; 235 using WebKit::WebStorageQuotaType;
228 using WebKit::WebString; 236 using WebKit::WebString;
229 using WebKit::WebTextAffinity; 237 using WebKit::WebTextAffinity;
230 using WebKit::WebTextDirection; 238 using WebKit::WebTextDirection;
231 using WebKit::WebTouchEvent; 239 using WebKit::WebTouchEvent;
232 using WebKit::WebURL; 240 using WebKit::WebURL;
233 using WebKit::WebURLError; 241 using WebKit::WebURLError;
234 using WebKit::WebURLRequest; 242 using WebKit::WebURLRequest;
235 using WebKit::WebURLResponse; 243 using WebKit::WebURLResponse;
236 using WebKit::WebVector; 244 using WebKit::WebVector;
237 using WebKit::WebView; 245 using WebKit::WebView;
238 using WebKit::WebWidget; 246 using WebKit::WebWidget;
239 using WebKit::WebWindowFeatures; 247 using WebKit::WebWindowFeatures;
240 using WebKit::WebWorker; 248 using WebKit::WebWorker;
241 using WebKit::WebWorkerClient; 249 using WebKit::WebWorkerClient;
242 using appcache::WebApplicationCacheHostImpl; 250 using appcache::WebApplicationCacheHostImpl;
243 using base::Time; 251 using base::Time;
244 using base::TimeDelta; 252 using base::TimeDelta;
245 using content::DocumentState; 253 using content::DocumentState;
254 using content::ProxyViewHost;
246 using content::NavigationState; 255 using content::NavigationState;
247 using content::RenderThread; 256 using content::RenderThread;
248 using content::RenderViewObserver; 257 using content::RenderViewObserver;
249 using content::RenderViewVisitor; 258 using content::RenderViewVisitor;
250 using content::Referrer; 259 using content::Referrer;
251 using content::V8ValueConverter; 260 using content::V8ValueConverter;
252 using webkit_glue::AltErrorPageResourceFetcher; 261 using webkit_glue::AltErrorPageResourceFetcher;
253 using webkit_glue::FormField; 262 using webkit_glue::FormField;
254 using webkit_glue::PasswordForm; 263 using webkit_glue::PasswordForm;
255 using webkit_glue::PasswordFormDomManager; 264 using webkit_glue::PasswordFormDomManager;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 cached_has_main_frame_vertical_scrollbar_(false), 364 cached_has_main_frame_vertical_scrollbar_(false),
356 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), 365 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)),
357 geolocation_dispatcher_(NULL), 366 geolocation_dispatcher_(NULL),
358 speech_input_dispatcher_(NULL), 367 speech_input_dispatcher_(NULL),
359 device_orientation_dispatcher_(NULL), 368 device_orientation_dispatcher_(NULL),
360 p2p_socket_dispatcher_(NULL), 369 p2p_socket_dispatcher_(NULL),
361 devtools_agent_(NULL), 370 devtools_agent_(NULL),
362 renderer_accessibility_(NULL), 371 renderer_accessibility_(NULL),
363 session_storage_namespace_id_(session_storage_namespace_id), 372 session_storage_namespace_id_(session_storage_namespace_id),
364 handling_select_range_(false), 373 handling_select_range_(false),
374 proxy_of_browsing_instance_frame_id_(-1),
365 #if defined(OS_WIN) 375 #if defined(OS_WIN)
366 focused_plugin_id_(-1), 376 focused_plugin_id_(-1),
367 #endif 377 #endif
368 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) { 378 ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) {
369 routing_id_ = routing_id; 379 routing_id_ = routing_id;
370 if (opener_id != MSG_ROUTING_NONE) 380 if (opener_id != MSG_ROUTING_NONE)
371 opener_id_ = opener_id; 381 opener_id_ = opener_id;
372 382
373 #if defined(ENABLE_NOTIFICATIONS) 383 #if defined(ENABLE_NOTIFICATIONS)
374 notification_provider_ = new NotificationProvider(this); 384 notification_provider_ = new NotificationProvider(this);
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 #endif 707 #endif
698 #if defined(OS_MACOSX) 708 #if defined(OS_MACOSX)
699 IPC_MESSAGE_HANDLER(ViewMsg_SetInLiveResize, OnSetInLiveResize) 709 IPC_MESSAGE_HANDLER(ViewMsg_SetInLiveResize, OnSetInLiveResize)
700 #endif 710 #endif
701 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, 711 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune,
702 OnSetHistoryLengthAndPrune) 712 OnSetHistoryLengthAndPrune)
703 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) 713 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode)
704 IPC_MESSAGE_HANDLER(ViewMsg_LockMouse_ACK, OnLockMouseACK) 714 IPC_MESSAGE_HANDLER(ViewMsg_LockMouse_ACK, OnLockMouseACK)
705 IPC_MESSAGE_HANDLER(ViewMsg_MouseLockLost, OnMouseLockLost) 715 IPC_MESSAGE_HANDLER(ViewMsg_MouseLockLost, OnMouseLockLost)
706 IPC_MESSAGE_HANDLER(JavaBridgeMsg_Init, OnJavaBridgeInit) 716 IPC_MESSAGE_HANDLER(JavaBridgeMsg_Init, OnJavaBridgeInit)
717 IPC_MESSAGE_HANDLER(ViewMsg_PostMessage, OnPostMessage)
718 IPC_MESSAGE_HANDLER(ViewMsg_SetOpenerProxy, OnSetOpenerProxy)
707 719
708 // Have the super handle all other messages. 720 // Have the super handle all other messages.
709 IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message)) 721 IPC_MESSAGE_UNHANDLED(handled = RenderWidget::OnMessageReceived(message))
710 IPC_END_MESSAGE_MAP() 722 IPC_END_MESSAGE_MAP()
711 723
712 if (!msg_is_ok) { 724 if (!msg_is_ok) {
713 // The message had a handler, but its deserialization failed. 725 // The message had a handler, but its deserialization failed.
714 // Kill the renderer to avoid potential spoofing attacks. 726 // Kill the renderer to avoid potential spoofing attacks.
715 CHECK(false) << "Unable to deserialize message in RenderViewImpl."; 727 CHECK(false) << "Unable to deserialize message in RenderViewImpl.";
716 } 728 }
717 729
718 return handled; 730 return handled;
719 } 731 }
720 732
721 void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) { 733 void RenderViewImpl::OnNavigate(const ViewMsg_Navigate_Params& params) {
722 if (!webview()) 734 if (!webview())
723 return; 735 return;
724 736
725 FOR_EACH_OBSERVER(RenderViewObserver, observers_, Navigate(params.url)); 737 FOR_EACH_OBSERVER(RenderViewObserver, observers_, Navigate(params.url));
726 738
727 bool is_reload = IsReload(params); 739 bool is_reload = IsReload(params);
728 740
729 // If this is a stale back/forward (due to a recent navigation the browser 741 // If this is a stale back/forward (due to a recent navigation the browser
730 // didn't know about), ignore it. 742 // didn't know about), ignore it.
731 if (IsBackForwardToStaleEntry(params, is_reload)) 743 if (IsBackForwardToStaleEntry(params, is_reload))
732 return; 744 return;
733 745
734 // Swap this renderer back in if necessary. 746 // Swap this renderer back in if necessary.
735 if (is_swapped_out_) 747 if (is_swapped_out_) {
736 SetSwappedOut(false); 748 SetSwappedOut(false);
749 proxy_of_browsing_instance_frame_id_ = -1;
750 }
737 751
738 history_list_offset_ = params.current_history_list_offset; 752 history_list_offset_ = params.current_history_list_offset;
739 history_list_length_ = params.current_history_list_length; 753 history_list_length_ = params.current_history_list_length;
740 if (history_list_length_ >= 0) 754 if (history_list_length_ >= 0)
741 history_page_ids_.resize(history_list_length_, -1); 755 history_page_ids_.resize(history_list_length_, -1);
742 if (params.pending_history_list_offset >= 0 && 756 if (params.pending_history_list_offset >= 0 &&
743 params.pending_history_list_offset < history_list_length_) 757 params.pending_history_list_offset < history_list_length_)
744 history_page_ids_[params.pending_history_list_offset] = params.page_id; 758 history_page_ids_[params.pending_history_list_offset] = params.page_id;
745 759
746 content::GetContentClient()->SetActiveURL(params.url); 760 content::GetContentClient()->SetActiveURL(params.url);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 805
792 if (!params.extra_headers.empty()) { 806 if (!params.extra_headers.empty()) {
793 for (net::HttpUtil::HeadersIterator i(params.extra_headers.begin(), 807 for (net::HttpUtil::HeadersIterator i(params.extra_headers.begin(),
794 params.extra_headers.end(), "\n"); 808 params.extra_headers.end(), "\n");
795 i.GetNext(); ) { 809 i.GetNext(); ) {
796 request.addHTTPHeaderField(WebString::fromUTF8(i.name()), 810 request.addHTTPHeaderField(WebString::fromUTF8(i.name()),
797 WebString::fromUTF8(i.values())); 811 WebString::fromUTF8(i.values()));
798 } 812 }
799 } 813 }
800 814
815 DLOG(WARNING) << "Navigating to " << params.url << " with opener = " <<
816 params.opener_browsing_instance_frame_id;
817
818 if (params.opener_browsing_instance_frame_id != -1) {
819 // If the user navigates back to this navigation entry, we don't want to
820 // recreate the opener proxy.
821 if (!main_frame->opener()) {
822 ProxyViewHost* proxy_view_host = new ProxyViewHost(
823 this, params.opener_browsing_instance_frame_id);
824 main_frame->setOpener(proxy_view_host->mainFrame());
825 }
826 }
801 main_frame->loadRequest(request); 827 main_frame->loadRequest(request);
802 } 828 }
803 829
804 // In case LoadRequest failed before DidCreateDataSource was called. 830 // In case LoadRequest failed before DidCreateDataSource was called.
805 pending_navigation_params_.reset(); 831 pending_navigation_params_.reset();
806 } 832 }
807 833
808 bool RenderViewImpl::IsBackForwardToStaleEntry( 834 bool RenderViewImpl::IsBackForwardToStaleEntry(
809 const ViewMsg_Navigate_Params& params, 835 const ViewMsg_Navigate_Params& params,
810 bool is_reload) { 836 bool is_reload) {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 } 968 }
943 969
944 void RenderViewImpl::OnPasteAndMatchStyle() { 970 void RenderViewImpl::OnPasteAndMatchStyle() {
945 if (!webview()) 971 if (!webview())
946 return; 972 return;
947 973
948 webview()->focusedFrame()->executeCommand( 974 webview()->focusedFrame()->executeCommand(
949 WebString::fromUTF8("PasteAndMatchStyle")); 975 WebString::fromUTF8("PasteAndMatchStyle"));
950 } 976 }
951 977
978 void RenderViewImpl::OnPostMessage(int64 frame_id,
979 const ViewMsg_PostMessage_Params& params) {
980 // TODO(supersat): support subframes
Charlie Reis 2011/12/12 22:20:36 What else do you need to support subframes?
supersat 2011/12/15 19:30:49 It depends on how we do subframes. If we put them
981 WebFrame *frame = webview()->mainFrame();
982
983 // We need to check whether we can send this message to the frame, since the
984 // asynchrony of postMessage means that the target frame's origin can change
985 // in the middle of a postMessage dispatch
986 WebSecurityOrigin messageSpecifiedOrigin =
987 WebSecurityOrigin::createFromString(WebString(params.targetOrigin));
988 if (!frame->document().securityOrigin().canReceiveMessagesFor(
989 &messageSpecifiedOrigin))
990 return;
991
992 WebDOMEvent event = frame->document().createEvent("MessageEvent");
993 WebDOMMessageEvent msgEvent = event.to<WebDOMMessageEvent>();
994
995 // TODO(supersat): fix the source frame parameter
996 msgEvent.initMessageEvent("message",
997 // canBubble and cancellable are always false
998 false, false,
999 WebSerializedScriptValue::fromString(params.data),
1000 params.sourceOrigin, 0 /* source frame */,
1001 "" /* last event id, not used with postmsg */);
1002
1003 DLOG(WARNING) << "Dispatching postMessage event";
1004 frame->dispatchEvent(msgEvent);
1005 }
1006
952 void RenderViewImpl::OnReplace(const string16& text) { 1007 void RenderViewImpl::OnReplace(const string16& text) {
953 if (!webview()) 1008 if (!webview())
954 return; 1009 return;
955 1010
956 WebFrame* frame = webview()->focusedFrame(); 1011 WebFrame* frame = webview()->focusedFrame();
957 if (!frame->hasSelection()) 1012 if (!frame->hasSelection())
958 frame->selectWordAroundCaret(); 1013 frame->selectWordAroundCaret();
959 frame->replaceSelection(text); 1014 frame->replaceSelection(text);
960 } 1015 }
961 1016
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1242 return; 1297 return;
1243 1298
1244 Send(new ViewHostMsg_UpdateState( 1299 Send(new ViewHostMsg_UpdateState(
1245 routing_id_, page_id_, webkit_glue::HistoryItemToString(item))); 1300 routing_id_, page_id_, webkit_glue::HistoryItemToString(item)));
1246 } 1301 }
1247 1302
1248 void RenderViewImpl::OpenURL(WebFrame* frame, 1303 void RenderViewImpl::OpenURL(WebFrame* frame,
1249 const GURL& url, 1304 const GURL& url,
1250 const Referrer& referrer, 1305 const Referrer& referrer,
1251 WebNavigationPolicy policy) { 1306 WebNavigationPolicy policy) {
1252 Send(new ViewHostMsg_OpenURL( 1307 long long opener_frame_id = -1;
1253 routing_id_, 1308 if (frame->opener()) {
1254 url, 1309 opener_frame_id = frame->opener()->identifier();
1255 referrer, 1310 }
1256 NavigationPolicyToDisposition(policy), 1311
1257 frame->identifier())); 1312 ViewHostMsg_OpenURL_Params params;
1313 params.url = url;
1314 params.referrer = referrer;
1315 params.disposition = NavigationPolicyToDisposition(policy);
1316 params.source_frame_id = frame->identifier();
1317 params.opener_frame_id = opener_frame_id;
1318
1319 Send(new ViewHostMsg_OpenURL(routing_id_, params));
1258 } 1320 }
1259 1321
1260 // WebViewDelegate ------------------------------------------------------------ 1322 // WebViewDelegate ------------------------------------------------------------
1261 1323
1262 void RenderViewImpl::LoadNavigationErrorPage( 1324 void RenderViewImpl::LoadNavigationErrorPage(
1263 WebFrame* frame, 1325 WebFrame* frame,
1264 const WebURLRequest& failed_request, 1326 const WebURLRequest& failed_request,
1265 const WebURLError& error, 1327 const WebURLError& error,
1266 const std::string& html, 1328 const std::string& html,
1267 bool replace) { 1329 bool replace) {
(...skipping 1825 matching lines...) Expand 10 before | Expand all | Expand 10 after
3093 void RenderViewImpl::registerIntentService( 3155 void RenderViewImpl::registerIntentService(
3094 WebKit::WebFrame* frame, const WebKit::WebIntentServiceInfo& service) { 3156 WebKit::WebFrame* frame, const WebKit::WebIntentServiceInfo& service) {
3095 Send(new IntentsHostMsg_RegisterIntentService(routing_id_, 3157 Send(new IntentsHostMsg_RegisterIntentService(routing_id_,
3096 service.action(), 3158 service.action(),
3097 service.type(), 3159 service.type(),
3098 service.url().spec().utf16(), 3160 service.url().spec().utf16(),
3099 service.title(), 3161 service.title(),
3100 service.disposition())); 3162 service.disposition()));
3101 } 3163 }
3102 3164
3165 bool RenderViewImpl::interceptPostMessage(int64 source_frame_id,
3166 WebKit::WebSecurityOrigin targetOrigin ,
3167 WebKit::WebDOMMessageEvent event) {
3168 DLOG(WARNING) << "interceptPostMessage called";
3169
3170 if (!is_swapped_out_)
3171 return false;
3172 DCHECK_NE(proxy_of_browsing_instance_frame_id_, -1);
3173
3174 ViewMsg_PostMessage_Params params;
3175 params.data = event.data().toString();
3176 params.sourceOrigin = event.origin();
3177 params.targetOrigin = targetOrigin.toString();
3178
3179 Send(new ViewHostMsg_SendPostMessage(
3180 proxy_of_browsing_instance_frame_id_, params));
3181 return true;
3182 }
3183
3103 void RenderViewImpl::dispatchIntent(WebKit::WebFrame* frame, 3184 void RenderViewImpl::dispatchIntent(WebKit::WebFrame* frame,
3104 const WebKit::WebIntent& intent) { 3185 const WebKit::WebIntent& intent) {
3105 webkit_glue::WebIntentData intent_data(intent); 3186 webkit_glue::WebIntentData intent_data(intent);
3106 Send(new IntentsHostMsg_WebIntentDispatch( 3187 Send(new IntentsHostMsg_WebIntentDispatch(
3107 routing_id_, intent_data, intent.identifier())); 3188 routing_id_, intent_data, intent.identifier()));
3108 } 3189 }
3109 3190
3110 // WebKit::WebPageSerializerClient implementation ------------------------------ 3191 // WebKit::WebPageSerializerClient implementation ------------------------------
3111 3192
3112 void RenderViewImpl::didSerializeDataForFrame( 3193 void RenderViewImpl::didSerializeDataForFrame(
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
3721 host_zoom_levels_[url] = zoom_level; 3802 host_zoom_levels_[url] = zoom_level;
3722 } 3803 }
3723 3804
3724 void RenderViewImpl::OnExitFullscreen() { 3805 void RenderViewImpl::OnExitFullscreen() {
3725 // TODO(darin): Remove this IPC once WebKit has been updated. 3806 // TODO(darin): Remove this IPC once WebKit has been updated.
3726 #ifndef WEBKIT_HAS_NEW_FULLSCREEN_API 3807 #ifndef WEBKIT_HAS_NEW_FULLSCREEN_API
3727 webview()->exitFullscreen(); 3808 webview()->exitFullscreen();
3728 #endif 3809 #endif
3729 } 3810 }
3730 3811
3812 void RenderViewImpl::OnSetOpenerProxy(const ViewMsg_SetOpenerProxy_Params& param s) {
3813 //webview()->mainFrame()->setOpener();
Charlie Reis 2011/12/12 22:20:36 What's the plan for this?
supersat 2011/12/15 19:30:49 Old cruft. It's gone.
3814 }
3815
3731 void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) { 3816 void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) {
3732 webview()->setPageEncoding(WebString::fromUTF8(encoding_name)); 3817 webview()->setPageEncoding(WebString::fromUTF8(encoding_name));
3733 } 3818 }
3734 3819
3735 void RenderViewImpl::OnResetPageEncodingToDefault() { 3820 void RenderViewImpl::OnResetPageEncodingToDefault() {
3736 WebString no_encoding; 3821 WebString no_encoding;
3737 webview()->setPageEncoding(no_encoding); 3822 webview()->setPageEncoding(no_encoding);
3738 } 3823 }
3739 3824
3740 WebFrame* RenderViewImpl::GetChildFrame(const string16& xpath) const { 3825 WebFrame* RenderViewImpl::GetChildFrame(const string16& xpath) const {
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
4018 4103
4019 // Send an UpdateState message before we get swapped out. 4104 // Send an UpdateState message before we get swapped out.
4020 SyncNavigationState(); 4105 SyncNavigationState();
4021 4106
4022 // Synchronously run the unload handler before sending the ACK. 4107 // Synchronously run the unload handler before sending the ACK.
4023 webview()->dispatchUnloadEvent(); 4108 webview()->dispatchUnloadEvent();
4024 4109
4025 // Swap out and stop sending any IPC messages that are not ACKs. 4110 // Swap out and stop sending any IPC messages that are not ACKs.
4026 SetSwappedOut(true); 4111 SetSwappedOut(true);
4027 4112
4028 // Replace the page with a blank dummy URL. The unload handler will not be 4113 // Replace the page with a blank dummy document. The unload handler will not be
4029 // run a second time, thanks to a check in FrameLoader::stopLoading. 4114 // run a second time, thanks to a check in FrameLoader::stopLoading.
4030 // TODO(creis): Need to add a better way to do this that avoids running the 4115 // TODO(creis): Need to add a better way to do this that avoids running the
4031 // beforeunload handler. For now, we just run it a second time silently. 4116 // beforeunload handler. For now, we just run it a second time silently.
4032 webview()->mainFrame()->loadHTMLString(std::string(), 4117
4033 GURL("about:swappedout"), 4118 WebFrame* frame = webview()->mainFrame();
4034 GURL("about:swappedout"), 4119 frame->loadHTMLString(std::string(), GURL("about:swappedout"),
4035 false); 4120 GURL("about:swappedout"), false);
Charlie Reis 2011/12/12 22:20:36 Looks like no change. Why reformat this?
supersat 2011/12/15 19:30:49 This line was changed at one point to use the new
4121
4122 proxy_of_browsing_instance_frame_id_ = params.browsing_instance_frame_id;
4036 4123
4037 // Just echo back the params in the ACK. 4124 // Just echo back the params in the ACK.
4038 Send(new ViewHostMsg_SwapOut_ACK(routing_id_, params)); 4125 Send(new ViewHostMsg_SwapOut_ACK(routing_id_, params));
4039 } 4126 }
4040 4127
4041 void RenderViewImpl::OnClosePage() { 4128 void RenderViewImpl::OnClosePage() {
4042 FOR_EACH_OBSERVER(RenderViewObserver, observers_, ClosePage()); 4129 FOR_EACH_OBSERVER(RenderViewObserver, observers_, ClosePage());
4043 // TODO(creis): We'd rather use webview()->Close() here, but that currently 4130 // TODO(creis): We'd rather use webview()->Close() here, but that currently
4044 // sets the WebView's delegate_ to NULL, preventing any JavaScript dialogs 4131 // sets the WebView's delegate_ to NULL, preventing any JavaScript dialogs
4045 // in the onunload handler from appearing. For now, we're bypassing that and 4132 // in the onunload handler from appearing. For now, we're bypassing that and
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
4788 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { 4875 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const {
4789 return !!RenderThreadImpl::current()->compositor_thread(); 4876 return !!RenderThreadImpl::current()->compositor_thread();
4790 } 4877 }
4791 4878
4792 void RenderViewImpl::OnJavaBridgeInit() { 4879 void RenderViewImpl::OnJavaBridgeInit() {
4793 DCHECK(!java_bridge_dispatcher_.get()); 4880 DCHECK(!java_bridge_dispatcher_.get());
4794 #if defined(ENABLE_JAVA_BRIDGE) 4881 #if defined(ENABLE_JAVA_BRIDGE)
4795 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); 4882 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this));
4796 #endif 4883 #endif
4797 } 4884 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698