Index: extensions/renderer/guest_view/extensions_guest_view_container.cc |
diff --git a/extensions/renderer/guest_view/extensions_guest_view_container.cc b/extensions/renderer/guest_view/extensions_guest_view_container.cc |
index f45303051b1958cbaee97e5f03a77144abbf9462..4802d876b168916c7d0a7fb79172b7e154322171 100644 |
--- a/extensions/renderer/guest_view/extensions_guest_view_container.cc |
+++ b/extensions/renderer/guest_view/extensions_guest_view_container.cc |
@@ -4,8 +4,11 @@ |
#include "extensions/renderer/guest_view/extensions_guest_view_container.h" |
+#include "base/command_line.h" |
+#include "content/public/common/content_switches.h" |
#include "content/public/renderer/render_frame.h" |
#include "content/public/renderer/render_view.h" |
+#include "extensions/common/guest_view/extensions_guest_view_messages.h" |
#include "extensions/common/guest_view/guest_view_constants.h" |
#include "extensions/common/guest_view/guest_view_messages.h" |
#include "third_party/WebKit/public/web/WebLocalFrame.h" |
@@ -59,6 +62,44 @@ void ExtensionsGuestViewContainer::Request::ExecuteCallbackIfAvailable( |
callback->Call(context->Global(), argc, argv.get()); |
} |
+ExtensionsGuestViewContainer::AttachIframeRequest::AttachIframeRequest( |
+ GuestViewContainer* container, |
+ int guest_instance_id, |
+ v8::Handle<v8::Function> callback, |
+ v8::Isolate* isolate) |
+ : Request(container, callback, isolate), |
+ guest_instance_id_(guest_instance_id) { |
+} |
+ |
+ExtensionsGuestViewContainer::AttachIframeRequest::~AttachIframeRequest() { |
+} |
+ |
+void ExtensionsGuestViewContainer::AttachIframeRequest::PerformRequest() { |
+ LOG(WARNING) << "AttachIframeRequest::PerformRequest, guest_instance_id: " |
+ << guest_instance_id_; |
+ // Only store callback. |
+ DCHECK(container()->render_frame()); |
+} |
+ |
+void ExtensionsGuestViewContainer::AttachIframeRequest::HandleResponse( |
+ const IPC::Message& message) { |
+ ExtensionsGuestViewMsg_ContentWindowReady::Param param; |
+ bool message_read_status = |
+ ExtensionsGuestViewMsg_ContentWindowReady::Read(&message, ¶m); |
+ DCHECK(message_read_status); |
+ |
+ // If we don't have a callback then there's nothing more to do. |
+ if (!HasCallback()) { |
+ LOG(WARNING) << "AttachIframeRequest, no callback, bail out"; |
+ return; |
+ } |
+ |
+ v8::HandleScope handle_scope(isolate()); |
+ const int argc = 0; |
+ scoped_ptr<v8::Handle<v8::Value>[]> argv(new v8::Handle<v8::Value>[argc]); |
+ ExecuteCallbackIfAvailable(argc, argv.Pass()); |
+} |
+ |
ExtensionsGuestViewContainer::AttachRequest::AttachRequest( |
GuestViewContainer* container, |
int guest_instance_id, |
@@ -139,6 +180,11 @@ ExtensionsGuestViewContainer::ExtensionsGuestViewContainer( |
destruction_isolate_(nullptr), |
element_resize_isolate_(nullptr), |
weak_ptr_factory_(this) { |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kSitePerProcess)) { |
+ // There is not BrowserPluginDelegate to wait for. |
+ ready_ = true; |
+ } |
} |
ExtensionsGuestViewContainer::~ExtensionsGuestViewContainer() { |