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

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

Issue 2422793002: HTML MessagePort as mojo::MessagePipeHandle (Closed)
Patch Set: Eliminate unnecessary PostTask 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 "content/renderer/media/android/webmediaplayer_android.h" 242 #include "content/renderer/media/android/webmediaplayer_android.h"
244 #include "media/base/android/media_codec_util.h" 243 #include "media/base/android/media_codec_util.h"
245 #include "third_party/WebKit/public/platform/WebFloatPoint.h" 244 #include "third_party/WebKit/public/platform/WebFloatPoint.h"
246 #endif 245 #endif
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 // when |this| is deleted. 1248 // when |this| is deleted.
1250 devtools_agent_ = new DevToolsAgent(this); 1249 devtools_agent_ = new DevToolsAgent(this);
1251 } 1250 }
1252 1251
1253 RegisterMojoInterfaces(); 1252 RegisterMojoInterfaces();
1254 1253
1255 // We delay calling this until we have the WebFrame so that any observer or 1254 // We delay calling this until we have the WebFrame so that any observer or
1256 // embedder can call GetWebFrame on any RenderFrame. 1255 // embedder can call GetWebFrame on any RenderFrame.
1257 GetContentClient()->renderer()->RenderFrameCreated(this); 1256 GetContentClient()->renderer()->RenderFrameCreated(this);
1258 1257
1259 #if defined(OS_ANDROID)
1260 new AppWebMessagePortClient(this);
1261 #endif
1262
1263 RenderThreadImpl* render_thread = RenderThreadImpl::current(); 1258 RenderThreadImpl* render_thread = RenderThreadImpl::current();
1264 // render_thread may be NULL in tests. 1259 // render_thread may be NULL in tests.
1265 InputHandlerManager* input_handler_manager = 1260 InputHandlerManager* input_handler_manager =
1266 render_thread ? render_thread->input_handler_manager() : nullptr; 1261 render_thread ? render_thread->input_handler_manager() : nullptr;
1267 if (input_handler_manager) { 1262 if (input_handler_manager) {
1268 DCHECK(render_view_->HasAddedInputHandler()); 1263 DCHECK(render_view_->HasAddedInputHandler());
1269 input_handler_manager->RegisterRoutingID(GetRoutingID()); 1264 input_handler_manager->RegisterRoutingID(GetRoutingID());
1270 } 1265 }
1271 1266
1272 const base::CommandLine& command_line = 1267 const base::CommandLine& command_line =
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after
2206 WebFrame* source_frame = NULL; 2201 WebFrame* source_frame = NULL;
2207 if (params.source_routing_id != MSG_ROUTING_NONE) { 2202 if (params.source_routing_id != MSG_ROUTING_NONE) {
2208 RenderFrameProxy* source_proxy = 2203 RenderFrameProxy* source_proxy =
2209 RenderFrameProxy::FromRoutingID(params.source_routing_id); 2204 RenderFrameProxy::FromRoutingID(params.source_routing_id);
2210 if (source_proxy) 2205 if (source_proxy)
2211 source_frame = source_proxy->web_frame(); 2206 source_frame = source_proxy->web_frame();
2212 } 2207 }
2213 2208
2214 // If the message contained MessagePorts, create the corresponding endpoints. 2209 // If the message contained MessagePorts, create the corresponding endpoints.
2215 blink::WebMessagePortChannelArray channels = 2210 blink::WebMessagePortChannelArray channels =
2216 WebMessagePortChannelImpl::CreatePorts( 2211 WebMessagePortChannelImpl::CreateFromMessagePorts(params.message_ports);
2217 params.message_ports, params.new_routing_ids,
2218 base::ThreadTaskRunnerHandle::Get().get());
2219 2212
2220 WebSerializedScriptValue serialized_script_value; 2213 WebSerializedScriptValue serialized_script_value;
2221 if (params.is_data_raw_string) { 2214 if (params.is_data_raw_string) {
2222 v8::HandleScope handle_scope(blink::mainThreadIsolate()); 2215 v8::HandleScope handle_scope(blink::mainThreadIsolate());
2223 v8::Local<v8::Context> context = frame_->mainWorldScriptContext(); 2216 v8::Local<v8::Context> context = frame_->mainWorldScriptContext();
2224 v8::Context::Scope context_scope(context); 2217 v8::Context::Scope context_scope(context);
2225 V8ValueConverterImpl converter; 2218 V8ValueConverterImpl converter;
2226 converter.SetDateAllowed(true); 2219 converter.SetDateAllowed(true);
2227 converter.SetRegExpAllowed(true); 2220 converter.SetRegExpAllowed(true);
2228 std::unique_ptr<base::Value> value(new base::StringValue(params.data)); 2221 std::unique_ptr<base::Value> value(new base::StringValue(params.data));
2229 v8::Local<v8::Value> result_value = converter.ToV8Value(value.get(), 2222 v8::Local<v8::Value> result_value = converter.ToV8Value(value.get(),
2230 context); 2223 context);
2231 serialized_script_value = WebSerializedScriptValue::serialize(result_value); 2224 serialized_script_value = WebSerializedScriptValue::serialize(result_value);
2232 } else { 2225 } else {
2233 serialized_script_value = 2226 serialized_script_value =
2234 WebSerializedScriptValue::fromString(WebString::fromUTF16(params.data)); 2227 WebSerializedScriptValue::fromString(WebString::fromUTF16(params.data));
2235 } 2228 }
2236 2229
2237 // We must pass in the target_origin to do the security check on this side, 2230 // We must pass in the target_origin to do the security check on this side,
2238 // since it may have changed since the original postMessage call was made. 2231 // since it may have changed since the original postMessage call was made.
2239 WebSecurityOrigin target_origin; 2232 WebSecurityOrigin target_origin;
2240 if (!params.target_origin.empty()) { 2233 if (!params.target_origin.empty()) {
2241 target_origin = WebSecurityOrigin::createFromString( 2234 target_origin = WebSecurityOrigin::createFromString(
2242 WebString::fromUTF16(params.target_origin)); 2235 WebString::fromUTF16(params.target_origin));
2243 } 2236 }
2244 2237
2245 WebDOMMessageEvent msg_event(serialized_script_value, 2238 WebDOMMessageEvent msg_event(serialized_script_value,
2246 WebString::fromUTF16(params.source_origin), 2239 WebString::fromUTF16(params.source_origin),
2247 source_frame, frame_->document(), channels); 2240 source_frame,
2241 frame_->document(),
2242 std::move(channels));
2248 frame_->dispatchMessageEventWithOriginCheck(target_origin, msg_event); 2243 frame_->dispatchMessageEventWithOriginCheck(target_origin, msg_event);
2249 } 2244 }
2250 2245
2251 void RenderFrameImpl::OnReload(bool bypass_cache) { 2246 void RenderFrameImpl::OnReload(bool bypass_cache) {
2252 frame_->reload(bypass_cache ? WebFrameLoadType::ReloadBypassingCache 2247 frame_->reload(bypass_cache ? WebFrameLoadType::ReloadBypassingCache
2253 : WebFrameLoadType::ReloadMainResource); 2248 : WebFrameLoadType::ReloadMainResource);
2254 } 2249 }
2255 2250
2256 void RenderFrameImpl::OnReloadLoFiImages() { 2251 void RenderFrameImpl::OnReloadLoFiImages() {
2257 previews_state_ = PREVIEWS_NO_TRANSFORM; 2252 previews_state_ = PREVIEWS_NO_TRANSFORM;
(...skipping 4556 matching lines...) Expand 10 before | Expand all | Expand 10 after
6814 // event target. Potentially a Pepper plugin will receive the event. 6809 // event target. Potentially a Pepper plugin will receive the event.
6815 // In order to tell whether a plugin gets the last mouse event and which it 6810 // In order to tell whether a plugin gets the last mouse event and which it
6816 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6811 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6817 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6812 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6818 // |pepper_last_mouse_event_target_|. 6813 // |pepper_last_mouse_event_target_|.
6819 pepper_last_mouse_event_target_ = nullptr; 6814 pepper_last_mouse_event_target_ = nullptr;
6820 #endif 6815 #endif
6821 } 6816 }
6822 6817
6823 } // namespace content 6818 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698