OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_con
tainer.h" | 5 #include "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_con
tainer.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "content/public/child/v8_value_converter.h" | 10 #include "content/public/child/v8_value_converter.h" |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 element_size_ = new_size; | 170 element_size_ = new_size; |
171 render_frame()->Send(new GuestViewHostMsg_ResizeGuest( | 171 render_frame()->Send(new GuestViewHostMsg_ResizeGuest( |
172 render_frame()->GetRoutingID(), element_instance_id(), new_size)); | 172 render_frame()->GetRoutingID(), element_instance_id(), new_size)); |
173 } | 173 } |
174 | 174 |
175 v8::Local<v8::Object> MimeHandlerViewContainer::V8ScriptableObject( | 175 v8::Local<v8::Object> MimeHandlerViewContainer::V8ScriptableObject( |
176 v8::Isolate* isolate) { | 176 v8::Isolate* isolate) { |
177 if (scriptable_object_.IsEmpty()) { | 177 if (scriptable_object_.IsEmpty()) { |
178 v8::Local<v8::Object> object = | 178 v8::Local<v8::Object> object = |
179 ScriptableObject::Create(isolate, weak_factory_.GetWeakPtr()); | 179 ScriptableObject::Create(isolate, weak_factory_.GetWeakPtr()); |
180 scriptable_object_.reset(object); | 180 scriptable_object_.Reset(isolate, object); |
181 } | 181 } |
182 return scriptable_object_.NewHandle(isolate); | 182 return v8::Local<v8::Object>::New(isolate, scriptable_object_); |
183 } | 183 } |
184 | 184 |
185 void MimeHandlerViewContainer::didReceiveData(blink::WebURLLoader* /* unused */, | 185 void MimeHandlerViewContainer::didReceiveData(blink::WebURLLoader* /* unused */, |
186 const char* data, | 186 const char* data, |
187 int data_length, | 187 int data_length, |
188 int /* unused */) { | 188 int /* unused */) { |
189 view_id_ += std::string(data, data_length); | 189 view_id_ += std::string(data, data_length); |
190 } | 190 } |
191 | 191 |
192 void MimeHandlerViewContainer::didFinishLoading( | 192 void MimeHandlerViewContainer::didFinishLoading( |
193 blink::WebURLLoader* /* unused */, | 193 blink::WebURLLoader* /* unused */, |
194 double /* unused */, | 194 double /* unused */, |
195 int64_t /* unused */) { | 195 int64_t /* unused */) { |
196 DCHECK(is_embedded_); | 196 DCHECK(is_embedded_); |
197 CreateMimeHandlerViewGuest(); | 197 CreateMimeHandlerViewGuest(); |
198 } | 198 } |
199 | 199 |
200 void MimeHandlerViewContainer::PostMessage(v8::Isolate* isolate, | 200 void MimeHandlerViewContainer::PostMessage(v8::Isolate* isolate, |
201 v8::Handle<v8::Value> message) { | 201 v8::Handle<v8::Value> message) { |
202 if (!guest_loaded_) { | 202 if (!guest_loaded_) { |
203 linked_ptr<ScopedPersistent<v8::Value>> scoped_persistent( | 203 linked_ptr<v8::UniquePersistent<v8::Value>> scoped_persistent( |
204 new ScopedPersistent<v8::Value>(isolate, message)); | 204 new v8::UniquePersistent<v8::Value>(isolate, message)); |
205 pending_messages_.push_back(scoped_persistent); | 205 pending_messages_.push_back(scoped_persistent); |
206 return; | 206 return; |
207 } | 207 } |
208 | 208 |
209 content::RenderView* guest_proxy_render_view = | 209 content::RenderView* guest_proxy_render_view = |
210 content::RenderView::FromRoutingID(guest_proxy_routing_id_); | 210 content::RenderView::FromRoutingID(guest_proxy_routing_id_); |
211 if (!guest_proxy_render_view) | 211 if (!guest_proxy_render_view) |
212 return; | 212 return; |
213 blink::WebFrame* guest_proxy_frame = | 213 blink::WebFrame* guest_proxy_frame = |
214 guest_proxy_render_view->GetWebView()->mainFrame(); | 214 guest_proxy_render_view->GetWebView()->mainFrame(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 | 281 |
282 // Now that the guest has loaded, flush any unsent messages. | 282 // Now that the guest has loaded, flush any unsent messages. |
283 blink::WebFrame* frame = render_frame()->GetWebFrame(); | 283 blink::WebFrame* frame = render_frame()->GetWebFrame(); |
284 if (!frame) | 284 if (!frame) |
285 return; | 285 return; |
286 | 286 |
287 v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 287 v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
288 v8::HandleScope handle_scope(isolate); | 288 v8::HandleScope handle_scope(isolate); |
289 v8::Context::Scope context_scope(frame->mainWorldScriptContext()); | 289 v8::Context::Scope context_scope(frame->mainWorldScriptContext()); |
290 for (const auto& pending_message : pending_messages_) | 290 for (const auto& pending_message : pending_messages_) |
291 PostMessage(isolate, pending_message->NewHandle(isolate)); | 291 PostMessage(isolate, v8::Local<v8::Value>::New(isolate, *pending_message)); |
292 | 292 |
293 pending_messages_.clear(); | 293 pending_messages_.clear(); |
294 } | 294 } |
295 | 295 |
296 void MimeHandlerViewContainer::CreateMimeHandlerViewGuest() { | 296 void MimeHandlerViewContainer::CreateMimeHandlerViewGuest() { |
297 // The loader has completed loading |view_id_| so we can dispose it. | 297 // The loader has completed loading |view_id_| so we can dispose it. |
298 loader_.reset(); | 298 loader_.reset(); |
299 | 299 |
300 DCHECK_NE(element_instance_id(), guestview::kInstanceIDNone); | 300 DCHECK_NE(element_instance_id(), guestview::kInstanceIDNone); |
301 | 301 |
302 if (!render_frame()) | 302 if (!render_frame()) |
303 return; | 303 return; |
304 | 304 |
305 render_frame()->Send(new GuestViewHostMsg_CreateMimeHandlerViewGuest( | 305 render_frame()->Send(new GuestViewHostMsg_CreateMimeHandlerViewGuest( |
306 render_frame()->GetRoutingID(), view_id_, element_instance_id(), | 306 render_frame()->GetRoutingID(), view_id_, element_instance_id(), |
307 element_size_)); | 307 element_size_)); |
308 } | 308 } |
309 | 309 |
310 } // namespace extensions | 310 } // namespace extensions |
OLD | NEW |