| 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 |