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

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

Issue 2422793002: HTML MessagePort as mojo::MessagePipeHandle (Closed)
Patch Set: Add comments about threading in message_port.h Created 3 years, 10 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 #include "content/renderer/pepper/plugin_module.h" 226 #include "content/renderer/pepper/plugin_module.h"
227 #endif 227 #endif
228 228
229 #if BUILDFLAG(ENABLE_WEBRTC) 229 #if BUILDFLAG(ENABLE_WEBRTC)
230 #include "content/renderer/media/rtc_peer_connection_handler.h" 230 #include "content/renderer/media/rtc_peer_connection_handler.h"
231 #endif 231 #endif
232 232
233 #if defined(OS_ANDROID) 233 #if defined(OS_ANDROID)
234 #include <cpu-features.h> 234 #include <cpu-features.h>
235 235
236 #include "content/renderer/android/app_web_message_port_client.h"
237 #include "content/renderer/java/gin_java_bridge_dispatcher.h" 236 #include "content/renderer/java/gin_java_bridge_dispatcher.h"
238 #include "content/renderer/media/android/media_player_renderer_client_factory.h" 237 #include "content/renderer/media/android/media_player_renderer_client_factory.h"
239 #include "content/renderer/media/android/renderer_media_player_manager.h" 238 #include "content/renderer/media/android/renderer_media_player_manager.h"
240 #include "content/renderer/media/android/renderer_surface_view_manager.h" 239 #include "content/renderer/media/android/renderer_surface_view_manager.h"
241 #include "content/renderer/media/android/stream_texture_factory.h" 240 #include "content/renderer/media/android/stream_texture_factory.h"
242 #include "content/renderer/media/android/stream_texture_wrapper_impl.h" 241 #include "content/renderer/media/android/stream_texture_wrapper_impl.h"
243 #include "media/base/android/media_codec_util.h" 242 #include "media/base/android/media_codec_util.h"
244 #include "third_party/WebKit/public/platform/WebFloatPoint.h" 243 #include "third_party/WebKit/public/platform/WebFloatPoint.h"
245 #endif 244 #endif
246 245
(...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 // when |this| is deleted. 1243 // when |this| is deleted.
1245 devtools_agent_ = new DevToolsAgent(this); 1244 devtools_agent_ = new DevToolsAgent(this);
1246 } 1245 }
1247 1246
1248 RegisterMojoInterfaces(); 1247 RegisterMojoInterfaces();
1249 1248
1250 // We delay calling this until we have the WebFrame so that any observer or 1249 // We delay calling this until we have the WebFrame so that any observer or
1251 // embedder can call GetWebFrame on any RenderFrame. 1250 // embedder can call GetWebFrame on any RenderFrame.
1252 GetContentClient()->renderer()->RenderFrameCreated(this); 1251 GetContentClient()->renderer()->RenderFrameCreated(this);
1253 1252
1254 #if defined(OS_ANDROID)
1255 new AppWebMessagePortClient(this);
1256 #endif
1257
1258 RenderThreadImpl* render_thread = RenderThreadImpl::current(); 1253 RenderThreadImpl* render_thread = RenderThreadImpl::current();
1259 // render_thread may be NULL in tests. 1254 // render_thread may be NULL in tests.
1260 InputHandlerManager* input_handler_manager = 1255 InputHandlerManager* input_handler_manager =
1261 render_thread ? render_thread->input_handler_manager() : nullptr; 1256 render_thread ? render_thread->input_handler_manager() : nullptr;
1262 if (input_handler_manager) { 1257 if (input_handler_manager) {
1263 DCHECK(render_view_->HasAddedInputHandler()); 1258 DCHECK(render_view_->HasAddedInputHandler());
1264 input_handler_manager->RegisterRoutingID(GetRoutingID()); 1259 input_handler_manager->RegisterRoutingID(GetRoutingID());
1265 } 1260 }
1266 1261
1267 const base::CommandLine& command_line = 1262 const base::CommandLine& command_line =
(...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after
2211 WebFrame* source_frame = NULL; 2206 WebFrame* source_frame = NULL;
2212 if (params.source_routing_id != MSG_ROUTING_NONE) { 2207 if (params.source_routing_id != MSG_ROUTING_NONE) {
2213 RenderFrameProxy* source_proxy = 2208 RenderFrameProxy* source_proxy =
2214 RenderFrameProxy::FromRoutingID(params.source_routing_id); 2209 RenderFrameProxy::FromRoutingID(params.source_routing_id);
2215 if (source_proxy) 2210 if (source_proxy)
2216 source_frame = source_proxy->web_frame(); 2211 source_frame = source_proxy->web_frame();
2217 } 2212 }
2218 2213
2219 // If the message contained MessagePorts, create the corresponding endpoints. 2214 // If the message contained MessagePorts, create the corresponding endpoints.
2220 blink::WebMessagePortChannelArray channels = 2215 blink::WebMessagePortChannelArray channels =
2221 WebMessagePortChannelImpl::CreatePorts( 2216 WebMessagePortChannelImpl::CreateFromMessagePorts(params.message_ports);
2222 params.message_ports, params.new_routing_ids,
2223 base::ThreadTaskRunnerHandle::Get().get());
2224 2217
2225 WebSerializedScriptValue serialized_script_value; 2218 WebSerializedScriptValue serialized_script_value;
2226 if (params.is_data_raw_string) { 2219 if (params.is_data_raw_string) {
2227 v8::HandleScope handle_scope(blink::mainThreadIsolate()); 2220 v8::HandleScope handle_scope(blink::mainThreadIsolate());
2228 v8::Local<v8::Context> context = frame_->mainWorldScriptContext(); 2221 v8::Local<v8::Context> context = frame_->mainWorldScriptContext();
2229 v8::Context::Scope context_scope(context); 2222 v8::Context::Scope context_scope(context);
2230 V8ValueConverterImpl converter; 2223 V8ValueConverterImpl converter;
2231 converter.SetDateAllowed(true); 2224 converter.SetDateAllowed(true);
2232 converter.SetRegExpAllowed(true); 2225 converter.SetRegExpAllowed(true);
2233 std::unique_ptr<base::Value> value(new base::StringValue(params.data)); 2226 std::unique_ptr<base::Value> value(new base::StringValue(params.data));
2234 v8::Local<v8::Value> result_value = converter.ToV8Value(value.get(), 2227 v8::Local<v8::Value> result_value = converter.ToV8Value(value.get(),
2235 context); 2228 context);
2236 serialized_script_value = WebSerializedScriptValue::serialize(result_value); 2229 serialized_script_value = WebSerializedScriptValue::serialize(result_value);
2237 } else { 2230 } else {
2238 serialized_script_value = 2231 serialized_script_value =
2239 WebSerializedScriptValue::fromString(WebString::fromUTF16(params.data)); 2232 WebSerializedScriptValue::fromString(WebString::fromUTF16(params.data));
2240 } 2233 }
2241 2234
2242 // We must pass in the target_origin to do the security check on this side, 2235 // We must pass in the target_origin to do the security check on this side,
2243 // since it may have changed since the original postMessage call was made. 2236 // since it may have changed since the original postMessage call was made.
2244 WebSecurityOrigin target_origin; 2237 WebSecurityOrigin target_origin;
2245 if (!params.target_origin.empty()) { 2238 if (!params.target_origin.empty()) {
2246 target_origin = WebSecurityOrigin::createFromString( 2239 target_origin = WebSecurityOrigin::createFromString(
2247 WebString::fromUTF16(params.target_origin)); 2240 WebString::fromUTF16(params.target_origin));
2248 } 2241 }
2249 2242
2250 WebDOMMessageEvent msg_event(serialized_script_value, 2243 WebDOMMessageEvent msg_event(serialized_script_value,
2251 WebString::fromUTF16(params.source_origin), 2244 WebString::fromUTF16(params.source_origin),
2252 source_frame, frame_->document(), channels); 2245 source_frame,
2246 frame_->document(),
2247 std::move(channels));
2253 frame_->dispatchMessageEventWithOriginCheck(target_origin, msg_event); 2248 frame_->dispatchMessageEventWithOriginCheck(target_origin, msg_event);
2254 } 2249 }
2255 2250
2256 void RenderFrameImpl::OnReload(bool bypass_cache) { 2251 void RenderFrameImpl::OnReload(bool bypass_cache) {
2257 frame_->reload(bypass_cache ? WebFrameLoadType::ReloadBypassingCache 2252 frame_->reload(bypass_cache ? WebFrameLoadType::ReloadBypassingCache
2258 : WebFrameLoadType::ReloadMainResource); 2253 : WebFrameLoadType::ReloadMainResource);
2259 } 2254 }
2260 2255
2261 void RenderFrameImpl::OnReloadLoFiImages() { 2256 void RenderFrameImpl::OnReloadLoFiImages() {
2262 previews_state_ = PREVIEWS_NO_TRANSFORM; 2257 previews_state_ = PREVIEWS_NO_TRANSFORM;
(...skipping 4575 matching lines...) Expand 10 before | Expand all | Expand 10 after
6838 // event target. Potentially a Pepper plugin will receive the event. 6833 // event target. Potentially a Pepper plugin will receive the event.
6839 // In order to tell whether a plugin gets the last mouse event and which it 6834 // In order to tell whether a plugin gets the last mouse event and which it
6840 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6835 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6841 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6836 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6842 // |pepper_last_mouse_event_target_|. 6837 // |pepper_last_mouse_event_target_|.
6843 pepper_last_mouse_event_target_ = nullptr; 6838 pepper_last_mouse_event_target_ = nullptr;
6844 #endif 6839 #endif
6845 } 6840 }
6846 6841
6847 } // namespace content 6842 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698